Merge pull request #3654 from cesanta/misc

remove redundant checks, clarify algorithm
This commit is contained in:
Sergio R. Caprile authored and GitHub committed 2026-07-30 09:52:50 -03:00
commit 125b79bd70
2 files changed
+8 -10

No files matched your search

+4 -5
View File
@@ -4629,15 +4629,14 @@ static bool is_hex_digit(int c) {
}
static int skip_chunk(const char *buf, int len, int *pl, int *dl) {
int i = 0, n = 0;
int i = 0, n = 0; // pass int to mg_str_to_num, treats as unsigned
if (len < 3) return 0;
while (i < len && is_hex_digit(buf[i])) i++;
if (i == 0) return -1; // Error, no length specified
if (i > (int) sizeof(int) * 2) return -1; // Chunk length is too big
if (i == 0) return -1; // Error, no length specified
if (len < i + 2 || buf[i] != '\r' || buf[i + 1] != '\n') return -1; // Error
if (mg_str_to_num(mg_str_n(buf, (size_t) i), 16, &n, sizeof(int)) == false)
if (mg_str_to_num(mg_str_n(buf, (size_t) i), 16, &n, sizeof(n)) == false)
return -1; // Decode chunk length, overflow
if (n < 0) return -1; // Error. TODO(): some checks now redundant
if (n < 0) return -1; // Chunk length is too big <0 = >0x80000000
if (n > len - i - 4) return 0; // Chunk not yet fully buffered
if (buf[i + n + 2] != '\r' || buf[i + n + 3] != '\n') return -1; // Error
*pl = i + 2, *dl = n;
+4 -5
View File
@@ -1114,15 +1114,14 @@ static bool is_hex_digit(int c) {
}
static int skip_chunk(const char *buf, int len, int *pl, int *dl) {
int i = 0, n = 0;
int i = 0, n = 0; // pass int to mg_str_to_num, treats as unsigned
if (len < 3) return 0;
while (i < len && is_hex_digit(buf[i])) i++;
if (i == 0) return -1; // Error, no length specified
if (i > (int) sizeof(int) * 2) return -1; // Chunk length is too big
if (i == 0) return -1; // Error, no length specified
if (len < i + 2 || buf[i] != '\r' || buf[i + 1] != '\n') return -1; // Error
if (mg_str_to_num(mg_str_n(buf, (size_t) i), 16, &n, sizeof(int)) == false)
if (mg_str_to_num(mg_str_n(buf, (size_t) i), 16, &n, sizeof(n)) == false)
return -1; // Decode chunk length, overflow
if (n < 0) return -1; // Error. TODO(): some checks now redundant
if (n < 0) return -1; // Chunk length is too big <0 = >0x80000000
if (n > len - i - 4) return 0; // Chunk not yet fully buffered
if (buf[i + n + 2] != '\r' || buf[i + n + 3] != '\n') return -1; // Error
*pl = i + 2, *dl = n;