Use strtoul for parsing positive hex numbers.

This commit is contained in:
Xie Han
2025-03-13 17:34:29 +08:00
parent acc64b6eed
commit b030e4e770
2 changed files with 5 additions and 6 deletions
+1 -1
View File
@@ -460,7 +460,7 @@ bool HttpChunkCursor::next(const void **chunk, size_t *size)
const char *cur = (const char *)this->pos;
char *end;
*size = strtol(cur, &end, 16);
*size = strtoul(cur, &end, 16);
if (*size == 0)
{
this->end = true;
+4 -5
View File
@@ -452,7 +452,7 @@ static int __parse_chunk_data(const char *ptr, size_t len,
{
char chunk_line[HTTP_CHUNK_LINE_MAX];
size_t min = MIN(HTTP_CHUNK_LINE_MAX, len);
long chunk_size;
size_t chunk_size;
char *end;
size_t i;
@@ -467,8 +467,7 @@ static int __parse_chunk_data(const char *ptr, size_t len,
if (ptr[i + 1] != '\n')
return -2;
chunk_line[i] = '\0';
chunk_size = strtol(chunk_line, &end, 16);
chunk_size = strtoul(chunk_line, &end, 16);
if (end == chunk_line)
return -2;
@@ -477,10 +476,10 @@ static int __parse_chunk_data(const char *ptr, size_t len,
chunk_size = i + 2;
parser->chunk_state = CPS_TRAILER_PART;
}
else if ((unsigned long)chunk_size < CHUNK_SIZE_MAX)
else if (chunk_size < CHUNK_SIZE_MAX)
{
chunk_size += i + 4;
if (len < (size_t)chunk_size)
if (len < chunk_size)
return 0;
}
else