From 5e705bd5059da5b7a39e3a096b7c7f59cb466730 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Tue, 20 Apr 2021 13:12:38 +0000 Subject: [Network] Solve type mismatch in AllowPort(). Casting it to an int16_t was wrong and would preclude the check for high port numbers (due to overflow). This makes the type matching, but adds an explicit check to ensure the port number passed in is within a valid range. --- netwerk/base/nsIOService.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'netwerk') diff --git a/netwerk/base/nsIOService.cpp b/netwerk/base/nsIOService.cpp index a953dc78c1..55f40a41ef 100644 --- a/netwerk/base/nsIOService.cpp +++ b/netwerk/base/nsIOService.cpp @@ -1203,13 +1203,14 @@ nsIOService::SetConnectivityInternal(bool aConnectivity) NS_IMETHODIMP nsIOService::AllowPort(int32_t inPort, const char *scheme, bool *_retval) { - int16_t port = inPort; + int32_t port = inPort; if (port == -1) { *_retval = true; return NS_OK; } - if (port == 0) { + // Ensure the port number is within a valid range + if (port <= 0 || port >= std::numeric_limits::max()) { *_retval = false; return NS_OK; } -- cgit v1.2.3