kwo pushed a commit to branch master.

http://git.enlightenment.org/legacy/imlib2.git/commit/?id=5e267577bdaa6ce5bb9e5fc238d7a58408f2fd27

commit 5e267577bdaa6ce5bb9e5fc238d7a58408f2fd27
Author: Kim Woelders <[email protected]>
Date:   Tue Oct 15 20:08:43 2019 +0200

    GZIP loader: Check filename before uncompress
    
    Inspired by corresponding bz2 loader fix.
    
    Also remove pointless call to stat().
---
 src/modules/loaders/loader_zlib.c | 23 +++++++++++------------
 1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/src/modules/loaders/loader_zlib.c 
b/src/modules/loaders/loader_zlib.c
index 29c39a0..aba9583 100644
--- a/src/modules/loaders/loader_zlib.c
+++ b/src/modules/loaders/loader_zlib.c
@@ -42,10 +42,10 @@ load(ImlibImage * im, ImlibProgressFunction progress,
      char progress_granularity, char immediate_load)
 {
    ImlibLoader        *loader;
-   int                 src, dest, res;
+   int                 src;
+   int                 dest, res;
    char               *file, *p, *q, tmp[] = "/tmp/imlib2_loader_zlib-XXXXXX";
    char               *real_ext;
-   struct stat         st;
 
    /* check that this file ends in *.gz and that there's another ext
     * (e.g. "foo.png.gz"
@@ -55,17 +55,25 @@ load(ImlibImage * im, ImlibProgressFunction progress,
    if (!p || p == im->real_file || strcasecmp(p + 1, "gz") || p == q)
       return 0;
 
-   if (stat(im->real_file, &st) < 0)
+   if (!(real_ext = strndup(im->real_file, p - im->real_file)))
       return 0;
 
+   if (!(loader = __imlib_FindBestLoaderForFile(real_ext, 0)))
+     {
+        free(real_ext);
+        return 0;
+     }
+
    if ((src = open(im->real_file, O_RDONLY)) < 0)
      {
+        free(real_ext);
         return 0;
      }
 
    if ((dest = mkstemp(tmp)) < 0)
      {
         close(src);
+        free(real_ext);
         return 0;
      }
 
@@ -74,15 +82,6 @@ load(ImlibImage * im, ImlibProgressFunction progress,
    close(dest);
 
    if (!res)
-     {
-        unlink(tmp);
-        return 0;
-     }
-
-   if (!(real_ext = strndup(im->real_file, p - im->real_file)))
-      return 0;
-
-   if (!(loader = __imlib_FindBestLoaderForFile(real_ext, 0)))
      {
         free(real_ext);
         unlink(tmp);

-- 


Reply via email to