properly handle error cases when kvm_read fails (#1094)
authorLandry Breuil <landry@rhaalovely.net>
Wed, 24 Jun 2015 04:48:16 +0000 (06:48 +0200)
committerFlorian Forster <octo@collectd.org>
Thu, 25 Jun 2015 20:35:58 +0000 (22:35 +0200)
src/tcpconns.c

index f4c61d5..bf07a2a 100644 (file)
@@ -931,7 +931,9 @@ static int conn_read (void)
   while (next != head)
   {
     /* Read the pcb pointed to by `next' into `inpcb' */
-    kread ((u_long) next, &inpcb, sizeof (inpcb));
+    status = kread ((u_long) next, &inpcb, sizeof (inpcb));
+    if (status != 0)
+      return (-1);
 
     /* Advance `next' */
     next = (struct inpcb *)CIRCLEQ_NEXT (&inpcb, inp_queue);
@@ -949,7 +951,9 @@ static int conn_read (void)
       continue;
 #endif
 
-    kread ((u_long) inpcb.inp_ppcb, &tcpcb, sizeof (tcpcb));
+    status = kread ((u_long) inpcb.inp_ppcb, &tcpcb, sizeof (tcpcb));
+    if (status != 0)
+      return (-1);
     conn_handle_ports (ntohs(inpcb.inp_lport), ntohs(inpcb.inp_fport), tcpcb.t_state);
   } /* while (next != head) */