[E-devel] imlib2_load: fix access/return garbage if stat() fails
Omar Polo <[email protected]> Mon, 04 Sep 2023 17:44:51 +0200
| Newsgroups | gmane.comp.window-managers.enlightenment.devel |
|---|---|
| Message-ID | <3VK6URQ00QPW9.2B37QNTOMIDKP@venera> |
Spotted thanks to a warning of the compiler. While here convert it to
fstat after open, and range check the value we're about to mmap.
Thanks,
Omar Polo
Index: src/bin/imlib2_load.c
--- src/bin/imlib2_load.c.orig
+++ src/bin/imlib2_load.c
@@ -91,16 +91,19 @@ image_load_mem(const char *file, int *perr)
else
ext = file;
- err = stat(file, &st);
- if (err)
- goto bail;
-
im = NULL;
fd = -1;
fdata = MAP_FAILED;
fd = open(file, O_RDONLY);
if (fd < 0)
+ goto bail;
+
+ err = fstat(fd, &st);
+ if (err)
+ goto bail;
+
+ if (st.st_size > SIZE_MAX)
goto bail;
fdata = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0);