From 4faa3d5bf1cc3a5928e53e40353f536c26024b94 Mon Sep 17 00:00:00 2001 From: "Sergio R. Caprile" Date: Wed, 29 Jul 2026 13:50:32 -0300 Subject: [PATCH] remove redundant checks --- mongoose.c | 9 ++++----- src/http.c | 9 ++++----- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/mongoose.c b/mongoose.c index e1ce83cf..10d13e65 100644 --- a/mongoose.c +++ b/mongoose.c @@ -4630,15 +4630,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; diff --git a/src/http.c b/src/http.c index d5e73274..bab0d8bd 100644 --- a/src/http.c +++ b/src/http.c @@ -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;