Commit Graph

1346 Commits

Author SHA1 Message Date
Kim Woelders c63f7a3a63 Autofoo cosmetics 2018-05-04 18:15:01 +02:00
Kim Woelders 9e095d5bbe imlib2_conv: Report error on save failure 2018-03-29 07:23:52 +02:00
Kim Woelders 092c05acc3 Add __imlib_LoadImageWrapper() handling all load() calls
Loaders behave inconsistently on error so do cleanups in
__imlib_LoadImageWrapper()
2018-03-29 07:23:48 +02:00
Kim Woelders 78e738612c 1.5.1. 2018-03-17 14:01:55 +01:00
Kim Woelders d0da3117e9 imlib2_conv.c: Fix gcc8 warning
imlib2_conv.c: In function ‘main’:
imlib2_conv.c:64:14: error: ‘strncpy’ specified bound depends on the length of the source argument [-Werror=stringop-overflow=]
              strncpy(p, dot, (strlen(dot) < 9) ? strlen(dot) : 8);
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
imlib2_conv.c:64:31: note: length computed here
              strncpy(p, dot, (strlen(dot) < 9) ? strlen(dot) : 8);
                               ^~~~~~~~~~~
2018-03-10 20:25:58 +01:00
Kim Woelders 4d6ff056ef grab.c: Fix gcc8 warning
grab.c: In function ‘__imlib_GrabDrawableToRGBA’:
grab.c:543:32: error: cast between incompatible function types from ‘void (*)(Display *, XErrorEvent *)’ {aka ‘void (*)(struct _XDisplay *, struct <anonymous> *)’} to ‘int (*)(Display *, XErrorEvent *)’ {aka ‘int (*)(struct _XDisplay *, struct <anonymous> *)’} [-Werror=cast-function-type]
    prev_erh = XSetErrorHandler((XErrorHandler) Tmp_HandleXError);
                                ^
2018-03-10 20:25:58 +01:00
Kim Woelders c872826e3b imlib2_view: Limit window dimensions to 32767 2018-03-10 20:25:58 +01:00
Kim Woelders b8ef1561c5 Warning fixes in imlib2_... programs
Use CFLAGS_WARNINGS here too and clean up the warnings (mostly shadow).
2018-03-10 20:25:58 +01:00
Kim Woelders 1c55ef577d Add missing const to imlib_apply_filter() script argument 2018-03-10 20:25:58 +01:00
Kim Woelders bb09d7844e PNG loader: Correct various error handling cases
Under various error conditions the image width would not be set to 0
which is currently required for the loader code to behave properly.

In particular, png_read_end() should not be called in error cases.
This would cause a longjump which would exit without setting im->w to 0.
2018-03-10 20:19:55 +01:00
Kim Woelders a120e3152a Maximum image dimension should be 32767, not 32766
Presumably a glitch from when it last was lowered to "32767".
2018-03-10 20:19:55 +01:00
Kim Woelders 7dc59c88f8 BMP loader: Fix warnings found with -O3 2018-03-09 22:02:31 +01:00
Kim Woelders 42f6004f96 PNM loader: Simplify (fixing ASCII format parsing issues T6751)
ASCII format parsing is considerably simpler/safer now.

P1 (ASCII pbm) case is somewhat slower than before (but more correct).
P2 (ASCII pgm) case is roughly same speed.
P3 (ASCII ppm) case is a bit faster.

https://phab.enlightenment.org/T6751
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=406371
2018-03-09 21:29:30 +01:00
Kim Woelders 51a48ecfe9 BMP loader: Fix infinite loop with invalid bmp images (T6749)
https://phab.enlightenment.org/T6749
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=773968
2018-03-07 20:26:21 +01:00
Kim Woelders 5a7644a0c0 XPM loader: Fix potential use of uninitialized value (T6746)
https://phab.enlightenment.org/T6746
https://bugs.debian.org/868151
2018-03-07 19:45:39 +01:00
Kim Woelders 8038d9c618 Fix build without HAVE_X11_SHM_FD (T6752) 2018-03-07 19:44:05 +01:00
Kim Woelders 4311d5f8ad 1.5.0. 2018-02-22 10:37:26 +01:00
Kim Woelders b26c72281f Drop -Waggregate-return
xcb cookie returns trigger this warning.
2018-02-22 10:37:07 +01:00
Kim Woelders 63103ae48c Expose XImage cache control functions 2018-02-17 13:23:13 +01:00
Kim Woelders 5cf3e34ff1 Add imlib_get_cache_used()
And some cosmetics.
2018-02-17 11:56:42 +01:00
Kim Woelders 327f8c0ce4 Refactor the XImage cache
Simpler, faster.
2018-02-10 10:53:42 +01:00
Kim Woelders 6a2e839313 Add IMLIB2_XIMAGE_CACHE_COUNT to enable testing the ximage cache 2018-02-10 10:30:16 +01:00
Kim Woelders 096316b476 Introduce IMLIB2_SHM_OPT to enable overriding/testing SHM modes 2018-02-10 10:30:16 +01:00
Kim Woelders c975dab9cd Fix potential OOB memory access if border sizes exceed image dimensions 2018-02-09 18:45:47 +01:00
Kim Woelders 96dde44a14 Fix potential OOB memory access if border elements are negative 2018-02-09 18:45:47 +01:00
Kim Woelders 65fb0c8249 Strip trailing whitespace, cosmetics 2018-02-09 18:45:32 +01:00
Kim Woelders f799074a4d Autofoo cosmetics 2018-02-08 15:37:56 +01:00
Kim Woelders 0f829f474b Indent 2018-02-08 15:37:56 +01:00
Alexander Volkov ca17031280 Add support for MIT-SHM FD-passing
Summary:
This is more secure way of using shared memory because
it's visible only to the X server and the application.

Reviewers: kwo

Reviewed By: kwo

Differential Revision: https://phab.enlightenment.org/D5788
2018-02-08 15:34:53 +01:00
Alexander Volkov 56ca24fc9f introduce __imlib_ShmDestroyXImage() instead of __imlib_ShmDetach()
Summary:
It enhances the code, because __imlib_ShmDestroyXImage() is symmetrical
to __imlib_ShmGetXImage(), while __imlib_ShmDetach() looks unrelated.

Reviewers: kwo

Reviewed By: kwo

Differential Revision: https://phab.enlightenment.org/D5787
2018-02-08 15:34:53 +01:00
Alexander Volkov 6f62c70bac put a check for shared memory inside __imlib_ShmGetXImage()
Summary:
This check actually refers to the internal implementation
and should not be done outside this function.

Reviewers: kwo

Reviewed By: kwo

Differential Revision: https://phab.enlightenment.org/D5783
2018-02-08 15:34:53 +01:00
Kim Woelders 8232c9213b imlib_create_scaled_image_from_drawable(): Drop shape handling if unshaped 2017-12-23 19:35:15 +01:00
Kim Woelders 257a72fabe imlib_create_scaled_image_from_drawable(): speed up 1:1 case 2017-12-23 19:32:52 +01:00
Kim Woelders 2d1ec6979b imlib2_grab: Always use imlib_create_scaled_image_from_drawable() to grab image
Apparently, when using XShmGetImage to get an XImage for a (non-root?)
window, the image no longer includes subwindows (like when using
IncludeInferiors in GC).
When using XGetImage the XImage still includes subwindows.

imlib_create_scaled_image_from_drawable() (as opposed to
imlib_create_image_from_drawable() ) is implemented in such a way
that the drawable to be grabbed is always copied to a pixmap first.

This way we always get the "IncludeInferiors" type grab we most likely
want here.
2017-12-23 19:00:00 +01:00
Kim Woelders 854fca3395 Remove redundant CAST_IMAGE() 2017-12-17 11:06:43 +01:00
Kim Woelders a3e8395435 Introduce __imlib_LoadImageData() 2017-12-17 11:06:38 +01:00
Kim Woelders 1c413c1f35 Make some more functions static. 2017-12-15 17:36:52 +01:00
Kim Woelders 812a691b16 XPM loader: Fix incorrect image invalidation.
Introduced in d5ebec2948.
2017-05-01 21:58:07 +02:00
Kim Woelders 67011d6252 1.4.10. 2017-04-15 15:59:22 +02:00
Tobias Stoeckmann fe7ae79084 Prevent OOB read with large file support on 32 bit
If imlib2 is compiled with large file support on 32 bit systems, which
is not the default, the TGA loader is vulnerable to an out of boundary
read due to insufficient off_t/size_t validations.

If large file support is enabled, off_t is 64 bit, while size_t is the
regular 32 bit on 32 bit architectures. Casting directly leads to issues
with files which are larger than 4 GB.

As it's unlikely to encounter such files, they will be simply ignored
on such systems.

64 bit systems are not affected.

Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
2017-03-25 07:21:49 +01:00
Tobias Stoeckmann d5ebec2948 Properly release resources on error path
The code did not properly release resources in some error paths,
leading to memory leaks or possible double free issues.

If an image could not be loaded, some code paths check if width is 0
to determine if an error occurred. Therefore, always set width to 0
in such cases.
2017-03-12 09:52:02 +01:00
Tobias Stoeckmann 993911b6e5 Avoid out of boundary operations while parsing xpm
It is possible to trigger out of boundary read and write accesses while
parsing XPM files.

1. If the color definition is shorter than the specified cpp, i.e.
   characters per pixel, an out of boundary write can be triggered.
   The write will modify stack memory and could therefore be used to
   corrupt local variables or return addresses.
2. If the pixel area contains less than the required amount of
   characters per pixel, an out of boundary read can be triggered.
   This affects files with more than one character per pixel.
3. If an out of memory condition occurs, a null pointer dereference can
   be triggered because the variable line is reallocated if not enough
   memory was available. Dereferencing line with an offset would lead
   to yet another out of boundary write, which will lead to a
   segmentation fault on almost every system out there.
2017-02-20 21:03:36 +01:00
Kim Woelders 1f96129e2c Fix missing break.
Found by gcc 7:

grab.c: In function ‘__imlib_GrabXImageToRGBA’:
grab.c:85:14: error: this statement may fall through [-Werror=implicit-fallthrough=]
              for (y = 0; y < h; y++)
              ^~~
grab.c:97:11: note: here
           case 24:
           ^~~~
2017-02-12 20:43:53 +01:00
Kim Woelders f6d902efd9 PNM loader: Fix reading PNM bitmaps.
Attempting to read a PNM bitmap (ASCII format) would cause a lockup due
to infinite loop, and in certain cases write access outside allocated
memory.

Fixes CVE-2016-6348 (out-of-bounds writes ... presumably - CVE text not
disclosed yet).
Found by Neelima Krishnan, Intel Corporation.
2016-09-03 10:53:11 +02:00
Kim Woelders 9780f8dbc4 1.4.9. 2016-04-29 19:29:37 +02:00
Kim Woelders a0259d5181 Fix various potential OOM crashes.
There were several potential OOM crashes in __imlib_ListFilters(),
__imlib_ListLoaders() and __imlib_TrimLoaderList().

The fix of __imlib_TrimLoaderList() is from patch by
Yuriy M. Kaminskiy <yumkam@gmail.com>.
2016-04-16 17:35:08 +02:00
Kim Woelders 5b54980364 Move __imlib_ItemInList() to file.c.
It may not be the ideal location but it's better than image.c
2016-04-16 16:58:15 +02:00
Kim Woelders 31a261ac37 Trivial file function cleanups. 2016-04-15 22:05:22 +02:00
Kim Woelders b49e71ed77 Eliminate pImlibExternalFilter type. 2016-04-15 22:00:01 +02:00
Kim Woelders bdd7630a21 Make a number of functions static. 2016-04-15 21:59:52 +02:00