diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2016-10-03 17:27:16 +0200 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2016-10-31 08:46:35 +0100 | 
| commit | fbb5f1aa0326d485d5a7ac643b48481897ca667f (patch) | |
| tree | 08ffbd8e2c32dc3428ebeb3807f4853da150133c | |
| parent | 96a80b5a262fb6dd2ddcea7987296f3b9a405618 (diff) | |
range: prevent negative end number in a glob range
CVE-2016-8620
Bug: https://curl.haxx.se/docs/adv_20161102F.html
Reported-by: Luật Nguyễn
| -rw-r--r-- | src/tool_urlglob.c | 7 | 
1 files changed, 7 insertions, 0 deletions
diff --git a/src/tool_urlglob.c b/src/tool_urlglob.c index a357b8b56..64c75ba4f 100644 --- a/src/tool_urlglob.c +++ b/src/tool_urlglob.c @@ -257,6 +257,12 @@ static CURLcode glob_range(URLGlob *glob, char **patternp,          endp = NULL;        else {          pattern = endp+1; +        while(*pattern && ISBLANK(*pattern)) +          pattern++; +        if(!ISDIGIT(*pattern)) { +          endp = NULL; +          goto fail; +        }          errno = 0;          max_n = strtoul(pattern, &endp, 10);          if(errno || (*endp == ':')) { @@ -277,6 +283,7 @@ static CURLcode glob_range(URLGlob *glob, char **patternp,        }      } +    fail:      *posp += (pattern - *patternp);      if(!endp || (min_n > max_n) || (step_n > (max_n - min_n)) || !step_n)  | 
