diff --git a/plugins/in_forward/fw.c b/plugins/in_forward/fw.c index 73a3b73fb06..77da340d81e 100644 --- a/plugins/in_forward/fw.c +++ b/plugins/in_forward/fw.c @@ -216,7 +216,7 @@ static int setup_users(struct flb_in_fw_config *ctx, /* Get first value (user's name) */ sentry = mk_list_entry_first(split, struct flb_split_entry, _head); - tmp = flb_sds_create_len(sentry->value, sentry->len + 1); + tmp = flb_sds_create_len(sentry->value, sentry->len); if (tmp == NULL) { delete_users(ctx); flb_free(user); @@ -230,13 +230,14 @@ static int setup_users(struct flb_in_fw_config *ctx, tmp = flb_sds_create_len(sentry->value, sentry->len); if (tmp == NULL) { delete_users(ctx); + flb_sds_destroy(user->name); flb_free(user); flb_utils_split_free(split); return -1; } user->password = tmp; - /* Release split */ + /* Release split - only after both allocations succeed */ flb_utils_split_free(split); /* Link to parent list */