From 5cd2ba7ddccfa5a5c8fe0d001aa2eb454630a0e8 Mon Sep 17 00:00:00 2001
From: Duncan Idaho <dune.idaho@gmail.com>
Date: Sun, 22 Apr 2012 05:56:47 +0200
Subject: [PATCH 12/12] lib/ipmi_lanp.c - add checks to get_cmdline_ipaddr()
 Signed-off-by: Duncan Idaho <dune.idaho@gmail.com>

Commit adds input checks to function get_cmdline_ipaddr().
---
 lib/ipmi_lanp.c |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/lib/ipmi_lanp.c b/lib/ipmi_lanp.c
index 823cb61..3906ecd 100644
--- a/lib/ipmi_lanp.c
+++ b/lib/ipmi_lanp.c
@@ -1294,10 +1294,25 @@ static int
 get_cmdline_ipaddr(char * arg, uint8_t * buf)
 {
 	uint32_t ip1, ip2, ip3, ip4;
+
+	if (!arg || !buf) {
+		lprintf(LOG_ERR, "No IP address given.");
+		return (-1);
+	}
+
 	if (sscanf(arg, "%d.%d.%d.%d", &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) {
+		printf("Invalid IP address: %s", arg);
+		return (-1);
+	}
+
 	buf[0] = (uint8_t)ip1;
 	buf[1] = (uint8_t)ip2;
 	buf[2] = (uint8_t)ip3;
-- 
1.7.4.4

