Improve error checking in ParseIPRangeCIDR

This commit is contained in:
baldurk
2017-09-04 12:16:21 +01:00
parent d45f049763
commit 9810b4e0e6
2 changed files with 16 additions and 2 deletions
+8 -1
View File
@@ -344,6 +344,13 @@ bool ParseIPRangeCIDR(const char *str, uint32_t &ip, uint32_t &mask)
int ret = sscanf(str, "%u.%u.%u.%u/%u", &a, &b, &c, &d, &num);
if(ret != 5 || a > 255 || b > 255 || c > 255 || d > 255 || num > 32)
{
ip = 0;
mask = 0;
return false;
}
ip = MakeIP(a, b, c, d);
if(num == 0)
@@ -356,6 +363,6 @@ bool ParseIPRangeCIDR(const char *str, uint32_t &ip, uint32_t &mask)
mask = ((~0U) >> num) << num;
}
return ret == 5;
return true;
}
};
+8 -1
View File
@@ -358,6 +358,13 @@ bool ParseIPRangeCIDR(const char *str, uint32_t &ip, uint32_t &mask)
int ret = sscanf_s(str, "%u.%u.%u.%u/%u", &a, &b, &c, &d, &num);
if(ret != 5 || a > 255 || b > 255 || c > 255 || d > 255 || num > 32)
{
ip = 0;
mask = 0;
return false;
}
ip = MakeIP(a, b, c, d);
if(num == 0)
@@ -370,6 +377,6 @@ bool ParseIPRangeCIDR(const char *str, uint32_t &ip, uint32_t &mask)
mask = ((~0U) >> num) << num;
}
return ret == 5;
return true;
}
};