From 49efe87d7ca63e6d15317cf30a096944770a9590 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Fri, 26 Jul 2024 00:16:12 +0300 Subject: [PATCH] more lenient path args access --- libraries/ESP8266WebServer/README.rst | 8 ++++---- libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h | 4 ++-- libraries/ESP8266WebServer/src/ESP8266WebServer.h | 2 +- libraries/ESP8266WebServer/src/detail/RequestHandler.h | 2 -- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/libraries/ESP8266WebServer/README.rst b/libraries/ESP8266WebServer/README.rst index 2c01ffe95f..5071db150b 100644 --- a/libraries/ESP8266WebServer/README.rst +++ b/libraries/ESP8266WebServer/README.rst @@ -110,10 +110,10 @@ Getting information about request arguments .. code:: cpp - const String & arg(); - const String & argName(); + const String & arg(int); + const String & argName(int); int args(); - bool hasArg(); + bool hasArg(const String&); ``arg`` - get request argument value, use ``arg("plain")`` to get POST body @@ -170,7 +170,7 @@ Getting information about request path arguments .. code:: cpp - const String & pathArg(unsigned int) const; + const String & pathArg(int) const; int pathArgs() const; ``pathArg`` - get request path argument by index (starting with 0) diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h b/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h index cc042f0e8e..57f5746d93 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h @@ -664,8 +664,8 @@ int ESP8266WebServerTemplate::pathArgs() const { } template -const String& ESP8266WebServerTemplate::pathArg(unsigned int i) const { - if (_currentHandler != nullptr) +const String& ESP8266WebServerTemplate::pathArg(int i) const { + if (i >= 0 && _currentHandler != nullptr && i < _currentHandler->pathArgsSize()) return _currentHandler->pathArg(i); return emptyString; } diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer.h b/libraries/ESP8266WebServer/src/ESP8266WebServer.h index b5f8118767..1d7dbebb48 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer.h +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer.h @@ -141,7 +141,7 @@ class ESP8266WebServerTemplate // Allows setting server options (i.e. SSL keys) by the instantiator ServerType &getServer() { return _server; } - const String& pathArg(unsigned int i) const; // get request path argument by number + const String& pathArg(int i) const; // get request path argument by number int pathArgs() const; // get path arguments count const String& arg(const String& name) const; // get request argument value by name diff --git a/libraries/ESP8266WebServer/src/detail/RequestHandler.h b/libraries/ESP8266WebServer/src/detail/RequestHandler.h index ed73c60d85..da28702450 100644 --- a/libraries/ESP8266WebServer/src/detail/RequestHandler.h +++ b/libraries/ESP8266WebServer/src/detail/RequestHandler.h @@ -3,7 +3,6 @@ #include #include -#include namespace esp8266webserver { @@ -79,7 +78,6 @@ class RequestHandler { } const String& pathArg(unsigned int i) const { - assert(i < pathArgs.size()); return pathArgs[i]; } };