From b5ebd599b2d573385d0738c2a2cdc1cc00dc9a4d Mon Sep 17 00:00:00 2001 From: Sven Hoffmann Date: Sun, 5 Feb 2017 21:25:39 +0800 Subject: [PATCH] post processing: fix problem where hex cant straddle block correctly --- lib/server.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/server.c b/lib/server.c index ee5a255..4d44540 100644 --- a/lib/server.c +++ b/lib/server.c @@ -2413,6 +2413,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; @@ -2439,6 +2440,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'; @@ -2476,7 +2478,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) { @@ -2542,7 +2544,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; @@ -2552,7 +2554,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; -- 2.7.4