summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Packham <judge.packham@gmail.com>2017-01-04 13:36:25 +1300
committerTom Rini <trini@konsulko.com>2017-01-14 16:47:11 -0500
commitd921ed9a2a553afe0c13638ed339ee42d4572935 (patch)
treeec3fdcbd07b4ea95cfd5a20dc000cdb24ddcf1dc
parent266aa86b04437d29d66d73c0205fae1480c9923f (diff)
lib: net_utils: make string_to_ip stricter
Previously values greater than 255 were implicitly truncated. Add some stricter checking to reject addresses with components >255. With the input "1234192.168.1.1" the old behaviour would truncate the address to 192.168.1.1. New behaviour rejects the string outright and returns 0.0.0.0, which for the purposes of IP addresses can be considered an error. Signed-off-by: Chris Packham <judge.packham@gmail.com>
-rw-r--r--lib/net_utils.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/net_utils.c b/lib/net_utils.c
index cfae8427524..8f81e780103 100644
--- a/lib/net_utils.c
+++ b/lib/net_utils.c
@@ -24,6 +24,10 @@ struct in_addr string_to_ip(const char *s)
for (addr.s_addr = 0, i = 0; i < 4; ++i) {
ulong val = s ? simple_strtoul(s, &e, 10) : 0;
+ if (val > 255) {
+ addr.s_addr = 0;
+ return addr;
+ }
addr.s_addr <<= 8;
addr.s_addr |= (val & 0xFF);
if (s) {