conntrack plugin: Strip newlie before calling parse_value().
authorFlorian Forster <octo@collectd.org>
Wed, 29 Feb 2012 19:47:08 +0000 (20:47 +0100)
committerFlorian Forster <octo@collectd.org>
Wed, 29 Feb 2012 19:48:39 +0000 (20:48 +0100)
Change-Id: Ifa4db20a6b937912db77a214d2c0ef3eeebfa164

src/conntrack.c

index 4d67712..33236c4 100644 (file)
@@ -49,11 +49,13 @@ static int conntrack_read (void)
        value_t conntrack;
        FILE *fh;
        char buffer[64];
+       size_t buffer_len;
 
        fh = fopen (CONNTRACK_FILE, "r");
        if (fh == NULL)
                return (-1);
 
+       memset (buffer, 0, sizeof (buffer));
        if (fgets (buffer, sizeof (buffer), fh) == NULL)
        {
                fclose (fh);
@@ -61,7 +63,15 @@ static int conntrack_read (void)
        }
        fclose (fh);
 
-       if (parse_value (buffer, &conntrack, DS_TYPE_GAUGE) == -1)
+       /* strip trailing newline. */
+       buffer_len = strlen (buffer);
+       while ((buffer_len > 0) && isspace ((int) buffer[buffer_len - 1]))
+       {
+               buffer[buffer_len - 1] = 0;
+               buffer_len--;
+       }
+
+       if (parse_value (buffer, &conntrack, DS_TYPE_GAUGE) != 0)
                return (-1);
 
        conntrack_submit (conntrack);