summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Yourtchenko <ayourtch@gmail.com>2017-03-16 12:24:24 +0000
committerOle Trøan <otroan@employees.org>2017-03-16 15:15:34 +0000
commit1b33fde6bdf54de22fb97f1b0a6730a40fd6560f (patch)
tree9e55c218317d1f9904fc4d64ce63d35f7c0c284e
parentb614d08368cc0b04e01c5222d4c11a88845394e5 (diff)
ping: Fix coverity error 163907
Return an error if the ip6_interface_first_address decides to return NULL. Change-Id: Iea0184382b8fbe2af81a781c3671687a1fbb5b32 Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
-rw-r--r--src/vnet/ip/ping.c5
-rw-r--r--src/vnet/ip/ping.h1
2 files changed, 6 insertions, 0 deletions
diff --git a/src/vnet/ip/ping.c b/src/vnet/ip/ping.c
index e4f2ee72f82..a2b96ab6289 100644
--- a/src/vnet/ip/ping.c
+++ b/src/vnet/ip/ping.c
@@ -307,6 +307,11 @@ send_ip6_ping (vlib_main_t * vm, ip6_main_t * im,
/* Fill in the correct source now */
ip6_address_t *a = ip6_interface_first_address (im, sw_if_index);
+ if (!a)
+ {
+ vlib_buffer_free (vm, &bi0, 1);
+ return SEND_PING_NO_SRC_ADDRESS;
+ }
h0->ip6.src_address = a[0];
/* Fill in icmp fields */
diff --git a/src/vnet/ip/ping.h b/src/vnet/ip/ping.h
index 1887314a93c..0af9d5871f1 100644
--- a/src/vnet/ip/ping.h
+++ b/src/vnet/ip/ping.h
@@ -32,6 +32,7 @@ typedef enum
SEND_PING_ALLOC_FAIL,
SEND_PING_NO_INTERFACE,
SEND_PING_NO_TABLE,
+ SEND_PING_NO_SRC_ADDRESS,
} send_ip46_ping_result_t;
/*