aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorselsta <selsta@sent.at>2025-08-25 00:53:24 +0200
committerselsta <selsta@sent.at>2025-08-31 00:13:55 +0200
commit7e3edc29c6653a585862bfbbf111433ecda0ee81 (patch)
treed9cc84bf90eae1c39dd4adc17b493a989bf3ae51 /contrib
parentd87edf57fcc4bc2279ad9d8a1db093805e6becd7 (diff)
downloadmonzero-core-7e3edc29c6653a585862bfbbf111433ecda0ee81.tar.gz
monzero-core-7e3edc29c6653a585862bfbbf111433ecda0ee81.tar.xz
monzero-core-7e3edc29c6653a585862bfbbf111433ecda0ee81.zip
epee: only parse valid port
Reported by hacksandhops and Ada Logic.
Diffstat (limited to 'contrib')
-rw-r--r--contrib/epee/src/net_parse_helpers.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/contrib/epee/src/net_parse_helpers.cpp b/contrib/epee/src/net_parse_helpers.cpp
index 2697bdac4..9440aba68 100644
--- a/contrib/epee/src/net_parse_helpers.cpp
+++ b/contrib/epee/src/net_parse_helpers.cpp
@@ -92,7 +92,13 @@ namespace net_utils
}
return true;
}
-
+
+ static bool parse_port(const std::string& port_str, uint64_t& out_port)
+ {
+ out_port = 0;
+ return boost::conversion::try_lexical_convert(port_str, out_port) && out_port <= 65535;
+ }
+
bool parse_uri(const std::string uri, http::uri_content& content)
{
@@ -153,7 +159,8 @@ namespace net_utils
}
if(result[6].matched)
{
- content.port = boost::lexical_cast<uint64_t>(result[6]);
+ if (!parse_port(result[6].str(), content.port))
+ return false;
}
if(result[7].matched)
{
@@ -191,7 +198,8 @@ namespace net_utils
}
if(result[6].matched)
{
- content.port = boost::lexical_cast<uint64_t>(result[6]);
+ if (!parse_port(result[6].str(), content.port))
+ return false;
}
if(result[7].matched)
{