svn commit: r222820 - head/usr.sbin/rtadvd
Hiroki Sato
hrs at FreeBSD.org
Tue Jun 7 12:00:29 UTC 2011
Author: hrs
Date: Tue Jun 7 12:00:29 2011
New Revision: 222820
URL: http://svn.freebsd.org/changeset/base/222820
Log:
- Use ELM_MALLOC() for struct rainfo.
- Fix a missing back pointer assignment in struct prefix to struct rainfo
when addr="" is specified. This caused SIGSEGV.
- Insert a prefix element to a tail queue after setting parameters.
Modified:
head/usr.sbin/rtadvd/config.c
Modified: head/usr.sbin/rtadvd/config.c
==============================================================================
--- head/usr.sbin/rtadvd/config.c Tue Jun 7 11:11:11 2011 (r222819)
+++ head/usr.sbin/rtadvd/config.c Tue Jun 7 12:00:29 2011 (r222820)
@@ -229,13 +229,7 @@ getconfig(int idx)
__func__, intface);
}
- rai = malloc(sizeof(*rai));
- if (rai == NULL) {
- syslog(LOG_INFO, "<%s> %s: can't allocate enough memory",
- __func__, intface);
- exit(1);
- }
- memset(rai, 0, sizeof(*rai));
+ ELM_MALLOC(rai, exit(1));
TAILQ_INIT(&rai->rai_prefix);
#ifdef ROUTEINFO
TAILQ_INIT(&rai->rai_route);
@@ -394,10 +388,7 @@ getconfig(int idx)
/* allocate memory to store prefix information */
ELM_MALLOC(pfx, exit(1));
-
- /* link into chain */
- TAILQ_INSERT_TAIL(&rai->rai_prefix, pfx, pfx_next);
- rai->rai_pfxs++;
+ pfx->pfx_rainfo = rai;
pfx->pfx_origin = PREFIX_FROM_CONFIG;
if (inet_pton(AF_INET6, addr, &pfx->pfx_prefix) != 1) {
@@ -481,6 +472,9 @@ getconfig(int idx)
pfx->pfx_pltimeexpire =
now.tv_sec + pfx->pfx_preflifetime;
}
+ /* link into chain */
+ TAILQ_INSERT_TAIL(&rai->rai_prefix, pfx, pfx_next);
+ rai->rai_pfxs++;
}
if (rai->rai_advifprefix && rai->rai_pfxs == 0)
get_prefix(rai);
More information about the svn-src-all
mailing list