0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-11-17 16:48:43 +00:00

BGP: Custom attribute definitions should use cfg_alloc(), not malloc()

Otherwise we would get memory leaks.
This commit is contained in:
Ondrej Zajicek 2023-10-04 19:45:00 +02:00
parent d41b06238d
commit ab47c2ae46

View File

@ -369,8 +369,8 @@ custom_attr: ATTRIBUTE BGP NUM type symbol ';' {
if($3 > 255 || $3 < 1)
cf_error("Invalid attribute number. (Given %i, must be 1-255.)", $3);
if($4 != T_BYTESTRING)
cf_error("Attribute type must be bytestring, not %s.", f_type_name($4));
struct f_dynamic_attr* a = (struct f_dynamic_attr*) malloc(sizeof(struct f_dynamic_attr));
cf_error("Attribute type must be bytestring, not %s", f_type_name($4));
struct f_dynamic_attr *a = cfg_alloc(sizeof(struct f_dynamic_attr));
*a = f_new_dynamic_attr(f_type_attr($4), T_BYTESTRING, EA_CODE(PROTOCOL_BGP, $3));
a->flags = BAF_TRANSITIVE | BAF_OPTIONAL;
cf_define_symbol(new_config, $5, SYM_ATTRIBUTE, attribute, a);