From 51a48ecfe97e32cc5797a3bee03a85ab5cb11207 Mon Sep 17 00:00:00 2001 From: Kim Woelders Date: Wed, 7 Mar 2018 19:35:30 +0100 Subject: [PATCH] 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 --- src/modules/loaders/loader_bmp.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/modules/loaders/loader_bmp.c b/src/modules/loaders/loader_bmp.c index 2d15ba5..3fcc17e 100644 --- a/src/modules/loaders/loader_bmp.c +++ b/src/modules/loaders/loader_bmp.c @@ -235,6 +235,17 @@ load(ImlibImage * im, ImlibProgressFunction progress, ReadleLong(f, &rmask); ReadleLong(f, &gmask); ReadleLong(f, &bmask); + if (bitcount == 16) + { + rmask &= 0xffffU; + gmask &= 0xffffU; + bmask &= 0xffffU; + } + if (rmask == 0 || gmask == 0 || bmask == 0) + { + fclose(f); + return 0; + } for (bit = bitcount - 1; bit >= 0; bit--) { if (bmask & (1 << bit))