From 7e376bb860e1820c44693fd8ff1f9ff29f7c5cda Mon Sep 17 00:00:00 2001 From: "Sergio R. Caprile" Date: Wed, 7 Jan 2026 10:33:34 -0300 Subject: [PATCH] avoid unlikely and harmless but possible read out of bounds --- mongoose.c | 2 +- src/str.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mongoose.c b/mongoose.c index 8c9ff01a..edb3c8f4 100644 --- a/mongoose.c +++ b/mongoose.c @@ -11172,7 +11172,7 @@ bool mg_match(struct mg_str s, struct mg_str p, struct mg_str *caps) { } else if (i < p.len && (p.buf[i] == '*' || p.buf[i] == '#')) { if (caps && !caps->buf) caps->len = 0, caps->buf = &s.buf[j]; // Init cap ni = i++, nj = j + 1; - } else if (nj > 0 && nj <= s.len && (p.buf[ni] == '#' || s.buf[j] != '/')) { + } else if (nj > 0 && nj <= s.len && ((ni < p.len && p.buf[ni] == '#') || s.buf[j] != '/')) { i = ni, j = nj; if (caps && caps->buf == NULL && caps->len == 0) { caps--, caps->len = 0; // Restart previous cap diff --git a/src/str.c b/src/str.c index db91fa6a..75a94489 100644 --- a/src/str.c +++ b/src/str.c @@ -87,7 +87,7 @@ bool mg_match(struct mg_str s, struct mg_str p, struct mg_str *caps) { } else if (i < p.len && (p.buf[i] == '*' || p.buf[i] == '#')) { if (caps && !caps->buf) caps->len = 0, caps->buf = &s.buf[j]; // Init cap ni = i++, nj = j + 1; - } else if (nj > 0 && nj <= s.len && (p.buf[ni] == '#' || s.buf[j] != '/')) { + } else if (nj > 0 && nj <= s.len && ((ni < p.len && p.buf[ni] == '#') || s.buf[j] != '/')) { i = ni, j = nj; if (caps && caps->buf == NULL && caps->len == 0) { caps--, caps->len = 0; // Restart previous cap