Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>lilik-openwrt-22.03
@ -0,0 +1,29 @@ | |||||
From: "Steven M. Schweda" <sms@antinode.info> | |||||
Subject: Fix CVE-2014-9913, buffer overflow in unzip | |||||
Bug: https://sourceforge.net/p/infozip/bugs/27/ | |||||
Bug-Debian: https://bugs.debian.org/847485 | |||||
Bug-Ubuntu: https://launchpad.net/bugs/387350 | |||||
X-Debian-version: 6.0-21 | |||||
--- a/list.c | |||||
+++ b/list.c | |||||
@@ -339,7 +339,18 @@ int list_files(__G) /* return PK-type | |||||
G.crec.compression_method == ENHDEFLATED) { | |||||
methbuf[5] = dtype[(G.crec.general_purpose_bit_flag>>1) & 3]; | |||||
} else if (methnum >= NUM_METHODS) { | |||||
- sprintf(&methbuf[4], "%03u", G.crec.compression_method); | |||||
+ /* 2013-02-26 SMS. | |||||
+ * http://sourceforge.net/p/infozip/bugs/27/ CVE-2014-9913. | |||||
+ * Unexpectedly large compression methods overflow | |||||
+ * &methbuf[]. Use the old, three-digit decimal format | |||||
+ * for values which fit. Otherwise, sacrifice the | |||||
+ * colon, and use four-digit hexadecimal. | |||||
+ */ | |||||
+ if (G.crec.compression_method <= 999) { | |||||
+ sprintf( &methbuf[ 4], "%03u", G.crec.compression_method); | |||||
+ } else { | |||||
+ sprintf( &methbuf[ 3], "%04X", G.crec.compression_method); | |||||
+ } | |||||
} | |||||
#if 0 /* GRR/Euro: add this? */ |
@ -0,0 +1,28 @@ | |||||
From: "Steven M. Schweda" <sms@antinode.info> | |||||
Subject: Fix CVE-2016-9844, buffer overflow in zipinfo | |||||
Bug-Debian: https://bugs.debian.org/847486 | |||||
Bug-Ubuntu: https://launchpad.net/bugs/1643750 | |||||
X-Debian-version: 6.0-21 | |||||
--- a/zipinfo.c | |||||
+++ b/zipinfo.c | |||||
@@ -1921,7 +1921,18 @@ static int zi_short(__G) /* return PK- | |||||
ush dnum=(ush)((G.crec.general_purpose_bit_flag>>1) & 3); | |||||
methbuf[3] = dtype[dnum]; | |||||
} else if (methnum >= NUM_METHODS) { /* unknown */ | |||||
- sprintf(&methbuf[1], "%03u", G.crec.compression_method); | |||||
+ /* 2016-12-05 SMS. | |||||
+ * https://launchpad.net/bugs/1643750 | |||||
+ * Unexpectedly large compression methods overflow | |||||
+ * &methbuf[]. Use the old, three-digit decimal format | |||||
+ * for values which fit. Otherwise, sacrifice the "u", | |||||
+ * and use four-digit hexadecimal. | |||||
+ */ | |||||
+ if (G.crec.compression_method <= 999) { | |||||
+ sprintf( &methbuf[ 1], "%03u", G.crec.compression_method); | |||||
+ } else { | |||||
+ sprintf( &methbuf[ 0], "%04X", G.crec.compression_method); | |||||
+ } | |||||
} | |||||
for (k = 0; k < 15; ++k) |