[gimp/gimp-2-10] Issue #2087 - Issues discovered by coverity scan



commit 56c8f8320d7e738f8fbaaafce9863e38ac2bb373
Author: Josef Ridky <jridky redhat com>
Date:   Thu Aug 23 10:05:34 2018 +0200

    Issue #2087 - Issues discovered by coverity scan
    
    Add missing fclose invocations and fix copy-paste issue.
    
    This issues has been discovered by coverity scan proceeded by Red Hat.
    
    Fixed some mistakes in the patch and added more fclose() (Mitch)

 plug-ins/common/file-cel.c             |  9 ++++++++
 plug-ins/common/file-gif-load.c        | 12 +++++++++++
 plug-ins/common/file-xbm.c             |  6 ++++++
 plug-ins/common/file-xmc.c             | 38 ++++++++++++++++++++++++++++------
 plug-ins/file-fli/fli-gimp.c           | 11 ++++++++--
 plug-ins/pygimp/plug-ins/whirlpinch.py |  2 +-
 6 files changed, 69 insertions(+), 9 deletions(-)
---
diff --git a/plug-ins/common/file-cel.c b/plug-ins/common/file-cel.c
index 436db74685..bac2cd3c51 100644
--- a/plug-ins/common/file-cel.c
+++ b/plug-ins/common/file-cel.c
@@ -361,6 +361,7 @@ load_image (const gchar  *file,
     {
       g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
                    _("EOF or error while reading image header"));
+      fclose (fp);
       return -1;
     }
 
@@ -381,6 +382,7 @@ load_image (const gchar  *file,
         {
           g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
                        _("EOF or error while reading image header"));
+          fclose (fp);
           return -1;
         }
 
@@ -389,6 +391,7 @@ load_image (const gchar  *file,
         {
           g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
                        _("is not a CEL image file"));
+          fclose (fp);
           return -1;
         }
 
@@ -403,6 +406,7 @@ load_image (const gchar  *file,
         default:
           g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
                        _("illegal bpp value in image: %hhu"), bpp);
+          fclose (fp);
           return -1;
         }
 
@@ -419,6 +423,7 @@ load_image (const gchar  *file,
                    _("illegal image dimensions: width: %d, horizontal offset: "
                      "%d, height: %d, vertical offset: %d"),
                    width, offx, height, offy);
+      fclose (fp);
       return -1;
     }
 
@@ -469,6 +474,7 @@ load_image (const gchar  *file,
             {
               g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
                            _("EOF or error while reading image data"));
+              fclose (fp);
               return -1;
             }
 
@@ -505,6 +511,7 @@ load_image (const gchar  *file,
             {
               g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
                            _("EOF or error while reading image data"));
+              fclose (fp);
               return -1;
             }
 
@@ -530,6 +537,7 @@ load_image (const gchar  *file,
             {
               g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
                            _("EOF or error while reading image data"));
+              fclose (fp);
               return -1;
             }
 
@@ -547,6 +555,7 @@ load_image (const gchar  *file,
         default:
           g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
                        _("Unsupported bit depth (%d)!"), bpp);
+          fclose (fp);
           return -1;
         }
 
diff --git a/plug-ins/common/file-gif-load.c b/plug-ins/common/file-gif-load.c
index 34716ce7d0..e4702f410a 100644
--- a/plug-ins/common/file-gif-load.c
+++ b/plug-ins/common/file-gif-load.c
@@ -366,6 +366,7 @@ load_image (const gchar  *filename,
   if (! ReadOK (fd, buf, 6))
     {
       g_message ("Error reading magic number");
+      fclose (fd);
       return -1;
     }
 
@@ -373,6 +374,7 @@ load_image (const gchar  *filename,
     {
       g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
                    "%s", _("This is not a GIF file"));
+      fclose (fd);
       return -1;
     }
 
@@ -382,12 +384,14 @@ load_image (const gchar  *filename,
   if ((strcmp (version, "87a") != 0) && (strcmp (version, "89a") != 0))
     {
       g_message ("Bad version number, not '87a' or '89a'");
+      fclose (fd);
       return -1;
     }
 
   if (! ReadOK (fd, buf, 7))
     {
       g_message ("Failed to read screen descriptor");
+      fclose (fd);
       return -1;
     }
 
@@ -405,6 +409,7 @@ load_image (const gchar  *filename,
                           &GifScreen.GrayScale))
         {
           g_message ("Error reading global colormap");
+          fclose (fd);
           return -1;
         }
     }
@@ -422,12 +427,14 @@ load_image (const gchar  *filename,
       if (! ReadOK (fd, &c, 1))
         {
           g_message ("EOF / read error on image data");
+          fclose (fd);
           return image_ID; /* will be -1 if failed on first image! */
         }
 
       if (c == ';')
         {
           /* GIF terminator */
+          fclose (fd);
           return image_ID;
         }
 
@@ -437,6 +444,7 @@ load_image (const gchar  *filename,
           if (! ReadOK (fd, &c, 1))
             {
               g_message ("EOF / read error on extension function code");
+              fclose (fd);
               return image_ID; /* will be -1 if failed on first image! */
             }
 
@@ -456,6 +464,7 @@ load_image (const gchar  *filename,
       if (! ReadOK (fd, buf, 9))
         {
           g_message ("Couldn't read left/top/width/height");
+          fclose (fd);
           return image_ID; /* will be -1 if failed on first image! */
         }
 
@@ -468,6 +477,7 @@ load_image (const gchar  *filename,
           if (! ReadColorMap (fd, bitPixel, localColorMap, &grayScale))
             {
               g_message ("Error reading local colormap");
+              fclose (fd);
               return image_ID; /* will be -1 if failed on first image! */
             }
 
@@ -515,6 +525,8 @@ load_image (const gchar  *filename,
         break;
     }
 
+  fclose (fd);
+
   return image_ID;
 }
 
diff --git a/plug-ins/common/file-xbm.c b/plug-ins/common/file-xbm.c
index 3c6b5eae2f..97b87b657b 100644
--- a/plug-ins/common/file-xbm.c
+++ b/plug-ins/common/file-xbm.c
@@ -826,6 +826,7 @@ load_image (const gchar  *filename,
     {
       g_message (_("'%s':\nCould not read header (ftell == %ld)"),
                  gimp_filename_to_utf8 (filename), ftell (fp));
+      fclose (fp);
       return -1;
     }
 
@@ -833,6 +834,7 @@ load_image (const gchar  *filename,
     {
       g_message (_("'%s':\nNo image width specified"),
                  gimp_filename_to_utf8 (filename));
+      fclose (fp);
       return -1;
     }
 
@@ -840,6 +842,7 @@ load_image (const gchar  *filename,
     {
       g_message (_("'%s':\nImage width is larger than GIMP can handle"),
                  gimp_filename_to_utf8 (filename));
+      fclose (fp);
       return -1;
     }
 
@@ -847,6 +850,7 @@ load_image (const gchar  *filename,
     {
       g_message (_("'%s':\nNo image height specified"),
                  gimp_filename_to_utf8 (filename));
+      fclose (fp);
       return -1;
     }
 
@@ -854,6 +858,7 @@ load_image (const gchar  *filename,
     {
       g_message (_("'%s':\nImage height is larger than GIMP can handle"),
                  gimp_filename_to_utf8 (filename));
+      fclose (fp);
       return -1;
     }
 
@@ -861,6 +866,7 @@ load_image (const gchar  *filename,
     {
       g_message (_("'%s':\nNo image data type specified"),
                  gimp_filename_to_utf8 (filename));
+      fclose (fp);
       return -1;
     }
 
diff --git a/plug-ins/common/file-xmc.c b/plug-ins/common/file-xmc.c
index 88b0c7a20d..7631353651 100644
--- a/plug-ins/common/file-xmc.c
+++ b/plug-ins/common/file-xmc.c
@@ -667,10 +667,11 @@ load_image (const gchar  *filename,
       return -1;
     }
 
-  if (!XcursorFileLoad (fp, &commentsp, &imagesp))
+  if (! XcursorFileLoad (fp, &commentsp, &imagesp))
     {
       g_set_error (error, 0, 0, _("'%s' is not a valid X cursor."),
                    gimp_filename_to_utf8 (filename));
+      fclose (fp);
       return -1;
     }
 
@@ -683,6 +684,7 @@ load_image (const gchar  *filename,
           g_set_error (error, 0, 0,
                        _("Frame %d of '%s' is too wide for an X cursor."),
                        i + 1, gimp_filename_to_utf8 (filename));
+          fclose (fp);
           return -1;
         }
       if (imagesp->images[i]->height > MAX_LOAD_DIMENSION)
@@ -690,6 +692,7 @@ load_image (const gchar  *filename,
           g_set_error (error, 0, 0,
                        _("Frame %d of '%s' is too high for an X cursor."),
                        i + 1, gimp_filename_to_utf8 (filename));
+          fclose (fp);
           return -1;
         }
     }
@@ -706,7 +709,10 @@ load_image (const gchar  *filename,
   gimp_image_set_filename (image_ID, filename);
 
   if (! set_hotspot_to_parasite (image_ID))
-    return -1;
+    {
+      fclose (fp);
+      return -1;
+    }
 
   /* Temporary buffer */
   tmppixel = g_new (guint32, img_width * img_height);
@@ -729,8 +735,11 @@ load_image (const gchar  *filename,
 
       framename = make_framename (imagesp->images[i]->size, delay,
                                   DISPLAY_DIGIT (imagesp->nimage), error);
-      if (!framename)
-        return -1;
+      if (! framename)
+        {
+          fclose (fp);
+          return -1;
+        }
 
       layer_ID = gimp_layer_new (image_ID, framename, width, height,
                                  GIMP_RGBA_IMAGE,
@@ -782,6 +791,7 @@ load_image (const gchar  *filename,
                                       parasiteName[commentsp->comments[i]->comment_type -1]))
             {
               DM_XMC ("Failed to write %ith comment.\n", i);
+              fclose (fp);
               return -1;
             }
         }
@@ -868,6 +878,7 @@ load_thumbnail (const gchar *filename,
       g_set_error (error, 0, 0,
                    "'%s' seems to have an incorrect toc size.",
                    gimp_filename_to_utf8 (filename));
+      fclose (fp);
       return -1;
     }
   positions = g_malloc (ntoc * sizeof (guint32));
@@ -906,6 +917,7 @@ load_thumbnail (const gchar *filename,
       g_set_error (error, 0, 0,
                    _("there is no image chunk in \"%s\"."),
                    gimp_filename_to_utf8 (filename));
+      fclose (fp);
       return -1;
     }
 
@@ -946,6 +958,7 @@ load_thumbnail (const gchar *filename,
       g_set_error (error, 0, 0,
                    _("'%s' is too wide for an X cursor."),
                    gimp_filename_to_utf8 (filename));
+      fclose (fp);
       return -1;
     }
 
@@ -954,6 +967,7 @@ load_thumbnail (const gchar *filename,
       g_set_error (error, 0, 0,
                    _("'%s' is too high for an X cursor."),
                    gimp_filename_to_utf8 (filename));
+      fclose (fp);
       return -1;
     }
 
@@ -1501,6 +1515,7 @@ save_image (const gchar *filename,
   if (!imagesp)
     {
       DM_XMC ("Failed to XcursorImagesCreate!\n");
+      fclose (fp);
       return FALSE;
     }
   imagesp->nimage = nlayers;
@@ -1545,6 +1560,7 @@ save_image (const gchar *filename,
                        _("Frame '%s' is too wide. Please reduce to no more than %dpx."),
                        gimp_any_to_utf8 (framename, -1, NULL),
                        MAX_SAVE_DIMENSION);
+          fclose (fp);
           return FALSE;
         }
 
@@ -1554,6 +1570,7 @@ save_image (const gchar *filename,
                        _("Frame '%s' is too high. Please reduce to no more than %dpx."),
                        gimp_any_to_utf8 (framename, -1, NULL),
                        MAX_SAVE_DIMENSION);
+          fclose (fp);
           return FALSE;
         }
 
@@ -1562,6 +1579,7 @@ save_image (const gchar *filename,
           g_set_error (error, 0, 0,
                        _("Width and/or height of frame '%s' is zero!"),
                        gimp_any_to_utf8 (framename, -1, NULL));
+          fclose (fp);
           return FALSE;
         }
 
@@ -1582,6 +1600,7 @@ save_image (const gchar *filename,
               if (!imagesp->images[i])
                 {
                   DM_XMC ("Failed to XcursorImageCreate.\n");
+                  fclose (fp);
                   return FALSE;
                 }
               imagesp->images[i]->pixels[0] = 0x0;
@@ -1604,6 +1623,7 @@ save_image (const gchar *filename,
                              "Try to change the hot spot position, "
                              "layer geometry or export without auto-crop."),
                            gimp_any_to_utf8 (framename, -1, NULL));
+              fclose (fp);
               return FALSE;
             }
         }
@@ -1637,6 +1657,7 @@ save_image (const gchar *filename,
       if (!imagesp->images[i])
         {
           DM_XMC ("Failed to XcursorImageCreate.\n");
+          fclose (fp);
           return FALSE;
         }
       /*
@@ -1686,8 +1707,11 @@ save_image (const gchar *filename,
                                   imagesp->images[i]->delay,
                                   DISPLAY_DIGIT (imagesp->nimage),
                                   error);
-      if (!framename)
-        return FALSE;
+      if (! framename)
+        {
+          fclose (fp);
+          return FALSE;
+        }
 
       gimp_item_set_name (orig_layers[nlayers - 1 - i], framename);
       g_free (framename);
@@ -1746,6 +1770,7 @@ save_image (const gchar *filename,
         {
           DM_XMC ("Failed to XcursorFileSave.\t%p\t%p\t%p\n",
                   fp, commentsp, imagesp);
+          fclose (fp);
           return FALSE;
         }
 
@@ -1755,6 +1780,7 @@ save_image (const gchar *filename,
       if (! XcursorFileSaveImages (fp, imagesp))
         {
           DM_XMC ("Failed to XcursorFileSaveImages.\t%p\t%p\n", fp, imagesp);
+          fclose (fp);
           return FALSE;
         }
     }
diff --git a/plug-ins/file-fli/fli-gimp.c b/plug-ins/file-fli/fli-gimp.c
index 7c46e55e04..45d2a8cdfc 100644
--- a/plug-ins/file-fli/fli-gimp.c
+++ b/plug-ins/file-fli/fli-gimp.c
@@ -505,9 +505,14 @@ load_image (const gchar  *filename,
 
   fli_read_header (file, &fli_header);
   if (fli_header.magic == NO_HEADER)
-    return -1;
+    {
+      fclose (file);
+      return -1;
+    }
   else
-    fseek (file, 128, SEEK_SET);
+    {
+      fseek (file, 128, SEEK_SET);
+    }
 
   /*
    * Fix parameters
@@ -528,11 +533,13 @@ load_image (const gchar  *filename,
   if (to_frame < 1)
     {
       /* nothing to do ... */
+      fclose (file);
       return -1;
     }
   if (from_frame >= fli_header.frames)
     {
       /* nothing to do ... */
+      fclose (file);
       return -1;
     }
   if (to_frame>fli_header.frames)
diff --git a/plug-ins/pygimp/plug-ins/whirlpinch.py b/plug-ins/pygimp/plug-ins/whirlpinch.py
index 606485ada7..6c50e89da9 100755
--- a/plug-ins/pygimp/plug-ins/whirlpinch.py
+++ b/plug-ins/pygimp/plug-ins/whirlpinch.py
@@ -125,7 +125,7 @@ def whirl_pinch(image, drawable, whirl, pinch, radius):
                                 if cx >= 0: ix = int(cx)
                                 else:       ix = -(int(-cx) + 1)
                                 if cy >= 0: iy = int(cy)
-                                else:       iy = -(int(-cx) + 1)
+                                else:       iy = -(int(-cy) + 1)
                                 pixel[0] = pft.get_pixel(ix, iy)
                                 pixel[1] = pft.get_pixel(ix+1, iy)
                                 pixel[2] = pft.get_pixel(ix, iy+1)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]