post processing: fix problem where hex cant straddle block correctly

This commit is contained in:
Sven Hoffmann 2017-02-05 22:12:33 +08:00 committed by Andy Green
parent 109d66c365
commit a238984d1b

View file

@ -2157,6 +2157,7 @@ struct lws_urldecode_stateful {
int pos;
int hdr_idx;
int mp;
int sum;
unsigned int multipart_form_data:1;
unsigned int inside_quote:1;
@ -2183,6 +2184,7 @@ lws_urldecode_s_create(struct lws *wsi, char *out, int out_len, void *data,
s->out_len = out_len;
s->output = output;
s->pos = 0;
s->sum = 0;
s->mp = 0;
s->state = US_NAME;
s->name[0] = '\0';
@ -2220,7 +2222,7 @@ static int
lws_urldecode_s_process(struct lws_urldecode_stateful *s, const char *in, int len)
{
int n, m, hit = 0;
char sum = 0, c, was_end = 0;
char c, was_end = 0;
while (len--) {
if (s->pos == s->out_len - s->mp - 1) {
@ -2286,7 +2288,7 @@ lws_urldecode_s_process(struct lws_urldecode_stateful *s, const char *in, int le
return -1;
in++;
sum = n << 4;
s->sum = n << 4;
s->state++;
break;
@ -2296,7 +2298,7 @@ lws_urldecode_s_process(struct lws_urldecode_stateful *s, const char *in, int le
return -1;
in++;
s->out[s->pos++] = sum | n;
s->out[s->pos++] = s->sum | n;
s->state = US_IDLE;
break;