[patch]: Uninitialized list nodes
Ondrej Zajicek
santiago at crfreenet.org
Tue Nov 24 04:13:36 CET 2020
On Wed, Sep 09, 2020 at 12:42:24AM +0200, Mikael wrote:
> Hi,
>
> I have found two occurrences of uninitialized list nodes in bird's master
> branch.
>
> The following config causes asserts (when built with debugging).
Hi
Thanks, merged.
> # Router ID in IPv4 format
> router id 62.168.0.1;
>
> protocol device {
> interface "*";
> }
>
> # Static route feed
> template static t1 {
> ipv4 { export all; };
> route 10.0.0.0/24 unreachable;
> }
>
> protocol static from t1 {
> }
>
> The attached patches solves the problems.
>
> /Mikael
>
>
> >From 55fed9438e24303de1633472a2a03015106d8914 Mon Sep 17 00:00:00 2001
> From: Mikael Magnusson <mikma at users.sourceforge.net>
> Date: Wed, 13 May 2020 19:06:50 +0200
> Subject: [PATCH 1/2] Nest: Fix assert failed in channel_copy_config
>
> Initializing n in the copy of the channel config fixes:
> assertion 'n->prev == ((void *)0)' failed at ../lib/lists.c:79
> ---
> nest/proto.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/nest/proto.c b/nest/proto.c
> index 41b3a6b9..b7a5c673 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(struct node));
> add_tail(&proto->channels, &dst->n);
> CALL(src->channel->copy_config, dst, src);
>
> --
> 2.25.1
>
>
>
> >From ed0d3126bbd58ebb5ea0d11d9746f3ff817d16f6 Mon Sep 17 00:00:00 2001
> From: Mikael Magnusson <mikma at users.sourceforge.net>
> Date: Wed, 9 Sep 2020 00:28:03 +0200
> Subject: [PATCH 2/2] Nest: Fix assert failed in static_copy_config
>
> Initializing n in the copy of the static route fixes:
> assertion 'n->prev == ((void *)0)' failed at ../lib/lists.c:79
> ---
> proto/static/static.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/proto/static/static.c b/proto/static/static.c
> index 72b14991..06e9fb47 100644
> --- a/proto/static/static.c
> +++ b/proto/static/static.c
> @@ -589,6 +589,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(struct node));
>
> if (!drt)
> add_tail(&d->routes, &(dnh->n));
> --
> 2.25.1
>
>
>
--
Elen sila lumenn' omentielvo
Ondrej 'Santiago' Zajicek (email: santiago at crfreenet.org)
OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net)
"To err is human -- to blame it on a computer is even more so."
More information about the Bird-users
mailing list