mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-19 23:22:16 +03:00
fix plain post content containing special chars being parsed as arguments (#2241)
this solution actually keeps the content as is, as long as it's text (does not contain zeroes)
This commit is contained in:
parent
24f84664e7
commit
0d996ab75e
@ -190,11 +190,16 @@ bool ESP8266WebServer::_parseRequest(WiFiClient& client) {
|
||||
size_t decodedLen = decoded.length();
|
||||
memcpy(plainBuf, decoded.c_str(), decodedLen);
|
||||
plainBuf[decodedLen] = 0;
|
||||
} else {
|
||||
//plain post json or other data
|
||||
searchStr += "plain=";
|
||||
}
|
||||
searchStr += plainBuf;
|
||||
}
|
||||
_parseArguments(searchStr);
|
||||
if(!isEncoded){
|
||||
//plain post json or other data
|
||||
RequestArgument& arg = _currentArgs[_currentArgCount++];
|
||||
arg.key = "plain";
|
||||
arg.value = String(plainBuf);
|
||||
}
|
||||
|
||||
#ifdef DEBUG_ESP_HTTP_SERVER
|
||||
DEBUG_OUTPUT.print("Plain: ");
|
||||
DEBUG_OUTPUT.println(plainBuf);
|
||||
@ -202,8 +207,9 @@ bool ESP8266WebServer::_parseRequest(WiFiClient& client) {
|
||||
free(plainBuf);
|
||||
}
|
||||
}
|
||||
_parseArguments(searchStr);
|
||||
|
||||
if (isForm){
|
||||
_parseArguments(searchStr);
|
||||
if (!_parseForm(client, boundaryStr, contentLength)) {
|
||||
return false;
|
||||
}
|
||||
@ -269,6 +275,7 @@ void ESP8266WebServer::_parseArguments(String data) {
|
||||
_currentArgs = 0;
|
||||
if (data.length() == 0) {
|
||||
_currentArgCount = 0;
|
||||
_currentArgs = new RequestArgument[1];
|
||||
return;
|
||||
}
|
||||
_currentArgCount = 1;
|
||||
@ -285,7 +292,7 @@ void ESP8266WebServer::_parseArguments(String data) {
|
||||
DEBUG_OUTPUT.println(_currentArgCount);
|
||||
#endif
|
||||
|
||||
_currentArgs = new RequestArgument[_currentArgCount];
|
||||
_currentArgs = new RequestArgument[_currentArgCount+1];
|
||||
int pos = 0;
|
||||
int iarg;
|
||||
for (iarg = 0; iarg < _currentArgCount;) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user