CVE-2017-13089 wget stack overflow via negative chunked transfer encoding chunk size
d972e50c-0c21-4b86-add5-20b410c769f1
CVE-2017-13089 in GNU wget v1.19.1: Stack-based buffer overflow in HTTP chunked transfer encoding handling. skip_short_body() in src/http.c (lines 945-1020) declares a 513-byte stack buffer char dlbuf[SKIP_SIZE+1] (SKIP_SIZE=512) and reads chunked HTTP response bodies into it. The chunk size is parsed at line 973: remaining_chunk_size = strtol(line, &endl, 16); into a signed wgint. A malicious HTTP server can return a chunk-size line with a negative hex value (e.g. '-1') or a value that overflows signed long. The MIN(remaining_chunk_size, SKIP_SIZE) at line 984 and MIN(contlen, SKIP_SIZE) at line 989 use signed comparison, so the negative value passes through unchanged. fd_read(fd, dlbuf,