X-Git-Url: https://git.octo.it/?a=blobdiff_plain;ds=sidebyside;f=src%2Fsnmp.c;h=5ad8b60315f9a6298634c85302a9cc41e83d53e3;hb=c0a95e555ed8b58af9ff9e476ce1c13241a21ae3;hp=51afea1b14e644b9a1b4c478a9883b65dbbe69ac;hpb=cce136946b879557f91183e4de58e92b81e138c8;p=collectd.git diff --git a/src/snmp.c b/src/snmp.c index 51afea1b..5ad8b603 100644 --- a/src/snmp.c +++ b/src/snmp.c @@ -61,7 +61,7 @@ struct data_definition_s instance_t instance; char *instance_prefix; oid_t *values; - int values_len; + size_t values_len; double scale; double shift; struct data_definition_s *next; @@ -313,7 +313,7 @@ static int csnmp_config_add_data_values (data_definition_t *dd, oconfig_item_t * dd->values = (oid_t *) malloc (sizeof (oid_t) * ci->values_num); if (dd->values == NULL) return (-1); - dd->values_len = ci->values_num; + dd->values_len = (size_t) ci->values_num; for (i = 0; i < ci->values_num; i++) { @@ -402,7 +402,6 @@ static int csnmp_config_add_data (oconfig_item_t *ci) for (i = 0; i < ci->children_num; i++) { oconfig_item_t *option = ci->children + i; - status = 0; if (strcasecmp ("Type", option->key) == 0) status = cf_util_get_string(option, &dd->type); @@ -460,7 +459,7 @@ static int csnmp_config_add_data (oconfig_item_t *ci) return (-1); } - DEBUG ("snmp plugin: dd = { name = %s, type = %s, is_table = %s, values_len = %i }", + DEBUG ("snmp plugin: dd = { name = %s, type = %s, is_table = %s, values_len = %zu }", dd->name, dd->type, (dd->is_table != 0) ? "true" : "false", dd->values_len); if (data_head == NULL) @@ -1221,7 +1220,7 @@ static int csnmp_dispatch_table (host_definition_t *host, data_definition_t *dat csnmp_list_instances_t *instance_list_ptr; csnmp_table_values_t **value_table_ptr; - int i; + size_t i; _Bool have_more; oid_t current_suffix; @@ -1232,16 +1231,17 @@ static int csnmp_dispatch_table (host_definition_t *host, data_definition_t *dat return (-1); } assert (ds->ds_num == data->values_len); + assert (data->values_len > 0); instance_list_ptr = instance_list; - value_table_ptr = malloc (sizeof (*value_table_ptr) * data->values_len); + value_table_ptr = calloc (data->values_len, sizeof (*value_table_ptr)); if (value_table_ptr == NULL) return (-1); for (i = 0; i < data->values_len; i++) value_table_ptr[i] = value_table[i]; - vl.values_len = ds->ds_num; + vl.values_len = data->values_len; vl.values = malloc (sizeof (*vl.values) * vl.values_len); if (vl.values == NULL) { @@ -1416,10 +1416,11 @@ static int csnmp_read_table (host_definition_t *host, data_definition_t *data) if (ds->ds_num != data->values_len) { - ERROR ("snmp plugin: DataSet `%s' requires %i values, but config talks about %i", + ERROR ("snmp plugin: DataSet `%s' requires %zu values, but config talks about %zu", 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)); @@ -1519,7 +1520,7 @@ static int csnmp_read_table (host_definition_t *host, data_definition_t *data) for (vb = res->variables, i = 0; (vb != NULL); vb = vb->next_variable, i++) { /* Calculate value index from todo list */ - while (!oid_list_todo[i] && (i < oid_list_len)) + while ((i < oid_list_len) && !oid_list_todo[i]) i++; /* An instance is configured and the res variable we process is the @@ -1679,7 +1680,7 @@ static int csnmp_read_value (host_definition_t *host, data_definition_t *data) if (ds->ds_num != data->values_len) { - ERROR ("snmp plugin: DataSet `%s' requires %i values, but config talks about %i", + ERROR ("snmp plugin: DataSet `%s' requires %zu values, but config talks about %zu", data->type, ds->ds_num, data->values_len); return (-1); }