|
@@ -1,59 +0,0 @@
|
|
|
-From f0f1f4b22d6a98536377a1bb07e7c20e4703d229 Mon Sep 17 00:00:00 2001
|
|
|
-From: Thomas Bernard <miniupnp@free.fr>
|
|
|
-Date: Tue, 9 May 2017 12:00:47 +0200
|
|
|
-Subject: [PATCH] miniupnpc: Fix CVE-2017-8798
|
|
|
-
|
|
|
-Thanks to tin/Team OSTStrom
|
|
|
-
|
|
|
-[Peter: drop Changelog.txt modification, convert to -p1 format]
|
|
|
-Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
|
|
----
|
|
|
- miniupnpc/miniwget.c | 12 +++++++-----
|
|
|
- 1 file changed, 9 insertions(+), 5 deletions(-)
|
|
|
-
|
|
|
-diff --git a/miniwget.c b/miniwget.c
|
|
|
-index 37cb47b7..1eda57c5 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");
|