From 1678bc07467e6d977fc2f6bf830274ca92e0a6e5 Mon Sep 17 00:00:00 2001 From: "Ondrej Zajicek (work)" Date: Tue, 24 Nov 2020 03:42:23 +0100 Subject: [PATCH] Fix some failed asserts due to add_tail() When config structures are copied due to template application, we need to reset list node structure before calling add_tail(). Thanks to Mikael Magnusson for patches. --- conf/conf.c | 1 + nest/proto.c | 1 + proto/static/static.c | 1 + 3 files changed, 3 insertions(+) diff --git a/conf/conf.c b/conf/conf.c index b21d5213..6f64b541 100644 --- a/conf/conf.c +++ b/conf/conf.c @@ -573,6 +573,7 @@ cfg_copy_list(list *dest, list *src, unsigned node_size) { dn = cfg_alloc(node_size); memcpy(dn, sn, node_size); + memset(dn, 0, sizeof(node)); add_tail(dest, dn); } } diff --git a/nest/proto.c b/nest/proto.c index 41b3a6b9..748601c3 100644 --- a/nest/proto.c +++ b/nest/proto.c @@ -626,6 +626,7 @@ channel_copy_config(struct channel_config *src, struct proto_config *proto) struct channel_config *dst = cfg_alloc(src->channel->config_size); memcpy(dst, src, src->channel->config_size); + memset(&dst->n, 0, sizeof(node)); add_tail(&proto->channels, &dst->n); CALL(src->channel->copy_config, dst, src); diff --git a/proto/static/static.c b/proto/static/static.c index 7b22d49b..941e916f 100644 --- a/proto/static/static.c +++ b/proto/static/static.c @@ -643,6 +643,7 @@ static_copy_config(struct proto_config *dest, struct proto_config *src) { dnh = cfg_alloc(sizeof(struct static_route)); memcpy(dnh, snh, sizeof(struct static_route)); + memset(&dnh->n, 0, sizeof(node)); if (!drt) add_tail(&d->routes, &(dnh->n));