Merge branch 'collectd-5.4' into collectd-5.5
authorFlorian Forster <octo@collectd.org>
Thu, 18 Jun 2015 14:52:09 +0000 (16:52 +0200)
committerFlorian Forster <octo@collectd.org>
Thu, 18 Jun 2015 14:52:09 +0000 (16:52 +0200)
src/Makefile.am
src/daemon/collectd.c
src/daemon/configfile.c
src/df.c
src/snmp.c
src/table.c
src/threshold.c
src/utils_db_query.c
src/virt.c

index 9839c03..c718621 100644 (file)
@@ -954,7 +954,7 @@ pkglib_LTLIBRARIES += statsd.la
 statsd_la_SOURCES = statsd.c \
                     utils_latency.h utils_latency.c
 statsd_la_LDFLAGS = $(PLUGIN_LDFLAGS)
-statsd_la_LIBADD = -lpthread
+statsd_la_LIBADD = -lpthread -lm
 endif
 
 if BUILD_PLUGIN_SWAP
index a708665..46e13b3 100644 (file)
@@ -408,8 +408,9 @@ static int pidfile_create (void)
 static int pidfile_remove (void)
 {
        const char *file = global_option_get ("PIDFile");
+       if (file == NULL)
+               return 0;
 
-       DEBUG ("unlink (%s)", (file != NULL) ? file : "<null>");
        return (unlink (file));
 } /* static int pidfile_remove (const char *file) */
 #endif /* COLLECT_DAEMON */
index 765a23c..8fc6f7d 100644 (file)
@@ -156,9 +156,12 @@ static int cf_dispatch (const char *type, const char *orig_key,
        int ret;
        int i;
 
+       if (orig_key == NULL)
+               return (EINVAL);
+
        DEBUG ("type = %s, key = %s, value = %s",
                        ESCAPE_NULL(type),
-                       ESCAPE_NULL(orig_key),
+                       orig_key,
                        ESCAPE_NULL(orig_value));
 
        if ((cf_cb = cf_search (type)) == NULL)
@@ -199,8 +202,6 @@ static int cf_dispatch (const char *type, const char *orig_key,
        free (key);
        free (value);
 
-       DEBUG ("cf_dispatch: return (%i)", ret);
-
        return (ret);
 } /* int cf_dispatch */
 
@@ -754,6 +755,9 @@ static oconfig_item_t *cf_read_dir (const char *dir,
                filenames[filenames_num - 1] = sstrdup (name);
        }
 
+       if (filenames == NULL)
+               return (root);
+
        qsort ((void *) filenames, filenames_num, sizeof (*filenames),
                        cf_compare_string);
 
index a6fa526..61964f3 100644 (file)
--- a/src/df.c
+++ b/src/df.c
@@ -208,10 +208,11 @@ static int df_read (void)
                uint64_t blk_reserved;
                uint64_t blk_used;
 
-               if (ignorelist_match (il_device,
-                                       (mnt_ptr->spec_device != NULL)
-                                       ? mnt_ptr->spec_device
-                                       : mnt_ptr->device))
+               char const *dev = (mnt_ptr->spec_device != NULL)
+                       ? mnt_ptr->spec_device
+                       : mnt_ptr->device;
+
+               if (ignorelist_match (il_device, dev))
                        continue;
                if (ignorelist_match (il_mountpoint, mnt_ptr->dir))
                        continue;
@@ -234,10 +235,10 @@ static int df_read (void)
                if (by_device)
                {
                        /* eg, /dev/hda1  -- strip off the "/dev/" */
-                       if (strncmp (mnt_ptr->spec_device, "/dev/", strlen ("/dev/")) == 0)
-                               sstrncpy (disk_name, mnt_ptr->spec_device + strlen ("/dev/"), sizeof (disk_name));
+                       if (strncmp (dev, "/dev/", strlen ("/dev/")) == 0)
+                               sstrncpy (disk_name, dev + strlen ("/dev/"), sizeof (disk_name));
                        else
-                               sstrncpy (disk_name, mnt_ptr->spec_device, sizeof (disk_name));
+                               sstrncpy (disk_name, dev, sizeof (disk_name));
 
                        if (strlen(disk_name) < 1)
                        {
index 7e40392..260eff1 100644 (file)
@@ -1423,6 +1423,7 @@ static int csnmp_read_table (host_definition_t *host, data_definition_t *data)
         data->type, ds->ds_num, data->values_len);
     return (-1);
   }
+  assert (data->values_len > 0);
 
   /* We need a copy of all the OIDs, because GETNEXT will destroy them. */
   memcpy (oid_list, data->values, data->values_len * sizeof (oid_t));
index c6b5bad..beded1a 100644 (file)
@@ -283,8 +283,9 @@ static int tbl_config_table (oconfig_item_t *ci)
        if (NULL == tbl->sep) {
                log_err ("Table \"%s\" does not specify any separator.", tbl->file);
                status = 1;
+       } else {
+               strunescape (tbl->sep, strlen (tbl->sep) + 1);
        }
-       strunescape (tbl->sep, strlen (tbl->sep) + 1);
 
        if (NULL == tbl->instance) {
                tbl->instance = sstrdup (tbl->file);
index 882f955..a8900db 100644 (file)
@@ -519,8 +519,6 @@ static int ut_report_state (const data_set_t *ds,
           ": All data sources are within range again. "
           "Current value of \"%s\" is %f.",
           ds->ds[ds_index].name, values[ds_index]);
-    buf += status;
-    bufsize -= status;
   }
   else
   {
@@ -588,8 +586,6 @@ static int ut_report_state (const data_set_t *ds,
          (state == STATE_ERROR) ? "failure" : "warning",
          (values[ds_index] < min) ? min : max);
     }
-    buf += status;
-    bufsize -= status;
   }
 
   plugin_dispatch_notification (&n);
index f29eabc..9c84937 100644 (file)
@@ -202,8 +202,9 @@ static int udb_result_submit (udb_result_t *r, /* {{{ */
   assert (r != NULL);
   assert (r_area->ds != NULL);
   assert (((size_t) r_area->ds->ds_num) == r->values_num);
+  assert (r->values_num > 0);
 
-  vl.values = (value_t *) calloc (r_area->ds->ds_num, sizeof (value_t));
+  vl.values = (value_t *) calloc (r->values_num, sizeof (value_t));
   if (vl.values == NULL)
   {
     ERROR ("db query utils: malloc failed.");
index b6fedf5..dff8f71 100644 (file)
@@ -926,6 +926,9 @@ add_interface_device (virDomainPtr dom, const char *path, const char *address, u
     int new_size = sizeof (interface_devices[0]) * (nr_interface_devices+1);
     char *path_copy, *address_copy, number_string[15];
 
+    if ((path == NULL) || (address == NULL))
+        return EINVAL;
+
     path_copy = strdup (path);
     if (!path_copy) return -1;
 
@@ -961,6 +964,9 @@ ignore_device_match (ignorelist_t *il, const char *domname, const char *devpath)
     char *name;
     int n, r;
 
+    if ((domname == NULL) || (devpath == NULL))
+        return 0;
+
     n = sizeof (char) * (strlen (domname) + strlen (devpath) + 2);
     name = malloc (n);
     if (name == NULL) {