[U-Boot] [PATCH v2 1/2] lib: net_utils: make string_to_ip stricter

Chris Packham judge.packham at gmail.com
Wed Jan 4 01:36:25 CET 2017


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 at gmail.com>
---
This was part of my long running IPv6 patchset (which I promise I'll get
back to someday). But I feel this stands on it's own merits.

Changes in v2:
- split into 2 patches

 lib/net_utils.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/lib/net_utils.c b/lib/net_utils.c
index cfae84275241..8f81e7801033 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) {
-- 
2.11.0.24.ge6920cf



More information about the U-Boot mailing list