Subject: Bug in usr/src/sys/net/radix.c on 3.0?
To: None <tech-kern@netbsd.org>
From: Markus Mayer <mmayer@redback.com>
List: tech-kern
Date: 05/04/2006 10:25:02
Hi,
I just noticed looking at the code in radix.c that there seems to be the
possibility that this module may not initialize properly:
void
rn_init()
{
char *cp, *cplim;
#ifdef _KERNEL
static int initialized;
__link_set_decl(domains, struct domain);
struct domain *const *dpp;
if (initialized)
return;
initialized = 1;
[...]
The static variable 'initialized' is never explicitly set to 0 in the
beginning. Hence it is possible that 'initialized' has a value other
than 0 when the system starts up and thus the 'if' statement might be
true even though the rest of the code has never been executed.
I am suggesting to do something like this:
diff -u -r1.28 radix.c
--- radix.c 26 Feb 2005 22:45:09 -0000 1.28
+++ radix.c 4 May 2006 17:19:09 -0000
@@ -945,7 +945,7 @@
{
char *cp, *cplim;
#ifdef _KERNEL
- static int initialized;
+ static int initialized = 0;
__link_set_decl(domains, struct domain);
struct domain *const *dpp;
Regards,
Markus