From d36cfcb817b56396198b9794712cf1c33f59a9cd Mon Sep 17 00:00:00 2001 From: Zdenek Styblik Date: Sat, 17 Jan 2015 12:25:50 +0100 Subject: [PATCH] ID:355 - Fix formatting warning in get_cmdline_ipaddr() Commit also adds validation prior casting down to uint8_t. --- lib/ipmi_lanp.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/ipmi_lanp.c b/lib/ipmi_lanp.c index 11e0d9c..1357ffb 100644 --- a/lib/ipmi_lanp.c +++ b/lib/ipmi_lanp.c @@ -1255,9 +1255,16 @@ static int get_cmdline_ipaddr(char * arg, uint8_t * buf) { uint32_t ip1, ip2, ip3, ip4; - if (sscanf(arg, "%d.%d.%d.%d", &ip1, &ip2, &ip3, &ip4) != 4) { + if (sscanf(arg, + "%" PRIu32 ".%" PRIu32 ".%" PRIu32 ".%" PRIu32, + &ip1, &ip2, &ip3, &ip4) != 4) { lprintf(LOG_ERR, "Invalid IP address: %s", arg); - return -1; + return (-1); + } + if (ip1 > UINT8_MAX || ip2 > UINT8_MAX + || ip3 > UINT8_MAX || ip4 > UINT8_MAX) { + lprintf(LOG_ERR, "Invalid IP address: %s", arg); + return (-1); } buf[0] = (uint8_t)ip1; buf[1] = (uint8_t)ip2;