Commit aefd5a250 for imagemagick.org

commit aefd5a250f6df126ab65659e2c4c2467b990e8a8
Author: Cristy <urban-warrior@imagemagick.org>
Date:   Sun Nov 15 12:32:41 2026 -0500

    exit gracefully if the forward or inverse plan fail

diff --git a/MagickCore/fourier.c b/MagickCore/fourier.c
index 47aa2b1d5..2f3c6eea8 100644
--- a/MagickCore/fourier.c
+++ b/MagickCore/fourier.c
@@ -801,6 +801,14 @@ static MagickBooleanType ForwardFourierTransform(FourierInfo *fourier_info,
 #endif
   fftw_r2c_plan=fftw_plan_dft_r2c_2d((int) fourier_info->width,
     (int) fourier_info->height,source_pixels,forward_pixels,FFTW_ESTIMATE);
+  if (fftw_r2c_plan == (fftw_plan) NULL)
+    {
+      forward_info=RelinquishVirtualMemory(forward_info);
+      source_info=RelinquishVirtualMemory(source_info);
+      (void) ThrowMagickException(exception,GetMagickModule(),
+        ResourceLimitError,"MemoryAllocationFailed","`%s'",image->filename);
+      return(MagickFalse);
+    }
   fftw_execute_dft_r2c(fftw_r2c_plan,source_pixels,forward_pixels);
   fftw_destroy_plan(fftw_r2c_plan);
   source_info=(MemoryInfo *) RelinquishVirtualMemory(source_info);
@@ -891,7 +899,7 @@ static MagickBooleanType ForwardFourierTransformChannel(const Image *image,
     {
       if (phase_info != (MemoryInfo *) NULL)
         phase_info=RelinquishVirtualMemory(phase_info);
-      if (magnitude_info == (MemoryInfo *) NULL)
+      if (magnitude_info != (MemoryInfo *) NULL)
         magnitude_info=RelinquishVirtualMemory(magnitude_info);
       (void) ThrowMagickException(exception,GetMagickModule(),
         ResourceLimitError,"MemoryAllocationFailed","`%s'",image->filename);
@@ -1362,7 +1370,7 @@ static MagickBooleanType InverseFourierTransform(FourierInfo *fourier_info,
     }
   source_pixels=(double *) GetVirtualMemoryBlob(source_info);
   value=GetImageArtifact(image,"fourier:normalize");
-  if (LocaleCompare(value,"inverse") == 0)
+  if ((value != (const char *) NULL) && (LocaleCompare(value,"inverse") == 0))
     {
       double
         gamma;
@@ -1390,6 +1398,13 @@ static MagickBooleanType InverseFourierTransform(FourierInfo *fourier_info,
 #endif
   fftw_c2r_plan=fftw_plan_dft_c2r_2d((int) fourier_info->width,
     (int) fourier_info->height,fourier_pixels,source_pixels,FFTW_ESTIMATE);
+  if (fftw_c2r_plan == (fftw_plan) NULL)
+    {
+      source_info=RelinquishVirtualMemory(source_info);
+      (void) ThrowMagickException(exception,GetMagickModule(),
+        ResourceLimitError,"MemoryAllocationFailed","`%s'",image->filename);
+      return(MagickFalse);
+    }
   fftw_execute_dft_c2r(fftw_c2r_plan,fourier_pixels,source_pixels);
   fftw_destroy_plan(fftw_c2r_plan);
   i=0L;