summaryrefslogtreecommitdiffstats
path: root/source/lib/interface.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2004-06-24 23:27:00 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 10:52:03 -0500
commitc892545960a9c3206b5a1f73e98ea924c802c17c (patch)
tree97c8b566bd155860e7bbc64cc3bd786092b50559 /source/lib/interface.c
parentb462b8fa2f264bef62ed4cd2aaacb2f21e135068 (diff)
downloadsamba-c892545960a9c3206b5a1f73e98ea924c802c17c.tar.gz
samba-c892545960a9c3206b5a1f73e98ea924c802c17c.tar.xz
samba-c892545960a9c3206b5a1f73e98ea924c802c17c.zip
r1248: Fix from Nick Wellnhofer <wellnhofer@aevum.de> to prevent
lp_interfaces() list from being corrupted. Jeremy.
Diffstat (limited to 'source/lib/interface.c')
-rw-r--r--source/lib/interface.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/source/lib/interface.c b/source/lib/interface.c
index 4d8010e31bc..adf9ca34381 100644
--- a/source/lib/interface.c
+++ b/source/lib/interface.c
@@ -94,7 +94,7 @@ This handles the following different forms:
4) ip/mask
5) bcast/mask
****************************************************************************/
-static void interpret_interface(const char *token)
+static void interpret_interface(char *token)
{
struct in_addr ip, nmask;
char *p;
@@ -130,9 +130,9 @@ static void interpret_interface(const char *token)
}
/* parse it into an IP address/netmasklength pair */
- *p++ = 0;
-
+ *p = 0;
ip = *interpret_addr2(token);
+ *p++ = '/';
if (strlen(p) > 2) {
nmask = *interpret_addr2(p);
@@ -207,7 +207,11 @@ void load_interfaces(void)
if (ptr) {
while (*ptr) {
- interpret_interface(*ptr);
+ char *ptr_cpy = strdup(*ptr);
+ if (ptr_cpy) {
+ interpret_interface(ptr_cpy);
+ free(ptr_cpy);
+ }
ptr++;
}
}