conntrack plugin: Strip newlie before calling parse_value().
[collectd.git] / 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);