mirror of
https://git.gnunet.org/libmicrohttpd.git
synced 2026-09-25 04:09:31 +03:00
gen_auth: detect invalid Digest parameters without value the end of the string
This commit is contained in:
@@ -176,17 +176,22 @@ parse_dauth_params (const char *str,
|
||||
for (p = 0; p < sizeof(map) / sizeof(map[0]); p++)
|
||||
{
|
||||
struct dauth_token_param *const aparam = map + p;
|
||||
if ( (aparam->tk_name->len < left) &&
|
||||
if ( (aparam->tk_name->len <= left) &&
|
||||
MHD_str_equal_caseless_bin_n_ (str + i, aparam->tk_name->str,
|
||||
aparam->tk_name->len) &&
|
||||
(('=' == str[i + aparam->tk_name->len]) ||
|
||||
((aparam->tk_name->len == left) ||
|
||||
('=' == str[i + aparam->tk_name->len]) ||
|
||||
(' ' == str[i + aparam->tk_name->len]) ||
|
||||
('\t' == str[i + aparam->tk_name->len])) )
|
||||
('\t' == str[i + aparam->tk_name->len]) ||
|
||||
(',' == str[i + aparam->tk_name->len])) )
|
||||
{
|
||||
size_t value_start;
|
||||
size_t value_len;
|
||||
bool quoted; /* Only mark as "quoted" if backslash-escape used */
|
||||
|
||||
if (aparam->tk_name->len == left)
|
||||
return false; /* No equal sign after parameter name, broken data */
|
||||
|
||||
quoted = false;
|
||||
i += aparam->tk_name->len;
|
||||
/* Skip all whitespaces before '=' */
|
||||
|
||||
Reference in New Issue
Block a user