Commit e04641767 for imagemagick.org
commit e046417675d5c26e5f48816851a406c121c77469
Author: Cristy <urban-warrior@imagemagick.org>
Date: Sun Feb 15 22:26:57 2026 -0500
https://github.com/ImageMagick/ImageMagick/issues/8567
diff --git a/MagickCore/cache.c b/MagickCore/cache.c
index 7b8bec2fe..6f5c44152 100644
--- a/MagickCore/cache.c
+++ b/MagickCore/cache.c
@@ -3264,8 +3264,7 @@ MagickExport const Quantum *GetVirtualPixelQueue(const Image *image)
assert(image->cache != (Cache) NULL);
cache_info=(CacheInfo *) image->cache;
assert(cache_info->signature == MagickCoreSignature);
- if (cache_info->methods.get_virtual_pixels_handler !=
- (GetVirtualPixelsHandler) NULL)
+ if (cache_info->methods.get_virtual_pixels_handler != (GetVirtualPixelsHandler) NULL)
return(cache_info->methods.get_virtual_pixels_handler(image));
assert(id < (int) cache_info->number_threads);
return(GetVirtualPixelsNexus(cache_info,cache_info->nexus_info[id]));
diff --git a/MagickCore/log.c b/MagickCore/log.c
index f18fd90df..bf0e8b69f 100644
--- a/MagickCore/log.c
+++ b/MagickCore/log.c
@@ -369,8 +369,10 @@ MagickExport void CloseMagickLog(void)
exception=AcquireExceptionInfo();
log_info=GetLogInfo("*",exception);
exception=DestroyExceptionInfo(exception);
+ if (log_info == (LogInfo *) NULL)
+ return;
LockSemaphoreInfo(log_semaphore);
- if (log_info->file != (FILE *) NULL)
+ if ((log_info != (LogInfo *) NULL) && (log_info->file != (FILE *) NULL))
{
(void) FormatLocaleFile(log_info->file,"</log>\n");
(void) fclose(log_info->file);
@@ -1361,10 +1363,12 @@ static char *TranslateEvent(const char *module,const char *function,
exception=AcquireExceptionInfo();
log_info=GetLogInfo("*",exception);
exception=DestroyExceptionInfo(exception);
+ text=AcquireString(event);
+ if (log_info == (LogInfo *) NULL)
+ return(text);
seconds=GetMagickTime();
elapsed_time=GetElapsedTime(&log_info->timer);
user_time=GetUserTime(&log_info->timer);
- text=AcquireString(event);
if (log_info->format == (char *) NULL)
return(text);
extent=strlen(event)+MagickPathExtent;
@@ -1573,6 +1577,8 @@ MagickExport MagickBooleanType LogMagickEventList(const LogEventType type,
exception=AcquireExceptionInfo();
log_info=(LogInfo *) GetLogInfo("*",exception);
exception=DestroyExceptionInfo(exception);
+ if (log_info == (LogInfo *) NULL)
+ return(MagickFalse);
if (log_info->event_semaphore == (SemaphoreInfo *) NULL)
ActivateSemaphoreInfo(&log_info->event_semaphore);
LockSemaphoreInfo(log_info->event_semaphore);
@@ -1903,6 +1909,8 @@ MagickExport void SetLogMethod(MagickLogMethod method)
exception=AcquireExceptionInfo();
log_info=(LogInfo *) GetLogInfo("*",exception);
exception=DestroyExceptionInfo(exception);
+ if (log_info == (LogInfo *) NULL)
+ return;
LockSemaphoreInfo(log_semaphore);
log_info=(LogInfo *) GetValueFromLinkedList(log_cache,0);
log_info->handler_mask=(LogHandlerType) (log_info->handler_mask |
diff --git a/MagickCore/quantum-export.c b/MagickCore/quantum-export.c
index b16f34f35..f0839981f 100644
--- a/MagickCore/quantum-export.c
+++ b/MagickCore/quantum-export.c
@@ -1360,10 +1360,14 @@ static void ExportCMYKQuantum(const Image *image,QuantumInfo *quantum_info,
{
for (x=0; x < (ssize_t) number_pixels; x++)
{
- q=PopQuantumFloatPixel(quantum_info,(float) GetPixelRed(image,p),q);
- q=PopQuantumFloatPixel(quantum_info,(float) GetPixelGreen(image,p),q);
- q=PopQuantumFloatPixel(quantum_info,(float) GetPixelBlue(image,p),q);
- q=PopQuantumFloatPixel(quantum_info,(float) GetPixelBlack(image,p),q);
+ q=PopQuantumFloatPixel(quantum_info,(float) GetPixelRed(image,p),
+ q);
+ q=PopQuantumFloatPixel(quantum_info,(float) GetPixelGreen(image,p),
+ q);
+ q=PopQuantumFloatPixel(quantum_info,(float) GetPixelBlue(image,p),
+ q);
+ q=PopQuantumFloatPixel(quantum_info,(float) GetPixelBlack(image,p),
+ q);
p+=(ptrdiff_t) GetPixelChannels(image);
q+=(ptrdiff_t) quantum_info->pad;
}
@@ -1390,10 +1394,14 @@ static void ExportCMYKQuantum(const Image *image,QuantumInfo *quantum_info,
{
for (x=0; x < (ssize_t) number_pixels; x++)
{
- q=PopQuantumDoublePixel(quantum_info,(double) GetPixelRed(image,p),q);
- q=PopQuantumDoublePixel(quantum_info,(double) GetPixelGreen(image,p),q);
- q=PopQuantumDoublePixel(quantum_info,(double) GetPixelBlue(image,p),q);
- q=PopQuantumDoublePixel(quantum_info,(double) GetPixelBlack(image,p),q);
+ q=PopQuantumDoublePixel(quantum_info,(double)
+ GetPixelRed(image,p),q);
+ q=PopQuantumDoublePixel(quantum_info,(double)
+ GetPixelGreen(image,p),q);
+ q=PopQuantumDoublePixel(quantum_info,(double)
+ GetPixelBlue(image,p),q);
+ q=PopQuantumDoublePixel(quantum_info,(double)
+ GetPixelBlack(image,p),q);
p+=(ptrdiff_t) GetPixelChannels(image);
q+=(ptrdiff_t) quantum_info->pad;
}
@@ -1694,9 +1702,12 @@ static void ExportCMYKOQuantum(const Image *image,QuantumInfo *quantum_info,
float_pixel;
q=PopQuantumFloatPixel(quantum_info,(float) GetPixelRed(image,p),q);
- q=PopQuantumFloatPixel(quantum_info,(float) GetPixelGreen(image,p),q);
- q=PopQuantumFloatPixel(quantum_info,(float) GetPixelBlue(image,p),q);
- q=PopQuantumFloatPixel(quantum_info,(float) GetPixelBlack(image,p),q);
+ q=PopQuantumFloatPixel(quantum_info,(float) GetPixelGreen(image,p),
+ q);
+ q=PopQuantumFloatPixel(quantum_info,(float) GetPixelBlue(image,p),
+ q);
+ q=PopQuantumFloatPixel(quantum_info,(float) GetPixelBlack(image,p),
+ q);
float_pixel=(float) (GetPixelOpacity(image,p));
q=PopQuantumFloatPixel(quantum_info,float_pixel,q);
p+=(ptrdiff_t) GetPixelChannels(image);
@@ -1730,10 +1741,14 @@ static void ExportCMYKOQuantum(const Image *image,QuantumInfo *quantum_info,
for (x=0; x < (ssize_t) number_pixels; x++)
{
- q=PopQuantumDoublePixel(quantum_info,(double) GetPixelRed(image,p),q);
- q=PopQuantumDoublePixel(quantum_info,(double) GetPixelGreen(image,p),q);
- q=PopQuantumDoublePixel(quantum_info,(double) GetPixelBlue(image,p),q);
- q=PopQuantumDoublePixel(quantum_info,(double) GetPixelBlack(image,p),q);
+ q=PopQuantumDoublePixel(quantum_info,(double)
+ GetPixelRed(image,p),q);
+ q=PopQuantumDoublePixel(quantum_info,(double)
+ GetPixelGreen(image,p),q);
+ q=PopQuantumDoublePixel(quantum_info,(double)
+ GetPixelBlue(image,p),q);
+ q=PopQuantumDoublePixel(quantum_info,(double)
+ GetPixelBlack(image,p),q);
pixel=(double) (GetPixelOpacity(image,p));
q=PopQuantumDoublePixel(quantum_info,pixel,q);
p+=(ptrdiff_t) GetPixelChannels(image);
@@ -1759,8 +1774,8 @@ static void ExportCMYKOQuantum(const Image *image,QuantumInfo *quantum_info,
range),q);
q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelBlack(image,p),
range),q);
- q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelOpacity(image,p),
- range),q);
+ q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(
+ GetPixelOpacity(image,p),range),q);
p+=(ptrdiff_t) GetPixelChannels(image);
q+=(ptrdiff_t) quantum_info->pad;
}
@@ -3654,12 +3669,12 @@ MagickExport size_t ExportQuantumPixels(const Image *image,
const QuantumType quantum_type,unsigned char *magick_restrict pixels,
ExceptionInfo *exception)
{
- MagickSizeType
- number_pixels;
-
const Quantum
*magick_restrict p;
+ MagickSizeType
+ number_pixels;
+
size_t
extent;
@@ -3689,6 +3704,8 @@ MagickExport size_t ExportQuantumPixels(const Image *image,
number_pixels=GetCacheViewExtent(image_view);
p=GetCacheViewVirtualPixelQueue(image_view);
}
+ if (p == (Quantum *) NULL)
+ return(0);
if (quantum_info->alpha_type == AssociatedQuantumAlpha)
{
double
@@ -3815,7 +3832,8 @@ MagickExport size_t ExportQuantumPixels(const Image *image,
case GreenQuantum:
case MagentaQuantum:
{
- ExportPixelChannel(image,quantum_info,number_pixels,p,q,GreenPixelChannel);
+ ExportPixelChannel(image,quantum_info,number_pixels,p,q,
+ GreenPixelChannel);
break;
}
case IndexQuantum:
diff --git a/MagickCore/quantum-import.c b/MagickCore/quantum-import.c
index 18b32ef48..77307a9dd 100644
--- a/MagickCore/quantum-import.c
+++ b/MagickCore/quantum-import.c
@@ -4311,12 +4311,12 @@ MagickExport size_t ImportQuantumPixels(const Image *image,
const QuantumType quantum_type,const unsigned char *magick_restrict pixels,
ExceptionInfo *exception)
{
- MagickSizeType
- number_pixels;
-
const unsigned char
*magick_restrict p;
+ MagickSizeType
+ number_pixels;
+
ssize_t
x;
@@ -4348,6 +4348,8 @@ MagickExport size_t ImportQuantumPixels(const Image *image,
number_pixels=GetCacheViewExtent(image_view);
q=GetCacheViewAuthenticPixelQueue(image_view);
}
+ if (q == (Quantum *) NULL)
+ return(0);
ResetQuantumState(quantum_info);
extent=GetQuantumExtent(image,quantum_info,quantum_type);
switch (quantum_type)
diff --git a/MagickCore/transform.c b/MagickCore/transform.c
index b6cf71a81..4347c59f7 100644
--- a/MagickCore/transform.c
+++ b/MagickCore/transform.c
@@ -2076,11 +2076,13 @@ MagickPrivate MagickBooleanType TransformImage(Image **image,
}
*image=transform_image;
}
- if (image_geometry == (const char *) NULL)
- return(MagickTrue);
+ if (transform_image == (Image *) NULL)
+ return(MagickFalse);
/*
Scale image to a user specified size.
*/
+ if (image_geometry == (const char *) NULL)
+ return(MagickTrue);
(void) ParseRegionGeometry(transform_image,image_geometry,&geometry,
exception);
if ((transform_image->columns == geometry.width) &&
diff --git a/MagickCore/xml-tree.c b/MagickCore/xml-tree.c
index f977399a6..12df2b215 100644
--- a/MagickCore/xml-tree.c
+++ b/MagickCore/xml-tree.c
@@ -2273,9 +2273,7 @@ MagickExport XMLTreeInfo *NewXMLTreeTag(const char *tag)
XMLTreeRoot
*root;
- root=(XMLTreeRoot *) AcquireMagickMemory(sizeof(*root));
- if (root == (XMLTreeRoot *) NULL)
- return((XMLTreeInfo *) NULL);
+ root=(XMLTreeRoot *) AcquireCriticalMemory(sizeof(*root));
(void) memset(root,0,sizeof(*root));
root->root.tag=(char *) NULL;
if (tag != (char *) NULL)