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); --
