From 38933199e5dced69d163cf6914245cfcd01980fa Mon Sep 17 00:00:00 2001 From: Bryce Kwon Date: Mon, 21 Sep 2026 06:13:55 -1000 Subject: Read every query parameter A parameter without a value swallowed the parameter after it. --- source/html.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'source/html.c') diff --git a/source/html.c b/source/html.c index b97fdbb..5972d97 100644 --- a/source/html.c +++ b/source/html.c @@ -394,8 +394,10 @@ void http_parse_querystring(const char *txt, void (*fn)(const char *name, const while (p && *p) { char *name = url_decode_parameter_name(&p); + // A name ends at an equals sign or an ampersand, and only the + // first is followed by a value. if (*name) { - char *value = url_decode_parameter_value(&p); + char *value = p[-1] == '=' ? url_decode_parameter_value(&p) : xstrdup(""); fn(name, value); free(value); } -- cgit v2.8.0