From a238984d1b6e3422ff8dada49d45c4a130bbd48e Mon Sep 17 00:00:00 2001 From: Sven Hoffmann Date: Sun, 5 Feb 2017 22:12:33 +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 99ae7c56..a8f1f48d 100644 --- a/lib/server.c +++ b/lib/server.c @@ -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;