projects
/
collectd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
plugin.c: fix potential null pointer dereference
[collectd.git]
/
src
/
daemon
/
plugin.c
diff --git
a/src/daemon/plugin.c
b/src/daemon/plugin.c
index
788b454
..
fa78fa0
100644
(file)
--- a/
src/daemon/plugin.c
+++ b/
src/daemon/plugin.c
@@
-368,13
+368,12
@@
static int create_register_callback (llist_t **list, /* {{{ */
{
callback_func_t *cf;
{
callback_func_t *cf;
- cf =
(callback_func_t *) malloc (
sizeof (*cf));
+ cf =
calloc (1,
sizeof (*cf));
if (cf == NULL)
{
if (cf == NULL)
{
- ERROR ("plugin: create_register_callback:
m
alloc failed.");
+ ERROR ("plugin: create_register_callback:
c
alloc failed.");
return (-1);
}
return (-1);
}
- memset (cf, 0, sizeof (*cf));
cf->cf_callback = callback;
if (ud == NULL)
cf->cf_callback = callback;
if (ud == NULL)
@@
-1244,14
+1243,13
@@
int plugin_register_read (const char *name,
read_func_t *rf;
int status;
read_func_t *rf;
int status;
- rf =
malloc (
sizeof (*rf));
+ rf =
calloc (1,
sizeof (*rf));
if (rf == NULL)
{
if (rf == NULL)
{
- ERROR ("plugin_register_read:
m
alloc failed.");
+ ERROR ("plugin_register_read:
c
alloc failed.");
return (ENOMEM);
}
return (ENOMEM);
}
- memset (rf, 0, sizeof (read_func_t));
rf->rf_callback = (void *) callback;
rf->rf_udata.data = NULL;
rf->rf_udata.free_func = NULL;
rf->rf_callback = (void *) callback;
rf->rf_udata.data = NULL;
rf->rf_udata.free_func = NULL;
@@
-1278,14
+1276,13
@@
int plugin_register_complex_read (const char *group, const char *name,
read_func_t *rf;
int status;
read_func_t *rf;
int status;
- rf =
malloc (
sizeof (*rf));
+ rf =
calloc (1,
sizeof (*rf));
if (rf == NULL)
{
if (rf == NULL)
{
- ERROR ("plugin_register_complex_read:
m
alloc failed.");
+ ERROR ("plugin_register_complex_read:
c
alloc failed.");
return (ENOMEM);
}
return (ENOMEM);
}
- memset (rf, 0, sizeof (read_func_t));
rf->rf_callback = (void *) callback;
if (group != NULL)
sstrncpy (rf->rf_group, group, sizeof (rf->rf_group));
rf->rf_callback = (void *) callback;
if (group != NULL)
sstrncpy (rf->rf_group, group, sizeof (rf->rf_group));
@@
-1343,7
+1340,7
@@
static void plugin_flush_timeout_callback_free (void *data)
static char *plugin_flush_callback_name (const char *name)
{
static char *plugin_flush_callback_name (const char *name)
{
- char *flush_prefix = "flush/";
+ c
onst c
har *flush_prefix = "flush/";
size_t prefix_size;
char *flush_name;
size_t name_size;
size_t prefix_size;
char *flush_name;
size_t name_size;
@@
-1351,7
+1348,7
@@
static char *plugin_flush_callback_name (const char *name)
prefix_size = strlen(flush_prefix);
name_size = strlen(name);
prefix_size = strlen(flush_prefix);
name_size = strlen(name);
- flush_name = malloc (
sizeof(char) * (name_size + prefix_size + 1)
);
+ flush_name = malloc (
name_size + prefix_size + 1
);
if (flush_name == NULL)
{
ERROR ("plugin_flush_callback_name: malloc failed.");
if (flush_name == NULL)
{
ERROR ("plugin_flush_callback_name: malloc failed.");
@@
-1384,7
+1381,7
@@
int plugin_register_flush (const char *name,
if (flush_name == NULL)
return (-1);
if (flush_name == NULL)
return (-1);
- cb = malloc(sizeof
(flush_callback_t
));
+ cb = malloc(sizeof
(*cb
));
if (cb == NULL)
{
ERROR ("plugin_register_flush: malloc failed.");
if (cb == NULL)
{
ERROR ("plugin_register_flush: malloc failed.");
@@
-1477,12
+1474,12
@@
int plugin_register_data_set (const data_set_t *ds)
return (-1);
}
return (-1);
}
- ds_copy =
(data_set_t *) malloc (sizeof (data_set_t
));
+ ds_copy =
malloc (sizeof (*ds_copy
));
if (ds_copy == NULL)
return (-1);
memcpy(ds_copy, ds, sizeof (data_set_t));
if (ds_copy == NULL)
return (-1);
memcpy(ds_copy, ds, sizeof (data_set_t));
- ds_copy->ds =
(data_source_t *) malloc (sizeof (data_source_t
)
+ ds_copy->ds =
malloc (sizeof (*ds_copy->ds
)
* ds->ds_num);
if (ds_copy->ds == NULL)
{
* ds->ds_num);
if (ds_copy->ds == NULL)
{
@@
-2091,8
+2088,10
@@
static int plugin_dispatch_values_internal (value_list_t *vl)
int free_meta_data = 0;
int free_meta_data = 0;
- if ((vl == NULL) || (vl->type[0] == 0)
- || (vl->values == NULL) || (vl->values_len < 1))
+ assert(vl);
+ assert(vl->plugin);
+
+ if (vl->type[0] == 0 || vl->values == NULL || vl->values_len < 1)
{
ERROR ("plugin_dispatch_values: Invalid value list "
"from plugin %s.", vl->plugin);
{
ERROR ("plugin_dispatch_values: Invalid value list "
"from plugin %s.", vl->plugin);
@@
-2357,7
+2356,7
@@
int plugin_dispatch_multivalue (value_list_t const *template, /* {{{ */
assert (template->values_len == 1);
assert (template->values_len == 1);
- /* Calculate sum for Gauge to calculate percent if needed */
+
/* Calculate sum for Gauge to calculate percent if needed */
if (DS_TYPE_GAUGE == store_type) {
va_start (ap, store_type);
while (42)
if (DS_TYPE_GAUGE == store_type) {
va_start (ap, store_type);
while (42)
@@
-2578,13
+2577,12
@@
static int plugin_notification_meta_add (notification_t *n,
return (-1);
}
return (-1);
}
- meta =
(notification_meta_t *) malloc (sizeof (notification_meta_t
));
+ meta =
calloc (1, sizeof (*meta
));
if (meta == NULL)
{
if (meta == NULL)
{
- ERROR ("plugin_notification_meta_add:
m
alloc failed.");
+ ERROR ("plugin_notification_meta_add:
c
alloc failed.");
return (-1);
}
return (-1);
}
- memset (meta, 0, sizeof (notification_meta_t));
sstrncpy (meta->name, name, sizeof (meta->name));
meta->type = type;
sstrncpy (meta->name, name, sizeof (meta->name));
meta->type = type;