[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#857086: marked as done (unblock: icoutils/0.31.2-1)



Your message dated Tue, 07 Mar 2017 23:01:47 +0000
with message-id <E1clO71-0000Gw-Pt@respighi.debian.org>
and subject line unblock icoutils
has caused the Debian Bug report #857086,
regarding unblock: icoutils/0.31.2-1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
857086: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=857086
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Please unblock icoutils 0.31.2-1, which contains various security fixes.

diff -Nru icoutils-0.31.1/AUTHORS icoutils-0.31.2/AUTHORS
--- icoutils-0.31.1/AUTHORS	2013-05-19 13:17:31.000000000 +0100
+++ icoutils-0.31.2/AUTHORS	2017-03-06 21:27:25.000000000 +0000
@@ -20,8 +20,11 @@
 Marcin Siennicki
  - BMP extraction support for wrestool
 
+Martin Gieseking <martin.gieseking@uos.de>
+ - Security fixes
+ - Miscellaneous fixes and improvements
+
 Joel Holdsworth<joel@airwebreathe.org.uk>
-Martin Gieseking
 Martin Storsjö<martin@martin.st>
 Mathew Eis <mathew.eis@gmail.com>
 Sebastián Puebla <spuebla@hotmail.com>
@@ -33,3 +36,7 @@
 Markus Schölzel <m-schoelzel@web.de>
 Richard W.M. Jones <rjones@redhat.com>
  - man page improvements
+
+Jerzy Kramarz <op7ica@gmail.com>
+ - pointing out various crashes/bugs exploitable for DoS
+   purposes
diff -Nru icoutils-0.31.1/NEWS icoutils-0.31.2/NEWS
--- icoutils-0.31.1/NEWS	2017-01-08 14:44:57.000000000 +0000
+++ icoutils-0.31.2/NEWS	2017-03-06 21:32:05.000000000 +0000
@@ -1,3 +1,8 @@
+2017-03-06: icoutils 0.31.2 released.
+  Various security fixes from Martin Gieseking,
+  issues found by Jerzy Kramarz
+  (CVE-2017-6009, CVE-2017-6010, CVE-2017-6011).
+
 2017-01-08: icoutils 0.31.1 released.
   Security fixes:
     Colin Watson, Debian bug #850017
diff -Nru icoutils-0.31.1/configure icoutils-0.31.2/configure
--- icoutils-0.31.1/configure	2017-01-08 14:40:28.000000000 +0000
+++ icoutils-0.31.2/configure	2017-03-06 21:28:08.000000000 +0000
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for icoutils 0.31.1.
+# Generated by GNU Autoconf 2.69 for icoutils 0.31.2.
 #
 # Report bugs to <frank.richter@gmail.com>.
 #
@@ -580,8 +580,8 @@
 # Identity of this package.
 PACKAGE_NAME='icoutils'
 PACKAGE_TARNAME='icoutils'
-PACKAGE_VERSION='0.31.1'
-PACKAGE_STRING='icoutils 0.31.1'
+PACKAGE_VERSION='0.31.2'
+PACKAGE_STRING='icoutils 0.31.2'
 PACKAGE_BUGREPORT='frank.richter@gmail.com'
 PACKAGE_URL=''
 
@@ -1948,7 +1948,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures icoutils 0.31.1 to adapt to many kinds of systems.
+\`configure' configures icoutils 0.31.2 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -2018,7 +2018,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of icoutils 0.31.1:";;
+     short | recursive ) echo "Configuration of icoutils 0.31.2:";;
    esac
   cat <<\_ACEOF
 
@@ -2128,7 +2128,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-icoutils configure 0.31.1
+icoutils configure 0.31.2
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2780,7 +2780,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by icoutils $as_me 0.31.1, which was
+It was created by icoutils $as_me 0.31.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3670,7 +3670,7 @@
 
 # Define the identity of the package.
  PACKAGE='icoutils'
- VERSION='0.31.1'
+ VERSION='0.31.2'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -20061,7 +20061,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by icoutils $as_me 0.31.1, which was
+This file was extended by icoutils $as_me 0.31.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -20127,7 +20127,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-icoutils config.status 0.31.1
+icoutils config.status 0.31.2
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -Nru icoutils-0.31.1/configure.ac icoutils-0.31.2/configure.ac
--- icoutils-0.31.1/configure.ac	2017-01-08 14:39:40.000000000 +0000
+++ icoutils-0.31.2/configure.ac	2017-03-06 21:27:54.000000000 +0000
@@ -1,7 +1,7 @@
 #                                               -*- Autoconf -*-
 # Process this file with autoconf to produce a configure script.
 AC_PREREQ(2.59)
-AC_INIT(icoutils, 0.31.1, frank.richter@gmail.com)
+AC_INIT(icoutils, 0.31.2, frank.richter@gmail.com)
 AC_CONFIG_MACRO_DIR([m4]) # doesn't seem to have any effect at the moment
 AC_CONFIG_SRCDIR([icotool/icotool.h])
 AC_CONFIG_HEADER([config.h])
diff -Nru icoutils-0.31.1/debian/.git-dpm icoutils-0.31.2/debian/.git-dpm
--- icoutils-0.31.1/debian/.git-dpm	2017-01-09 18:24:36.000000000 +0000
+++ icoutils-0.31.2/debian/.git-dpm	2017-03-07 17:30:30.000000000 +0000
@@ -1,8 +1,8 @@
 # see git-dpm(1) from git-dpm package
-f704125a5652f867d4f2acf45a52dc53b2c77fce
-f704125a5652f867d4f2acf45a52dc53b2c77fce
-f704125a5652f867d4f2acf45a52dc53b2c77fce
-f704125a5652f867d4f2acf45a52dc53b2c77fce
-icoutils_0.31.1.orig.tar.bz2
-751aa911164aea06e3b88cb1625aad8e0a96f5d0
-573484
+c50ee01e3bbbc846f7b17e7de1d7c092e7b950c9
+c50ee01e3bbbc846f7b17e7de1d7c092e7b950c9
+c50ee01e3bbbc846f7b17e7de1d7c092e7b950c9
+c50ee01e3bbbc846f7b17e7de1d7c092e7b950c9
+icoutils_0.31.2.orig.tar.bz2
+49391e2187ea9850893e042b69444e6b4cc5f9aa
+573585
diff -Nru icoutils-0.31.1/debian/changelog icoutils-0.31.2/debian/changelog
--- icoutils-0.31.1/debian/changelog	2017-01-09 18:31:05.000000000 +0000
+++ icoutils-0.31.2/debian/changelog	2017-03-07 22:18:53.000000000 +0000
@@ -1,3 +1,12 @@
+icoutils (0.31.2-1) unstable; urgency=high
+
+  * New upstream release.
+    - CVE-2017-6009, CVE-2017-6010, CVE-2017-6011: Various security fixes
+      from Martin Gieseking, issues found by Jerzy Kramarz (closes: #854050,
+      #854054).
+
+ -- Colin Watson <cjwatson@debian.org>  Tue, 07 Mar 2017 22:18:53 +0000
+
 icoutils (0.31.1-1) unstable; urgency=high
 
   * New upstream release.
diff -Nru icoutils-0.31.1/extresso/extresso icoutils-0.31.2/extresso/extresso
--- icoutils-0.31.1/extresso/extresso	2017-01-08 14:40:54.000000000 +0000
+++ icoutils-0.31.2/extresso/extresso	2017-03-06 21:33:59.000000000 +0000
@@ -71,7 +71,7 @@
 	exit;
 }
 if ($arg_version) {
-	print "$PROGRAM (icoutils) 0.31.1\n";
+	print "$PROGRAM (icoutils) 0.31.2\n";
 	print "Written by Oskar Liljeblad.\n\n";
 	print "Copyright (C) 1998-2005 Oskar Liljeblad.\n";
 	print "This is free software; see the source for copying conditions.  There is NO\n";
diff -Nru icoutils-0.31.1/extresso/genresscript icoutils-0.31.2/extresso/genresscript
--- icoutils-0.31.1/extresso/genresscript	2017-01-08 14:40:54.000000000 +0000
+++ icoutils-0.31.2/extresso/genresscript	2017-03-06 21:33:59.000000000 +0000
@@ -58,7 +58,7 @@
 	exit;
 }
 if ($arg_version) {
-	print "$PROGRAM (icoutils) 0.31.1\n";
+	print "$PROGRAM (icoutils) 0.31.2\n";
 	print "Written by Oskar Liljeblad.\n\n";
 	print "Copyright (C) 1998-2005 Oskar Liljeblad.\n";
 	print "This is free software; see the source for copying conditions.  There is NO\n";
diff -Nru icoutils-0.31.1/icotool/extract.c icoutils-0.31.2/icotool/extract.c
--- icoutils-0.31.1/icotool/extract.c	2012-08-23 15:47:06.000000000 +0100
+++ icoutils-0.31.2/icotool/extract.c	2017-03-06 21:23:33.000000000 +0000
@@ -138,7 +138,8 @@
 				Win32RGBQuad *palette = NULL;
 				uint32_t palette_count = 0;
 				uint32_t image_size, mask_size;
-				uint32_t width, height, bit_count;
+				int32_t width, height;
+				uint32_t bit_count;
 				uint8_t *image_data = NULL, *mask_data = NULL;
 				png_structp png_ptr = NULL;
 				png_infop info_ptr = NULL;
@@ -154,16 +155,23 @@
 				/* Vista icon: it's just a raw PNG */
 				if (bitmap.size == ICO_PNG_MAGIC)
 				{
+					uint32_t unsigned_width, unsigned_height;
 					fseek(in, offset, SEEK_SET);
 				
 					image_size = entries[c].dib_size;
 					image_data = xmalloc(image_size);
 					if (!xfread(image_data, image_size, in))
 						goto done;
-					
-					if (!read_png (image_data, image_size, &bit_count, &width, &height))
+
+					if (!read_png (image_data, image_size, &bit_count, &unsigned_width, &unsigned_height))
 						goto done;
-					
+
+					width = (int32_t)unsigned_width;
+					height = (int32_t)unsigned_height;
+					if ((bitmap.width > INT32_MAX/4) || (bitmap.height > INT32_MAX)) {
+						warn(_("PNG too large"));
+						goto done;
+					}
 					completed++;
 					
 					if (!filter(completed, width, height, bitmap.bit_count, palette_count, dir.type == 1,
@@ -229,11 +237,19 @@
 
 					if (bitmap.clr_used != 0 || bitmap.bit_count < 24) {
 						palette_count = (bitmap.clr_used != 0 ? bitmap.clr_used : 1 << bitmap.bit_count);
+						if (palette_count > 256) {
+							warn(_("palette too large"));
+							goto done;
+						}
 						palette = xmalloc(sizeof(Win32RGBQuad) * palette_count);
 						if (!xfread(palette, sizeof(Win32RGBQuad) * palette_count, in))
 							goto done;
 						offset += sizeof(Win32RGBQuad) * palette_count;
 					}
+					if (abs(bitmap.width) > INT32_MAX/max(4, bitmap.bit_count)) {
+						warn(_("bitmap width too large"));
+						goto done;
+					}
 
 					width = bitmap.width;
 					height = abs(bitmap.height)/2;
Binary files /tmp/_uaDpX67gW/icoutils-0.31.1/po/en@boldquot.gmo and /tmp/f9PmotVM7d/icoutils-0.31.2/po/en@boldquot.gmo differ
diff -Nru icoutils-0.31.1/po/en@boldquot.po icoutils-0.31.2/po/en@boldquot.po
--- icoutils-0.31.1/po/en@boldquot.po	2017-01-08 14:46:32.000000000 +0000
+++ icoutils-0.31.2/po/en@boldquot.po	2017-03-06 21:34:48.000000000 +0000
@@ -30,10 +30,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: icoutils 0.31.1\n"
+"Project-Id-Version: icoutils 0.31.2\n"
 "Report-Msgid-Bugs-To: frank.richter@gmail.com\n"
-"POT-Creation-Date: 2017-01-08 15:40+0100\n"
-"PO-Revision-Date: 2017-01-08 15:40+0100\n"
+"POT-Creation-Date: 2017-03-06 22:34+0100\n"
+"PO-Revision-Date: 2017-03-06 22:34+0100\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
 "Language: en@boldquot\n"
@@ -315,11 +315,11 @@
 msgid "not a png file"
 msgstr "not a png file"
 
-#: icotool/create.c:125 icotool/extract.c:273 icotool/extract.c:449
+#: icotool/create.c:125 icotool/extract.c:289 icotool/extract.c:465
 msgid "cannot initialize PNG library"
 msgstr "cannot initialize PNG library"
 
-#: icotool/create.c:130 icotool/extract.c:278 icotool/extract.c:454
+#: icotool/create.c:130 icotool/extract.c:294 icotool/extract.c:470
 msgid "cannot create PNG info structure - out of memory"
 msgstr "cannot create PNG info structure - out of memory"
 
@@ -328,12 +328,12 @@
 msgid "cannot decrease bit depth from %d to %d, bit depth not changed"
 msgstr "cannot decrease bit depth from %d to %d, bit depth not changed"
 
-#: icotool/create.c:258 icotool/extract.c:191 icotool/extract.c:288
+#: icotool/create.c:258 icotool/extract.c:199 icotool/extract.c:304
 msgid "cannot create file"
 msgstr "cannot create file"
 
 #: icotool/create.c:267 icotool/create.c:309 icotool/create.c:319
-#: icotool/create.c:393 icotool/extract.c:199
+#: icotool/create.c:393 icotool/extract.c:207
 msgid "cannot write to file"
 msgstr "cannot write to file"
 
@@ -353,60 +353,72 @@
 msgid "reserved is not zero"
 msgstr "reserved is not zero"
 
-#: icotool/extract.c:178 icotool/extract.c:339
+#: icotool/extract.c:172
+msgid "PNG too large"
+msgstr "PNG too large"
+
+#: icotool/extract.c:186 icotool/extract.c:355
 #, c-format
 msgid "--%s --index=%d --width=%d --height=%d --bit-depth=%d --palette-size=%d"
 msgstr ""
 "--%s --index=%d --width=%d --height=%d --bit-depth=%d --palette-size=%d"
 
-#: icotool/extract.c:182 icotool/extract.c:343
+#: icotool/extract.c:190 icotool/extract.c:359
 #, c-format
 msgid " --hotspot-x=%d --hotspot-y=%d"
 msgstr " --hotspot-x=%d --hotspot-y=%d"
 
-#: icotool/extract.c:208
+#: icotool/extract.c:216
 msgid "bitmap header is too short"
 msgstr "bitmap header is too short"
 
-#: icotool/extract.c:212
+#: icotool/extract.c:220
 msgid "compressed image data not supported"
 msgstr "compressed image data not supported"
 
-#: icotool/extract.c:216
+#: icotool/extract.c:224
 msgid "x_pels_per_meter field in bitmap should be zero"
 msgstr "x_pels_per_meter field in bitmap should be zero"
 
-#: icotool/extract.c:218
+#: icotool/extract.c:226
 msgid "y_pels_per_meter field in bitmap should be zero"
 msgstr "y_pels_per_meter field in bitmap should be zero"
 
-#: icotool/extract.c:220
+#: icotool/extract.c:228
 msgid "clr_important field in bitmap should be zero"
 msgstr "clr_important field in bitmap should be zero"
 
-#: icotool/extract.c:222
+#: icotool/extract.c:230
 msgid "planes field in bitmap should be one"
 msgstr "planes field in bitmap should be one"
 
-#: icotool/extract.c:225
+#: icotool/extract.c:233
 #, c-format
 msgid "skipping %d bytes of extended bitmap header"
 msgstr "skipping %d bytes of extended bitmap header"
 
-#: icotool/extract.c:245
+#: icotool/extract.c:241
+msgid "palette too large"
+msgstr "palette too large"
+
+#: icotool/extract.c:250
+msgid "bitmap width too large"
+msgstr "bitmap width too large"
+
+#: icotool/extract.c:261
 #, c-format
 msgid "incorrect total size of bitmap (%d specified; %d real)"
 msgstr "incorrect total size of bitmap (%d specified; %d real)"
 
-#: icotool/extract.c:392
+#: icotool/extract.c:408
 msgid "offset of bitmap header incorrect (too low)"
 msgstr "offset of bitmap header incorrect (too low)"
 
-#: icotool/extract.c:396
+#: icotool/extract.c:412
 msgid "invalid data at expected offset (unrecoverable)"
 msgstr "invalid data at expected offset (unrecoverable)"
 
-#: icotool/extract.c:399
+#: icotool/extract.c:415
 #, c-format
 msgid "skipping %u bytes of garbage at %u"
 msgstr "skipping %u bytes of garbage at %u"
@@ -788,31 +800,31 @@
 msgid "%s: --language has no effect because file is 16-bit binary"
 msgstr "%s: --language has no effect because file is 16-bit binary"
 
-#: wrestool/restable.c:121
+#: wrestool/restable.c:132
 #, c-format
 msgid "--type=%s --name=%s%s%s [%s%s%soffset=0x%x size=%d]\n"
 msgstr "--type=%s --name=%s%s%s [%s%s%soffset=0x%x size=%d]\n"
 
-#: wrestool/restable.c:124
+#: wrestool/restable.c:135
 msgid " --language="
 msgstr " --language="
 
-#: wrestool/restable.c:318
+#: wrestool/restable.c:329
 #, c-format
 msgid "%s: resource table invalid, ignoring remaining entries"
 msgstr "%s: resource table invalid, ignoring remaining entries"
 
-#: wrestool/restable.c:384 wrestool/restable.c:465
+#: wrestool/restable.c:395 wrestool/restable.c:478
 #, c-format
 msgid "%s: not a PE or NE library"
 msgstr "%s: not a PE or NE library"
 
-#: wrestool/restable.c:400
+#: wrestool/restable.c:412
 #, c-format
 msgid "%s: no resource directory found"
 msgstr "%s: no resource directory found"
 
-#: wrestool/restable.c:455
+#: wrestool/restable.c:468
 #, c-format
 msgid "%s: file contains no resources"
 msgstr "%s: file contains no resources"
Binary files /tmp/_uaDpX67gW/icoutils-0.31.1/po/en@quot.gmo and /tmp/f9PmotVM7d/icoutils-0.31.2/po/en@quot.gmo differ
diff -Nru icoutils-0.31.1/po/en@quot.po icoutils-0.31.2/po/en@quot.po
--- icoutils-0.31.1/po/en@quot.po	2017-01-08 14:46:32.000000000 +0000
+++ icoutils-0.31.2/po/en@quot.po	2017-03-06 21:34:48.000000000 +0000
@@ -27,10 +27,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: icoutils 0.31.1\n"
+"Project-Id-Version: icoutils 0.31.2\n"
 "Report-Msgid-Bugs-To: frank.richter@gmail.com\n"
-"POT-Creation-Date: 2017-01-08 15:40+0100\n"
-"PO-Revision-Date: 2017-01-08 15:40+0100\n"
+"POT-Creation-Date: 2017-03-06 22:34+0100\n"
+"PO-Revision-Date: 2017-03-06 22:34+0100\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
 "Language: en@quot\n"
@@ -312,11 +312,11 @@
 msgid "not a png file"
 msgstr "not a png file"
 
-#: icotool/create.c:125 icotool/extract.c:273 icotool/extract.c:449
+#: icotool/create.c:125 icotool/extract.c:289 icotool/extract.c:465
 msgid "cannot initialize PNG library"
 msgstr "cannot initialize PNG library"
 
-#: icotool/create.c:130 icotool/extract.c:278 icotool/extract.c:454
+#: icotool/create.c:130 icotool/extract.c:294 icotool/extract.c:470
 msgid "cannot create PNG info structure - out of memory"
 msgstr "cannot create PNG info structure - out of memory"
 
@@ -325,12 +325,12 @@
 msgid "cannot decrease bit depth from %d to %d, bit depth not changed"
 msgstr "cannot decrease bit depth from %d to %d, bit depth not changed"
 
-#: icotool/create.c:258 icotool/extract.c:191 icotool/extract.c:288
+#: icotool/create.c:258 icotool/extract.c:199 icotool/extract.c:304
 msgid "cannot create file"
 msgstr "cannot create file"
 
 #: icotool/create.c:267 icotool/create.c:309 icotool/create.c:319
-#: icotool/create.c:393 icotool/extract.c:199
+#: icotool/create.c:393 icotool/extract.c:207
 msgid "cannot write to file"
 msgstr "cannot write to file"
 
@@ -350,60 +350,72 @@
 msgid "reserved is not zero"
 msgstr "reserved is not zero"
 
-#: icotool/extract.c:178 icotool/extract.c:339
+#: icotool/extract.c:172
+msgid "PNG too large"
+msgstr "PNG too large"
+
+#: icotool/extract.c:186 icotool/extract.c:355
 #, c-format
 msgid "--%s --index=%d --width=%d --height=%d --bit-depth=%d --palette-size=%d"
 msgstr ""
 "--%s --index=%d --width=%d --height=%d --bit-depth=%d --palette-size=%d"
 
-#: icotool/extract.c:182 icotool/extract.c:343
+#: icotool/extract.c:190 icotool/extract.c:359
 #, c-format
 msgid " --hotspot-x=%d --hotspot-y=%d"
 msgstr " --hotspot-x=%d --hotspot-y=%d"
 
-#: icotool/extract.c:208
+#: icotool/extract.c:216
 msgid "bitmap header is too short"
 msgstr "bitmap header is too short"
 
-#: icotool/extract.c:212
+#: icotool/extract.c:220
 msgid "compressed image data not supported"
 msgstr "compressed image data not supported"
 
-#: icotool/extract.c:216
+#: icotool/extract.c:224
 msgid "x_pels_per_meter field in bitmap should be zero"
 msgstr "x_pels_per_meter field in bitmap should be zero"
 
-#: icotool/extract.c:218
+#: icotool/extract.c:226
 msgid "y_pels_per_meter field in bitmap should be zero"
 msgstr "y_pels_per_meter field in bitmap should be zero"
 
-#: icotool/extract.c:220
+#: icotool/extract.c:228
 msgid "clr_important field in bitmap should be zero"
 msgstr "clr_important field in bitmap should be zero"
 
-#: icotool/extract.c:222
+#: icotool/extract.c:230
 msgid "planes field in bitmap should be one"
 msgstr "planes field in bitmap should be one"
 
-#: icotool/extract.c:225
+#: icotool/extract.c:233
 #, c-format
 msgid "skipping %d bytes of extended bitmap header"
 msgstr "skipping %d bytes of extended bitmap header"
 
-#: icotool/extract.c:245
+#: icotool/extract.c:241
+msgid "palette too large"
+msgstr "palette too large"
+
+#: icotool/extract.c:250
+msgid "bitmap width too large"
+msgstr "bitmap width too large"
+
+#: icotool/extract.c:261
 #, c-format
 msgid "incorrect total size of bitmap (%d specified; %d real)"
 msgstr "incorrect total size of bitmap (%d specified; %d real)"
 
-#: icotool/extract.c:392
+#: icotool/extract.c:408
 msgid "offset of bitmap header incorrect (too low)"
 msgstr "offset of bitmap header incorrect (too low)"
 
-#: icotool/extract.c:396
+#: icotool/extract.c:412
 msgid "invalid data at expected offset (unrecoverable)"
 msgstr "invalid data at expected offset (unrecoverable)"
 
-#: icotool/extract.c:399
+#: icotool/extract.c:415
 #, c-format
 msgid "skipping %u bytes of garbage at %u"
 msgstr "skipping %u bytes of garbage at %u"
@@ -783,31 +795,31 @@
 msgid "%s: --language has no effect because file is 16-bit binary"
 msgstr "%s: --language has no effect because file is 16-bit binary"
 
-#: wrestool/restable.c:121
+#: wrestool/restable.c:132
 #, c-format
 msgid "--type=%s --name=%s%s%s [%s%s%soffset=0x%x size=%d]\n"
 msgstr "--type=%s --name=%s%s%s [%s%s%soffset=0x%x size=%d]\n"
 
-#: wrestool/restable.c:124
+#: wrestool/restable.c:135
 msgid " --language="
 msgstr " --language="
 
-#: wrestool/restable.c:318
+#: wrestool/restable.c:329
 #, c-format
 msgid "%s: resource table invalid, ignoring remaining entries"
 msgstr "%s: resource table invalid, ignoring remaining entries"
 
-#: wrestool/restable.c:384 wrestool/restable.c:465
+#: wrestool/restable.c:395 wrestool/restable.c:478
 #, c-format
 msgid "%s: not a PE or NE library"
 msgstr "%s: not a PE or NE library"
 
-#: wrestool/restable.c:400
+#: wrestool/restable.c:412
 #, c-format
 msgid "%s: no resource directory found"
 msgstr "%s: no resource directory found"
 
-#: wrestool/restable.c:455
+#: wrestool/restable.c:468
 #, c-format
 msgid "%s: file contains no resources"
 msgstr "%s: file contains no resources"
diff -Nru icoutils-0.31.1/po/icoutils.pot icoutils-0.31.2/po/icoutils.pot
--- icoutils-0.31.1/po/icoutils.pot	2017-01-08 14:40:55.000000000 +0000
+++ icoutils-0.31.2/po/icoutils.pot	2017-03-06 21:34:19.000000000 +0000
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: icoutils 0.31.1\n"
+"Project-Id-Version: icoutils 0.31.2\n"
 "Report-Msgid-Bugs-To: frank.richter@gmail.com\n"
-"POT-Creation-Date: 2017-01-08 15:40+0100\n"
+"POT-Creation-Date: 2017-03-06 22:34+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -259,11 +259,11 @@
 msgid "not a png file"
 msgstr ""
 
-#: icotool/create.c:125 icotool/extract.c:273 icotool/extract.c:449
+#: icotool/create.c:125 icotool/extract.c:289 icotool/extract.c:465
 msgid "cannot initialize PNG library"
 msgstr ""
 
-#: icotool/create.c:130 icotool/extract.c:278 icotool/extract.c:454
+#: icotool/create.c:130 icotool/extract.c:294 icotool/extract.c:470
 msgid "cannot create PNG info structure - out of memory"
 msgstr ""
 
@@ -272,12 +272,12 @@
 msgid "cannot decrease bit depth from %d to %d, bit depth not changed"
 msgstr ""
 
-#: icotool/create.c:258 icotool/extract.c:191 icotool/extract.c:288
+#: icotool/create.c:258 icotool/extract.c:199 icotool/extract.c:304
 msgid "cannot create file"
 msgstr ""
 
 #: icotool/create.c:267 icotool/create.c:309 icotool/create.c:319
-#: icotool/create.c:393 icotool/extract.c:199
+#: icotool/create.c:393 icotool/extract.c:207
 msgid "cannot write to file"
 msgstr ""
 
@@ -297,59 +297,71 @@
 msgid "reserved is not zero"
 msgstr ""
 
-#: icotool/extract.c:178 icotool/extract.c:339
+#: icotool/extract.c:172
+msgid "PNG too large"
+msgstr ""
+
+#: icotool/extract.c:186 icotool/extract.c:355
 #, c-format
 msgid "--%s --index=%d --width=%d --height=%d --bit-depth=%d --palette-size=%d"
 msgstr ""
 
-#: icotool/extract.c:182 icotool/extract.c:343
+#: icotool/extract.c:190 icotool/extract.c:359
 #, c-format
 msgid " --hotspot-x=%d --hotspot-y=%d"
 msgstr ""
 
-#: icotool/extract.c:208
+#: icotool/extract.c:216
 msgid "bitmap header is too short"
 msgstr ""
 
-#: icotool/extract.c:212
+#: icotool/extract.c:220
 msgid "compressed image data not supported"
 msgstr ""
 
-#: icotool/extract.c:216
+#: icotool/extract.c:224
 msgid "x_pels_per_meter field in bitmap should be zero"
 msgstr ""
 
-#: icotool/extract.c:218
+#: icotool/extract.c:226
 msgid "y_pels_per_meter field in bitmap should be zero"
 msgstr ""
 
-#: icotool/extract.c:220
+#: icotool/extract.c:228
 msgid "clr_important field in bitmap should be zero"
 msgstr ""
 
-#: icotool/extract.c:222
+#: icotool/extract.c:230
 msgid "planes field in bitmap should be one"
 msgstr ""
 
-#: icotool/extract.c:225
+#: icotool/extract.c:233
 #, c-format
 msgid "skipping %d bytes of extended bitmap header"
 msgstr ""
 
-#: icotool/extract.c:245
+#: icotool/extract.c:241
+msgid "palette too large"
+msgstr ""
+
+#: icotool/extract.c:250
+msgid "bitmap width too large"
+msgstr ""
+
+#: icotool/extract.c:261
 #, c-format
 msgid "incorrect total size of bitmap (%d specified; %d real)"
 msgstr ""
 
-#: icotool/extract.c:392
+#: icotool/extract.c:408
 msgid "offset of bitmap header incorrect (too low)"
 msgstr ""
 
-#: icotool/extract.c:396
+#: icotool/extract.c:412
 msgid "invalid data at expected offset (unrecoverable)"
 msgstr ""
 
-#: icotool/extract.c:399
+#: icotool/extract.c:415
 #, c-format
 msgid "skipping %u bytes of garbage at %u"
 msgstr ""
@@ -707,31 +719,31 @@
 msgid "%s: --language has no effect because file is 16-bit binary"
 msgstr ""
 
-#: wrestool/restable.c:121
+#: wrestool/restable.c:132
 #, c-format
 msgid "--type=%s --name=%s%s%s [%s%s%soffset=0x%x size=%d]\n"
 msgstr ""
 
-#: wrestool/restable.c:124
+#: wrestool/restable.c:135
 msgid " --language="
 msgstr ""
 
-#: wrestool/restable.c:318
+#: wrestool/restable.c:329
 #, c-format
 msgid "%s: resource table invalid, ignoring remaining entries"
 msgstr ""
 
-#: wrestool/restable.c:384 wrestool/restable.c:465
+#: wrestool/restable.c:395 wrestool/restable.c:478
 #, c-format
 msgid "%s: not a PE or NE library"
 msgstr ""
 
-#: wrestool/restable.c:400
+#: wrestool/restable.c:412
 #, c-format
 msgid "%s: no resource directory found"
 msgstr ""
 
-#: wrestool/restable.c:455
+#: wrestool/restable.c:468
 #, c-format
 msgid "%s: file contains no resources"
 msgstr ""
diff -Nru icoutils-0.31.1/wrestool/fileread.c icoutils-0.31.2/wrestool/fileread.c
--- icoutils-0.31.1/wrestool/fileread.c	2017-01-08 14:10:59.000000000 +0000
+++ icoutils-0.31.2/wrestool/fileread.c	2017-03-06 20:05:04.000000000 +0000
@@ -42,8 +42,8 @@
 	/*debug("check_offset: size=%x vs %x offset=%x size=%x\n",
 		need_size, total_size, (char *) offset - memory, size);*/
 
-	if (((memory <= memory_end) && (block <= block_end))
-		&& ((block < memory) || (block >= memory_end) || (block_end > memory_end))) {
+	if (((memory > memory_end) || (block > block_end))
+		|| (block < memory) || (block >= memory_end) || (block_end > memory_end)) {
 		warn(_("%s: premature end"), name);
 		return false;
 	}
diff -Nru icoutils-0.31.1/wrestool/restable.c icoutils-0.31.2/wrestool/restable.c
--- icoutils-0.31.1/wrestool/restable.c	2012-08-23 15:47:06.000000000 +0100
+++ icoutils-0.31.2/wrestool/restable.c	2017-03-06 21:10:52.000000000 +0000
@@ -41,6 +41,13 @@
 static WinResource *list_resources (WinLibrary *fi, WinResource *res, int *count);
 static bool compare_resource_id (WinResource *wr, char *id);
 
+/* Check whether access to a PE_SECTIONS is allowed */
+#define RETURN_IF_BAD_PE_SECTIONS(ret, module)                                              \
+    do {                                                                                    \
+        RETURN_IF_BAD_POINTER(ret, PE_HEADER(module)->optional_header);                     \
+        RETURN_IF_BAD_POINTER(ret, PE_HEADER(module)->file_header.size_of_optional_header); \
+    } while(0)
+
 /* do_resources:
  *   Do something for each resource matching type, name and lang.
  */
@@ -80,9 +87,13 @@
 	wr = list_resources (fi, base, &rescnt);
 	if (wr == NULL)
 		return;
+	if (!check_offset(fi->memory, fi->total_size, fi->name, &wr[0], sizeof(WinResource)))
+		return;
 
 	/* process each resource listed */
 	for (c = 0 ; c < rescnt ; c++) {
+		if (!check_offset(fi->memory, fi->total_size, fi->name, &wr[c], sizeof(WinResource)))
+			break;
 		/* (over)write the corresponding WinResource holder with the current */
 		memcpy(WINRESOURCE_BY_LEVEL(wr[c].level), wr+c, sizeof(WinResource));
 
@@ -223,7 +234,7 @@
 		/* translate id into a string */
 		snprintf(wr->id, WINRES_ID_MAXLEN, "%d", value & ~NE_RESOURCE_NAME_IS_NUMERIC);
 	} else {					/* ASCII string id */
-		int len;
+		unsigned char len;
 		char *mem = (char *) NE_HEADER(fi->memory)
 		                     + NE_HEADER(fi->memory)->rsrctab
 		                     + value;
@@ -388,6 +399,7 @@
 		/* falls through */
 	}
 
+	RETURN_IF_BAD_OFFSET(false, MZ_HEADER(fi->memory), sizeof(Win32ImageNTHeaders));
 	/* check for OS2 (Win16) header signature `NE' */
 	RETURN_IF_BAD_POINTER(false, NE_HEADER(fi->memory)->magic);
 	if (NE_HEADER(fi->memory)->magic == IMAGE_OS2_SIGNATURE) {
@@ -419,7 +431,7 @@
 
 		/* allocate new memory */
 		fi->total_size = calc_vma_size(fi);
-		if (fi->total_size == 0) {
+		if (fi->total_size <= 0) {
 			/* calc_vma_size has reported error */
 			return false;
 		}
@@ -427,7 +439,8 @@
 
 		/* relocate memory, start from last section */
 		pe_header = PE_HEADER(fi->memory);
-		RETURN_IF_BAD_POINTER(false, pe_header->file_header.number_of_sections);
+        RETURN_IF_BAD_POINTER(false, pe_header->file_header.number_of_sections);
+        RETURN_IF_BAD_PE_SECTIONS(false, fi->memory);
 
 		/* we don't need to do OFFSET checking for the sections.
 		 * calc_vma_size has already done that */
@@ -487,6 +500,7 @@
     if (segcount == 0)
     	return fi->total_size;
 
+    RETURN_IF_BAD_PE_SECTIONS(-1, fi->memory);
     seg = PE_SECTIONS(fi->memory);
     RETURN_IF_BAD_POINTER(-1, *seg);
     

unblock icoutils/0.31.2-1

Thanks,

-- 
Colin Watson                                       [cjwatson@debian.org]

--- End Message ---
--- Begin Message ---
Unblocked icoutils.

--- End Message ---

Reply to: