From a659f8281411dd285f3ade10e6042a7ce676de56 Mon Sep 17 00:00:00 2001 From: Naram Qashat Date: Tue, 3 Aug 2010 07:26:43 -0400 Subject: [PATCH] Fix str_is_ip() and str_is_cidr(), bug found by Cronus. --- src/misc.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/misc.cpp b/src/misc.cpp index b8689f888..66123701e 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -1210,7 +1210,7 @@ uint32 str_is_ip(const Anope::string &str) for (int i = 0; i < 4; ++i) { - octets[i] = convertTo(s, s, false); + octets[i] = s.empty() || !s.is_number_only() ? -1 : convertTo(s, s, false); /* Bail out if the octet is invalid or wrongly terminated */ if (octets[i] < 0 || octets[i] > 255 || (i < 3 && s[0] != '.')) return 0; @@ -1243,7 +1243,7 @@ bool str_is_cidr(const Anope::string &str, uint32 &ip, uint32 &mask, Anope::stri for (int i = 0; i < 4; ++i) { - octets[i] = convertTo(s, s, false); + octets[i] = s.empty() || !s.is_number_only() ? -1 : convertTo(s, s, false); /* Bail out if the octet is invalid or wrongly terminated */ if (octets[i] < 0 || octets[i] > 255 || (i < 3 && s[0] != '.')) return false;