weston-embedded/uC-HTTP

Incomplete query strings lead to lockup of request parser

Opened this issue · 1 comments

After the security fix in PR #14 incomplete query parameters (e.g. /test?foo=bar& or just /test?) lead to a lockup of the HTTP request parser: in HTTPsReq_Handle the value of RxBufLenRem stays at 1 with just the trailing CR (and LF) at RxBufPtr.

Before the patches RxBufLenRem was 0 at this point.

I'd suggest to add the following line
len_rd += len
here (between lines 1191 and 1193):

if (key_val_pair_len == 0u){ /* In the case it's null, the query has been fully ... */
*p_err = HTTPs_ERR_NONE; /* ...parsed and it has finished by a '&'. */
goto exit_update;
}

Hi peschuster

I believe this commit addresses the issue you reported: fa84fe9