From 147f835146331e249bb330a6dd57681fe7eb5f2a Mon Sep 17 00:00:00 2001 From: Kathryn Davies <19580275+kathryndavies@users.noreply.github.com> Date: Fri, 30 Mar 2018 15:42:56 -0700 Subject: [PATCH 1/2] Fix a resource leak: close fp before return (found by cppcheck) --- src/libImaging/File.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libImaging/File.c b/src/libImaging/File.c index d67bcabde94..d75f19d5d63 100644 --- a/src/libImaging/File.c +++ b/src/libImaging/File.c @@ -71,6 +71,7 @@ ImagingSavePPM(Imaging im, const char* outfile) fprintf(fp, "P6\n%d %d\n255\n", im->xsize, im->ysize); } else { (void) ImagingError_ModeError(); + fclose(fp); return 0; } From 8f6be2ee7d3772e705f32beafd07eef1bf5b909d Mon Sep 17 00:00:00 2001 From: Kathryn Davies <19580275+kathryndavies@users.noreply.github.com> Date: Sat, 31 Mar 2018 21:28:37 -0700 Subject: [PATCH 2/2] Move location of fclose and add dump test. --- Tests/test_image.py | 12 +++++++++--- src/libImaging/File.c | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Tests/test_image.py b/Tests/test_image.py index 6f6d1983e39..f64ea241b8d 100644 --- a/Tests/test_image.py +++ b/Tests/test_image.py @@ -112,7 +112,6 @@ def test_unknown_extension(self): self.assertRaises(ValueError, im.save, temp_file) def test_internals(self): - im = Image.new("L", (100, 100)) im.readonly = 1 im._copy() @@ -122,8 +121,15 @@ def test_internals(self): im.paste(0, (0, 0, 100, 100)) self.assertFalse(im.readonly) - test_file = self.tempfile("temp.ppm") - im._dump(test_file) + def test_dump(self): + im = Image.new("L", (10, 10)) + im._dump(self.tempfile("temp_L.ppm")) + + im = Image.new("RGB", (10, 10)) + im._dump(self.tempfile("temp_RGB.ppm")) + + im = Image.new("HSV", (10, 10)) + self.assertRaises(ValueError, im._dump, self.tempfile("temp_HSV.ppm")) def test_comparison_with_other_type(self): # Arrange diff --git a/src/libImaging/File.c b/src/libImaging/File.c index d75f19d5d63..6f014c1f822 100644 --- a/src/libImaging/File.c +++ b/src/libImaging/File.c @@ -70,8 +70,8 @@ ImagingSavePPM(Imaging im, const char* outfile) /* Write "PPM" */ fprintf(fp, "P6\n%d %d\n255\n", im->xsize, im->ysize); } else { - (void) ImagingError_ModeError(); fclose(fp); + (void) ImagingError_ModeError(); return 0; }