X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fhttp%2Fipagehandler.cpp;h=c4ebbb9c2aceb469754fcc0b745d82e7d3af81b8;hb=b9c3763a932cebaa015a27fe111017f6f34dfbaa;hp=fc778158b7d4aebd9f2530587a793c626dc3e889;hpb=f208e33c29132aacaec448e74341edea1b925a2a;p=fms.git diff --git a/src/http/ipagehandler.cpp b/src/http/ipagehandler.cpp index fc77815..c4ebbb9 100644 --- a/src/http/ipagehandler.cpp +++ b/src/http/ipagehandler.cpp @@ -81,7 +81,7 @@ const bool IPageHandler::Handle(shttpd_arg *arg) // we have all POST data (or it was 0 to begin with) - generate the page if(mystate->m_indatalen==mystate->m_indatapos && mystate->m_outdata==NULL) { - //TODO parse POST data and any QUERY_STRING before generating page + //parse POST data and any QUERY_STRING before generating page std::map args; std::vector argparts; @@ -99,9 +99,13 @@ const bool IPageHandler::Handle(shttpd_arg *arg) StringFunctions::Split((*argi),"=",parts); if(parts.size()>0) { + // replace + with space before UriDecoding + parts[0]=StringFunctions::Replace(parts[0],"+"," "); args[StringFunctions::UriDecode(parts[0])]; if(parts.size()>1) { + // replace + with space before UriDecoding + parts[1]=StringFunctions::Replace(parts[1],"+"," "); args[StringFunctions::UriDecode(parts[0])]=StringFunctions::UriDecode(parts[1]); } } @@ -149,3 +153,14 @@ const bool IPageHandler::Handle(shttpd_arg *arg) return false; } } + +const std::string IPageHandler::SanitizeOutput(const std::string &input) +{ + // must do & first because all other elements have & in them! + std::string output=StringFunctions::Replace(input,"&","&"); + output=StringFunctions::Replace(output,"<","<"); + output=StringFunctions::Replace(output,">",">"); + output=StringFunctions::Replace(output,"\"","""); + output=StringFunctions::Replace(output," "," "); + return output; +}