1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-06 04:31:29 +00:00

Correctly check for unsigned subtraction underflow.

This commit is contained in:
dmiller
2020-09-09 21:34:56 +00:00
parent 3521f15180
commit 9c1cfd8405

View File

@@ -1473,6 +1473,7 @@ bool DNS::Factory::ptrToIp(const std::string &ptr, sockaddr_storage &ip)
break;
}
u8 n = *p;
// First subtract base regardless of underflow:
if (n < 0x3A) { // 0-9
n -= 0x30;
}
@@ -1485,7 +1486,8 @@ bool DNS::Factory::ptrToIp(const std::string &ptr, sockaddr_storage &ip)
else { // invalid
return false;
}
if (n < 0) { // invalid
// Now catch any of the underflow conditions above:
if (n > 0xf) { // invalid
return false;
}
if (alt == 0) { // high nibble