From: Florian Forster Date: Thu, 18 Jun 2015 14:55:53 +0000 (+0200) Subject: Merge branch 'collectd-5.5' X-Git-Tag: collectd-5.6.0~676 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=1b15b227585497f72ab0e42d96d79c0313323bd4;hp=f995a5d563c2832553b7d172332028811a47db4a;p=collectd.git Merge branch 'collectd-5.5' --- diff --git a/src/Makefile.am b/src/Makefile.am index 1282f225..5868af59 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -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 diff --git a/src/daemon/collectd.c b/src/daemon/collectd.c index a708665d..46e13b3f 100644 --- a/src/daemon/collectd.c +++ b/src/daemon/collectd.c @@ -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 : ""); return (unlink (file)); } /* static int pidfile_remove (const char *file) */ #endif /* COLLECT_DAEMON */ diff --git a/src/daemon/configfile.c b/src/daemon/configfile.c index f34adae3..f367ee9c 100644 --- a/src/daemon/configfile.c +++ b/src/daemon/configfile.c @@ -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 */ @@ -759,6 +760,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); diff --git a/src/df.c b/src/df.c index a6fa526a..61964f3c 100644 --- 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) { diff --git a/src/modbus.c b/src/modbus.c index ae88f010..04abe04e 100644 --- a/src/modbus.c +++ b/src/modbus.c @@ -426,7 +426,7 @@ static int mb_read_data (mb_host_t *host, mb_slave_t *slave, /* {{{ */ uint16_t values[2]; int values_num; const data_set_t *ds; - int status; + int status = 0; if ((host == NULL) || (slave == NULL) || (data == NULL)) return (EINVAL); diff --git a/src/snmp.c b/src/snmp.c index 5c81ca19..9921d082 100644 --- a/src/snmp.c +++ b/src/snmp.c @@ -1419,6 +1419,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)); diff --git a/src/table.c b/src/table.c index c6b5badf..beded1ae 100644 --- a/src/table.c +++ b/src/table.c @@ -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); diff --git a/src/tail.c b/src/tail.c index 8445bc5f..751243bc 100644 --- a/src/tail.c +++ b/src/tail.c @@ -243,7 +243,7 @@ static int ctail_config_add_file (oconfig_item_t *ci) for (i = 0; i < ci->children_num; i++) { oconfig_item_t *option = ci->children + i; - int status; + int status = 0; if (strcasecmp ("Instance", option->key) == 0) status = cf_util_get_string (option, &plugin_instance); diff --git a/src/threshold.c b/src/threshold.c index 882f9553..a8900db7 100644 --- a/src/threshold.c +++ b/src/threshold.c @@ -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); diff --git a/src/utils_db_query.c b/src/utils_db_query.c index f29eabcd..9c84937f 100644 --- a/src/utils_db_query.c +++ b/src/utils_db_query.c @@ -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."); diff --git a/src/virt.c b/src/virt.c index b6fedf55..dff8f71d 100644 --- a/src/virt.c +++ b/src/virt.c @@ -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) {