/* add 1 to size since it will be incremented below */
if(multiply(amount, pat->c.set.size + 1))
return globerror(glob, "range overflow", 0, CURLE_URL_MALFORMAT);
-
+ done = TRUE;
FALLTHROUGH();
case ',':
if(pat->c.set.elem) {
- char **new_arr = realloc(pat->c.set.elem,
- (size_t)(pat->c.set.size + 1) *
- sizeof(char *));
- if(!new_arr)
+ char **arr;
+
+ if(pat->c.set.size >= (curl_off_t)(SIZE_T_MAX/(sizeof(char *))))
+ return globerror(glob, "range overflow", 0, CURLE_URL_MALFORMAT);
+
+ arr = realloc(pat->c.set.elem, (size_t)(pat->c.set.size + 1) *
+ sizeof(char *));
+ if(!arr)
return globerror(glob, NULL, 0, CURLE_OUT_OF_MEMORY);
- pat->c.set.elem = new_arr;
+ pat->c.set.elem = arr;
}
else
pat->c.set.elem = malloc(sizeof(char *));
++pat->c.set.size;
curlx_dyn_reset(&glob->buf);
- if(*pattern == '}') {
- pattern++; /* pass the closing brace */
- done = TRUE;
- continue;
- }
-
++pattern;
- ++(*posp);
+ if(!done)
+ ++(*posp);
break;
case ']': /* illegal closing bracket */