diff options
| author | selsta <selsta@sent.at> | 2025-08-25 00:53:24 +0200 |
|---|---|---|
| committer | selsta <selsta@sent.at> | 2025-08-31 00:13:55 +0200 |
| commit | 7e3edc29c6653a585862bfbbf111433ecda0ee81 (patch) | |
| tree | d9cc84bf90eae1c39dd4adc17b493a989bf3ae51 /contrib | |
| parent | d87edf57fcc4bc2279ad9d8a1db093805e6becd7 (diff) | |
| download | monzero-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.cpp | 14 |
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) { |
