aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOndrej Zajicek <santiago@crfreenet.org>2023-10-04 19:45:00 +0200
committerOndrej Zajicek <santiago@crfreenet.org>2023-10-04 20:16:13 +0200
commitab47c2ae466f785212f0519388417ebb31b2cf24 (patch)
tree2d2efd6102462c03f5260a93ed8404935e0def15
parentd41b06238dc2167f8e470aa2fb31cb937ff8fb3e (diff)
downloadbird-ab47c2ae466f785212f0519388417ebb31b2cf24.tar.gz
BGP: Custom attribute definitions should use cfg_alloc(), not malloc()
Otherwise we would get memory leaks.
-rw-r--r--proto/bgp/config.Y4
1 files changed, 2 insertions, 2 deletions
diff --git a/proto/bgp/config.Y b/proto/bgp/config.Y
index e7a2f5cb..4e7d0329 100644
--- a/proto/bgp/config.Y
+++ b/proto/bgp/config.Y
@@ -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);