Module Name: src
Committed By: roy
Date: Fri Apr 20 15:29:19 UTC 2018
Modified Files:
src/usr.sbin/rtadvd: config.c
Log Message:
Ensure that the soliciter list is initialised and freed correctly, even if it's
not used yet.
To generate a diff of this commit:
cvs rdiff -u -r1.38 -r1.39 src/usr.sbin/rtadvd/config.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.sbin/rtadvd/config.c
diff -u src/usr.sbin/rtadvd/config.c:1.38 src/usr.sbin/rtadvd/config.c:1.39
--- src/usr.sbin/rtadvd/config.c:1.38 Fri Apr 20 10:39:37 2018
+++ src/usr.sbin/rtadvd/config.c Fri Apr 20 15:29:19 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: config.c,v 1.38 2018/04/20 10:39:37 roy Exp $ */
+/* $NetBSD: config.c,v 1.39 2018/04/20 15:29:19 roy Exp $ */
/* $KAME: config.c,v 1.93 2005/10/17 14:40:02 suz Exp $ */
/*
@@ -104,6 +104,7 @@ encode_domain(char *dst, const char *src
void
free_rainfo(struct rainfo *rai)
{
+ struct soliciter *sol;
struct prefix *pfx;
struct rtinfo *rti;
struct rdnss *rdnss;
@@ -113,6 +114,11 @@ free_rainfo(struct rainfo *rai)
rtadvd_remove_timer(&rai->timer);
+ while ((sol = TAILQ_FIRST(&rai->soliciter))) {
+ TAILQ_REMOVE(&rai->soliciter, sol, next);
+ free(sol);
+ }
+
while ((pfx = TAILQ_FIRST(&rai->prefix))) {
TAILQ_REMOVE(&rai->prefix, pfx, next);
free(pfx);
@@ -206,6 +212,7 @@ getconfig(const char *intface, int exith
}
ELM_MALLOC(tmp);
+ TAILQ_INIT(&tmp->soliciter);
TAILQ_INIT(&tmp->prefix);
TAILQ_INIT(&tmp->route);
TAILQ_INIT(&tmp->rdnss);