diff options
author | sl1pkn07 | 2015-11-03 16:30:48 +0100 |
---|---|---|
committer | sl1pkn07 | 2015-11-03 16:33:42 +0100 |
commit | d1e584e41563a5ac0949fa2d3333603ea73b252b (patch) | |
tree | ff90d4ee6c94fb1fc34ffa856c87cd27089c63a4 /CVE-2014-9636_pt2.patch | |
parent | 16303db219bcd331538bb31b4101004a8e75e3b2 (diff) | |
download | aur-d1e584e41563a5ac0949fa2d3333603ea73b252b.tar.gz |
Fix FS#46955 and update patchset
Diffstat (limited to 'CVE-2014-9636_pt2.patch')
-rw-r--r-- | CVE-2014-9636_pt2.patch | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/CVE-2014-9636_pt2.patch b/CVE-2014-9636_pt2.patch new file mode 100644 index 000000000000..910b22d5634d --- /dev/null +++ b/CVE-2014-9636_pt2.patch @@ -0,0 +1,34 @@ +t a/list.c b/list.c +index f7359c3..4c3d703 100644 +--- a/list.c ++++ b/list.c +@@ -97,7 +97,7 @@ int list_files(__G) /* return PK-type error code */ + { + int do_this_file=FALSE, cfactor, error, error_in_archive=PK_COOL; + #ifndef WINDLL +- char sgn, cfactorstr[10]; ++ char sgn, cfactorstr[13]; + int longhdr=(uO.vflag>1); + #endif + int date_format; +@@ -339,7 +339,19 @@ int list_files(__G) /* return PK-type error code */ + 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/tracker/?func=detail ++ * &aid=2861648&group_id=118012&atid=679786 ++ * 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? */ |