From 7e56c85c02c547deda93ec09a589eae7e253fc58 Mon Sep 17 00:00:00 2001
From: Jesse Gross <jesse@nicira.com>
Date: Thu, 25 Feb 2010 09:02:26 -0500
Subject: [PATCH] collectors: Check for NULL set of collectors.

If the set of collectors for NetFlow or sFlow is empty due to
an error it will cause a crash when trying to send data.

Reported-by: Tetsuo NAKAGAWA <nakagawa@mxc.nes.nec.co.jp>
---
 ofproto/collectors.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/ofproto/collectors.c b/ofproto/collectors.c
index 4589f3298..f0639836e 100644
--- a/ofproto/collectors.c
+++ b/ofproto/collectors.c
@@ -111,13 +111,15 @@ collectors_destroy(struct collectors *c)
 void
 collectors_send(const struct collectors *c, const void *payload, size_t n)
 {
-    size_t i;
+    if (c) {
+        size_t i;
 
-    for (i = 0; i < c->n_fds; i++) {
-        static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5);
-        if (send(c->fds[i], payload, n, 0) == -1) {
-            VLOG_WARN_RL(&rl, "sending to collector failed: %s",
-                         strerror(errno));
+        for (i = 0; i < c->n_fds; i++) {
+            static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5);
+            if (send(c->fds[i], payload, n, 0) == -1) {
+                VLOG_WARN_RL(&rl, "sending to collector failed: %s",
+                             strerror(errno));
+            }
         }
     }
 }
@@ -125,5 +127,5 @@ collectors_send(const struct collectors *c, const void *payload, size_t n)
 int
 collectors_count(const struct collectors *c)
 {
-    return c->n_fds;
+    return c ? c->n_fds : 0;
 }
-- 
2.47.0