nhttpd dürfte übermittelte URLs zu früh decodieren.
Schickt man ihm zB ein
"GET /control/message?nmsg=A%20%26%20B HTTP/1.1"
würde ich mir ein Messagefenster mit dem Inhalt "A & B" erwarten.
nhttpd konvertiert das allerdings zu "nmsg=A & B". Somit wird " B" zu einem zweiten Parameter und es erscheint nur ein "A " im Fenster.
IMO liegt der Wurm in der request.cpp in Funktion ParseFirstLine. Da heißt es:
Code: Alles auswählen
if((t = url.find('?')) > 0) // eventuellen Parameter inner URL finden
{
URL = url.substr(0,t);
Param_String = url.substr(t+1,url.length() - (t+1));
URLDecode(Param_String);
return ParseParams(Param_String);
}
Das URLDecode ist hier IMO zu früh und dürfte erst nach der Aufspaltung der Parameter erfolgen.
Servus, MASHtm