[U-Boot,RFC,v2,3/5] lib/net_utils.c: make string_to_ip stricter

Submitted by Chris Packham on Jan. 18, 2013, 1:35 a.m.

Details

Message ID 1358472932-32083-4-git-send-email-judge.packham@gmail.com
State RFC
Headers show

Commit Message

Chris Packham Jan. 18, 2013, 1:35 a.m.
From: Chris Packham <chris.packham@alliedtelesis.co.nz>

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, which for the purposes of IP addresses can be considered an
error.

Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
---
Changes in v2: None

 lib/net_utils.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Patch hide | download patch | download mbox

diff --git a/lib/net_utils.c b/lib/net_utils.c
index b425a68..2b20ccb 100644
--- a/lib/net_utils.c
+++ b/lib/net_utils.c
@@ -39,8 +39,9 @@  IPaddr_t string_to_ip(const char *s)
 
 	for (addr=0, i=0; i<4; ++i) {
 		ulong val = s ? simple_strtoul(s, &e, 10) : 0;
+		if (val > 255)
+			return 0;
 		addr <<= 8;
-		addr |= (val & 0xFF);
 		if (s) {
 			s = (*e) ? e+1 : e;
 		}