diff options
author | Marius Bakke <mbakke@fastmail.com> | 2017-05-12 00:32:41 +0200 |
---|---|---|
committer | Marius Bakke <mbakke@fastmail.com> | 2017-05-12 00:40:28 +0200 |
commit | d231fe0a9b6354e281c916e3d91207f1648534e1 (patch) | |
tree | 1a85fea4bca0d1c05a19250d568bbb280fa4e001 /gnu/packages/patches | |
parent | 2253477e6f33224473451641573d78d430e7ecdf (diff) | |
download | guix-patches-d231fe0a9b6354e281c916e3d91207f1648534e1.tar guix-patches-d231fe0a9b6354e281c916e3d91207f1648534e1.tar.gz |
gnu: miniupnpc: Fix CVE-2017-8798.
* gnu/packages/patches/miniupnpc-CVE-2017-8798.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/upnp.scm (miniupnpc)[source]: Use it.
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r-- | gnu/packages/patches/miniupnpc-CVE-2017-8798.patch | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/gnu/packages/patches/miniupnpc-CVE-2017-8798.patch b/gnu/packages/patches/miniupnpc-CVE-2017-8798.patch new file mode 100644 index 0000000000..24eed60af9 --- /dev/null +++ b/gnu/packages/patches/miniupnpc-CVE-2017-8798.patch @@ -0,0 +1,55 @@ +Fix CVE-2017-8798. + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8798 +http://seclists.org/oss-sec/2017/q2/247 + +Patch copied from upstream source repository, with Changelog entry removed: + +https://github.com/miniupnp/miniupnp/commit/f0f1f4b22d6a98536377a1bb07e7c20e4703d229 + +diff --git a/miniwget.c b/miniwget.c +index 37cb47b..1eda57c 100644 +--- a/miniwget.c ++++ b/miniwget.c +@@ -284,11 +284,12 @@ getHTTPResponse(int s, int * size, int * status_code) + goto end_of_stream; + } + } +- bytestocopy = ((int)chunksize < (n - i))?chunksize:(unsigned int)(n - i); ++ /* it is guaranteed that (n >= i) */ ++ bytestocopy = (chunksize < (unsigned int)(n - i))?chunksize:(unsigned int)(n - i); + if((content_buf_used + bytestocopy) > content_buf_len) + { + char * tmp; +- if(content_length >= (int)(content_buf_used + bytestocopy)) { ++ if((content_length >= 0) && ((unsigned int)content_length >= (content_buf_used + bytestocopy))) { + content_buf_len = content_length; + } else { + content_buf_len = content_buf_used + bytestocopy; +@@ -313,14 +314,15 @@ getHTTPResponse(int s, int * size, int * status_code) + { + /* not chunked */ + if(content_length > 0 +- && (int)(content_buf_used + n) > content_length) { ++ && (content_buf_used + n) > (unsigned int)content_length) { + /* skipping additional bytes */ + n = content_length - content_buf_used; + } + if(content_buf_used + n > content_buf_len) + { + char * tmp; +- if(content_length >= (int)(content_buf_used + n)) { ++ if(content_length >= 0 ++ && (unsigned int)content_length >= (content_buf_used + n)) { + content_buf_len = content_length; + } else { + content_buf_len = content_buf_used + n; +@@ -340,7 +342,7 @@ getHTTPResponse(int s, int * size, int * status_code) + } + } + /* use the Content-Length header value if available */ +- if(content_length > 0 && (int)content_buf_used >= content_length) ++ if(content_length > 0 && content_buf_used >= (unsigned int)content_length) + { + #ifdef DEBUG + printf("End of HTTP content\n"); |