summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorjon <jon@FreeBSD.org>2007-05-17 03:33:23 +0000
committerjon <jon@FreeBSD.org>2007-05-17 03:33:23 +0000
commit3127d2bb31e30b1d390602807027788a016c08bb (patch)
treeb0c4fb0726002bf66b08be9c762953bfb83a5e2f /lib
parentfe7fa59a06ef70816d352f48c70269dca62f96e2 (diff)
downloadFreeBSD-src-3127d2bb31e30b1d390602807027788a016c08bb.zip
FreeBSD-src-3127d2bb31e30b1d390602807027788a016c08bb.tar.gz
fix memory leak from reading nsswitch.conf
MFC after: 1 week
Diffstat (limited to 'lib')
-rw-r--r--lib/libc/net/nsdispatch.c2
-rw-r--r--lib/libc/net/nsparser.y5
2 files changed, 7 insertions, 0 deletions
diff --git a/lib/libc/net/nsdispatch.c b/lib/libc/net/nsdispatch.c
index 0e3c419..ad3f208 100644
--- a/lib/libc/net/nsdispatch.c
+++ b/lib/libc/net/nsdispatch.c
@@ -412,6 +412,8 @@ static void
ns_dbt_free(ns_dbt *dbt)
{
ns_src_free(&dbt->srclist, dbt->srclistsize);
+ if (dbt->name)
+ free((void *)dbt->name);
}
diff --git a/lib/libc/net/nsparser.y b/lib/libc/net/nsparser.y
index 1f0fff1..730458a 100644
--- a/lib/libc/net/nsparser.y
+++ b/lib/libc/net/nsparser.y
@@ -82,6 +82,9 @@ Lines
Entry
: NL
| Database ':' NL
+ {
+ free((char*)curdbt.name);
+ }
| Database ':' Srclist NL
{
_nsdbtput(&curdbt);
@@ -163,6 +166,7 @@ _nsaddsrctomap(elem)
syslog(LOG_ERR,
"NSSWITCH(nsparser): %s line %d: 'compat' used with sources, other than 'cache'",
_PATH_NS_CONF, lineno);
+ free((void*)elem);
return;
}
}
@@ -171,6 +175,7 @@ _nsaddsrctomap(elem)
syslog(LOG_ERR,
"NSSWITCH(nsparser): %s line %d: duplicate source '%s'",
_PATH_NS_CONF, lineno, elem);
+ free((void*)elem);
return;
}
}
OpenPOWER on IntegriCloud