From fd4b0609efbbc5d2135c1169fda2567bc6c90899 Mon Sep 17 00:00:00 2001 From: Christoph Gohlke Date: Sat, 19 Dec 2020 15:58:25 -0800 Subject: [PATCH 1/4] Fix dereferencing of potential null pointers --- src/libImaging/Histo.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/libImaging/Histo.c b/src/libImaging/Histo.c index 050c2840f46..66d696a2a59 100644 --- a/src/libImaging/Histo.c +++ b/src/libImaging/Histo.c @@ -29,10 +29,12 @@ void ImagingHistogramDelete(ImagingHistogram h) { - if (h->histogram) { - free(h->histogram); + if (h) { + if (h->histogram) { + free(h->histogram); + } + free(h); } - free(h); } ImagingHistogram @@ -42,11 +44,18 @@ ImagingHistogramNew(Imaging im) /* Create histogram descriptor */ h = calloc(1, sizeof(struct ImagingHistogramInstance)); + if (h == NULL) { + return NULL; + } strncpy(h->mode, im->mode, IMAGING_MODE_LENGTH-1); h->mode[IMAGING_MODE_LENGTH-1] = 0; h->bands = im->bands; h->histogram = calloc(im->pixelsize, 256 * sizeof(long)); + if (h->histogram == NULL) { + free(h); + return NULL; + } return h; } @@ -75,6 +84,9 @@ ImagingGetHistogram(Imaging im, Imaging imMask, void* minmax) } h = ImagingHistogramNew(im); + if (h == NULL) { + return NULL; + } if (imMask) { /* mask */ From 15dd7aef9f0e585d8cbcb36c4ff42cf7d996d529 Mon Sep 17 00:00:00 2001 From: Christoph Gohlke Date: Sat, 19 Dec 2020 19:35:21 -0800 Subject: [PATCH 2/4] Return ImagingError_MemoryError --- src/libImaging/Histo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libImaging/Histo.c b/src/libImaging/Histo.c index 66d696a2a59..5ef72e6d36e 100644 --- a/src/libImaging/Histo.c +++ b/src/libImaging/Histo.c @@ -54,7 +54,7 @@ ImagingHistogramNew(Imaging im) h->histogram = calloc(im->pixelsize, 256 * sizeof(long)); if (h->histogram == NULL) { free(h); - return NULL; + return (ImagingHistogram) ImagingError_MemoryError(); } return h; From fd14616dbbe12f477bcd695552659aad949b56eb Mon Sep 17 00:00:00 2001 From: Christoph Gohlke Date: Sat, 19 Dec 2020 19:37:05 -0800 Subject: [PATCH 3/4] Return ImagingError_MemoryError --- src/libImaging/Histo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libImaging/Histo.c b/src/libImaging/Histo.c index 5ef72e6d36e..923fa28d585 100644 --- a/src/libImaging/Histo.c +++ b/src/libImaging/Histo.c @@ -45,7 +45,7 @@ ImagingHistogramNew(Imaging im) /* Create histogram descriptor */ h = calloc(1, sizeof(struct ImagingHistogramInstance)); if (h == NULL) { - return NULL; + return (ImagingHistogram) ImagingError_MemoryError(); } strncpy(h->mode, im->mode, IMAGING_MODE_LENGTH-1); h->mode[IMAGING_MODE_LENGTH-1] = 0; From 51b813792493818202645f6b064551f15a17610c Mon Sep 17 00:00:00 2001 From: Andrew Murray <3112309+radarhere@users.noreply.github.com> Date: Sat, 26 Dec 2020 21:49:40 +1100 Subject: [PATCH 4/4] Changed style for consistency --- src/libImaging/Histo.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libImaging/Histo.c b/src/libImaging/Histo.c index 923fa28d585..512e57a9842 100644 --- a/src/libImaging/Histo.c +++ b/src/libImaging/Histo.c @@ -44,7 +44,7 @@ ImagingHistogramNew(Imaging im) /* Create histogram descriptor */ h = calloc(1, sizeof(struct ImagingHistogramInstance)); - if (h == NULL) { + if (!h) { return (ImagingHistogram) ImagingError_MemoryError(); } strncpy(h->mode, im->mode, IMAGING_MODE_LENGTH-1); @@ -52,7 +52,7 @@ ImagingHistogramNew(Imaging im) h->bands = im->bands; h->histogram = calloc(im->pixelsize, 256 * sizeof(long)); - if (h->histogram == NULL) { + if (!h->histogram) { free(h); return (ImagingHistogram) ImagingError_MemoryError(); } @@ -84,7 +84,7 @@ ImagingGetHistogram(Imaging im, Imaging imMask, void* minmax) } h = ImagingHistogramNew(im); - if (h == NULL) { + if (!h) { return NULL; }