r26406: Make a copy to prevent modification of the loadparm configuration.
authorJelmer Vernooij <jelmer@samba.org>
Tue, 11 Dec 2007 21:23:34 +0000 (22:23 +0100)
committerStefan Metzmacher <metze@samba.org>
Fri, 21 Dec 2007 04:49:37 +0000 (05:49 +0100)
(This used to be commit c0f2775fd8bd88aad3497d59a7857d7a8a0978c5)

source4/lib/socket/connect.c
source4/lib/socket/interface.c

index bc3aca3c225ce667a64d15604052a9a2dc014668..773bf4187358f127fd3269b2b6c70ed4b3ea9d42 100644 (file)
@@ -123,7 +123,7 @@ struct composite_context *socket_connect_send(struct socket_context *sock,
 
        set_blocking(socket_get_fd(sock), false);
 
-       if (resolve_ctx && server_address->addr && strcmp(sock->backend_name, "ipv4") == 0) {
+       if (resolve_ctx != NULL && server_address->addr && strcmp(sock->backend_name, "ipv4") == 0) {
                struct nbt_name name;
                struct composite_context *creq;
                make_nbt_name_client(&name, server_address->addr);
index 241fcbff5eb732540391b4cdb8a1d2f4088ad6d1..c327f02bbd421405dfba57400d9cd3ab8040a6d7 100644 (file)
@@ -118,6 +118,7 @@ static void interpret_interface(TALLOC_CTX *mem_ctx,
 {
        struct in_addr ip, nmask;
        char *p;
+       char *address;
        int i, added=0;
 
        ip.s_addr = 0;
@@ -154,10 +155,13 @@ static void interpret_interface(TALLOC_CTX *mem_ctx,
                return;
        }
 
+       address = talloc_strdup(mem_ctx, token);
+       p = strchr_m(address,'/');
+
        /* parse it into an IP address/netmasklength pair */
        *p++ = 0;
 
-       ip.s_addr = interpret_addr2(token).s_addr;
+       ip.s_addr = interpret_addr2(address).s_addr;
 
        if (strlen(p) > 2) {
                nmask.s_addr = interpret_addr2(p).s_addr;
@@ -172,14 +176,17 @@ static void interpret_interface(TALLOC_CTX *mem_ctx,
                        if (same_net(ip, probed_ifaces[i].ip, nmask)) {
                                add_interface(mem_ctx, probed_ifaces[i].ip, nmask,
                                              local_interfaces);
+                               talloc_free(address);
                                return;
                        }
                }
-               DEBUG(2,("Can't determine ip for broadcast address %s\n", token));
+               DEBUG(2,("Can't determine ip for broadcast address %s\n", address));
+               talloc_free(address);
                return;
        }
 
        add_interface(mem_ctx, ip, nmask, local_interfaces);
+       talloc_free(address);
 }