From 8187c76943af03d7d3ae9fa11cb85cc7c5860520 Mon Sep 17 00:00:00 2001 From: Andy Green Date: Tue, 4 Oct 2016 08:24:00 +0800 Subject: [PATCH] post form parsing fix retry as new boundary start needed after mismatching boundary https://github.com/warmcat/libwebsockets/issues/641 --- lib/server.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/server.c b/lib/server.c index 78a81dae..cc67e73b 100644 --- a/lib/server.c +++ b/lib/server.c @@ -2288,6 +2288,7 @@ lws_urldecode_s_process(struct lws_urldecode_stateful *s, const char *in, int le /* states for multipart / mime style */ case MT_LOOK_BOUND_IN: +retry_as_first: if (*in == s->mime_boundary[s->mp] && s->mime_boundary[s->mp]) { in++; @@ -2314,8 +2315,11 @@ lws_urldecode_s_process(struct lws_urldecode_stateful *s, const char *in, int le n = 0; if (!s->boundary_real_crlf) n = 2; + memcpy(s->out + s->pos, s->mime_boundary + n, s->mp - n); s->pos += s->mp; + s->mp = 0; + goto retry_as_first; } s->out[s->pos++] = *in;