stats_submitted = true;
- snprintf(type_instance, sizeof(type_instance), "%s-%s", tc_type, tc_inst);
+ int r = snprintf(type_instance, sizeof(type_instance), "%s-%s", tc_type,
+ tc_inst);
+ if (r >= sizeof(type_instance)) {
+ ERROR("netlink plugin: type_instance truncated to %zu bytes, need %d",
+ sizeof(type_instance), r);
+ return MNL_CB_ERROR;
+ }
if (q_stats.bs != NULL) {
submit_one(dev, "ipt_bytes", type_instance, q_stats.bs->bytes);
if (!stats_submitted && ts != NULL) {
char type_instance[DATA_MAX_NAME_LEN];
- snprintf(type_instance, sizeof(type_instance), "%s-%s", tc_type, tc_inst);
+ int r = snprintf(type_instance, sizeof(type_instance), "%s-%s", tc_type,
+ tc_inst);
+ if (r >= sizeof(type_instance)) {
+ ERROR("netlink plugin: type_instance truncated to %zu bytes, need %d",
+ sizeof(type_instance), r);
+ return MNL_CB_ERROR;
+ }
submit_one(dev, "ipt_bytes", type_instance, ts->bytes);
submit_one(dev, "ipt_packets", type_instance, ts->packets);
STATIC_ARRAY_SIZE(instances), "-");
instances_str[sizeof(instances_str) - 1] = '\0';
- vl.type_instance[sizeof(vl.type_instance) - 1] = '\0';
+ int r;
if (res->instance_prefix == NULL)
- strncpy(vl.type_instance, instances_str, sizeof(vl.type_instance));
+ r = snprintf(vl.type_instance, sizeof(vl.type_instance), "%s",
+ instances_str);
else
- snprintf(vl.type_instance, sizeof(vl.type_instance), "%s-%s",
- res->instance_prefix, instances_str);
-
- if (vl.type_instance[sizeof(vl.type_instance) - 1] != '\0') {
- vl.type_instance[sizeof(vl.type_instance) - 1] = '\0';
+ r = snprintf(vl.type_instance, sizeof(vl.type_instance), "%s-%s",
+ res->instance_prefix, instances_str);
+ if (r >= sizeof(vl.type_instance))
log_warn("Truncated type instance: %s.", vl.type_instance);
- }
}
plugin_dispatch_values(&vl);
for (i = 0; i < tbl->results_num; ++i)
if (tbl_result_dispatch(tbl, tbl->results + i, fields,
- STATIC_ARRAY_SIZE(fields)) != 0) {
+ STATIC_ARRAY_SIZE(fields)) != 0) {
log_err("Failed to dispatch result.");
continue;
}
struct interface_device *new_ptr;
int new_size =
sizeof(state->interface_devices[0]) * (state->nr_interface_devices + 1);
- char *path_copy, *address_copy, number_string[15];
+ char *path_copy, *address_copy, number_string[21];
if ((path == NULL) || (address == NULL))
return EINVAL;