Control: tags -1 patch Hi,
On Mon, 01 May 2017 16:14:08 +0200 Salvatore Bonaccorso <car...@debian.org> wrote: > Source: rzip > Version: 2.1-1 > Severity: grave > Tags: security upstream > Justification: user security hole > > Hi, > > the following vulnerability was published for rzip, filled with RC > severity due to the heap overflow write, but no further investigation > done so far. > > CVE-2017-8364[0]: > | The read_buf function in stream.c in rzip 2.1 allows remote attackers > | to cause a denial of service (heap-based buffer overflow and > | application crash) or possibly have unspecified other impact via a > | crafted archive. openSUSE applied the attached patch, taken from the openSUSE leap 42.2 package [1]. Cheers, Emilio [1] http://download.opensuse.org/repositories/openSUSE:/Leap:/42.2:/Update/standard/src/rzip-2.1-151.3.1.src.rpm
Index: rzip-2.1/stream.c =================================================================== --- rzip-2.1.orig/stream.c +++ rzip-2.1/stream.c @@ -147,16 +147,16 @@ static int write_u32(int f, u32 v) return 0; } -static int read_buf(int f, uchar *p, int len) +static int read_buf(int f, uchar *p, unsigned int len) { int ret; ret = read(f, p, len); if (ret == -1) { - err_msg("Read of length %d failed - %s\n", len, strerror(errno)); + err_msg("Read of length %u failed - %s\n", len, strerror(errno)); return -1; } if (ret != len) { - err_msg("Partial read!? asked for %d bytes but got %d\n", len, ret); + err_msg("Partial read!? asked for %u bytes but got %d\n", len, ret); return -1; } return 0; @@ -399,7 +399,7 @@ static int fill_buffer(struct stream_inf if (sinfo->s[stream].buf) { free(sinfo->s[stream].buf); } - sinfo->s[stream].buf = malloc(u_len); + sinfo->s[stream].buf = malloc(c_len > u_len ? c_len : u_len); if (!sinfo->s[stream].buf) { return -1; }