From 9b85f1ff410b4ace6739854a40af86f9af259408 Mon Sep 17 00:00:00 2001 From: clyne Date: Thu, 15 Feb 2024 12:46:45 -0500 Subject: [PATCH] fix(webserver): Ignore extra headers within multipart forms Update subpart ("PostArg") parsing to ignore extra headers instead of silently failing. --- libraries/WebServer/src/Parsing.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/libraries/WebServer/src/Parsing.cpp b/libraries/WebServer/src/Parsing.cpp index f3b19b19d6e..44a01668980 100644 --- a/libraries/WebServer/src/Parsing.cpp +++ b/libraries/WebServer/src/Parsing.cpp @@ -368,10 +368,12 @@ bool WebServer::_parseForm(WiFiClient& client, String boundary, uint32_t len){ argType = FPSTR(mimeTable[txt].mimeType); line = client.readStringUntil('\r'); client.readStringUntil('\n'); - if (line.length() > 12 && line.substring(0, 12).equalsIgnoreCase(FPSTR(Content_Type))){ - argType = line.substring(line.indexOf(':')+2); - //skip next line - client.readStringUntil('\r'); + while (line.length() > 0) { + if (line.length() > 12 && line.substring(0, 12).equalsIgnoreCase(FPSTR(Content_Type))){ + argType = line.substring(line.indexOf(':')+2); + } + //skip over any other headers + line = client.readStringUntil('\r'); client.readStringUntil('\n'); } log_v("PostArg Type: %s", argType.c_str());