s4:nbt_server: avoid talloc_reference()
authorStefan Metzmacher <metze@samba.org>
Thu, 8 Aug 2013 16:38:12 +0000 (18:38 +0200)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 12 Aug 2013 04:48:51 +0000 (16:48 +1200)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/nbt_server/wins/wins_dns_proxy.c
source4/nbt_server/wins/winsdb.c
source4/nbt_server/wins/winsserver.c

index 4ebfc05fd7678e86c0bf9d9fe8d4cf4fb9eea649..7b85f8d9fea289ba4759bdfa2c6712a509c64afa 100644 (file)
@@ -27,6 +27,7 @@
 #include "libcli/composite/composite.h"
 #include "smbd/service_task.h"
 #include "libcli/resolve/resolve.h"
+#include "lib/socket/socket.h"
 
 struct wins_dns_proxy_state {
        struct nbt_name_socket *nbtsock;
@@ -78,8 +79,8 @@ void nbtd_wins_dns_proxy_query(struct nbt_name_socket *nbtsock,
        if (!s) goto failed;
        s->nbtsock      = nbtsock;
        s->packet       = talloc_steal(s, packet);
-       s->src          = src;
-       if (!talloc_reference(s, src)) {
+       s->src          = socket_address_copy(s, src);
+       if (s->src == NULL) {
                goto failed;
        }
 
index 346ccc949bb6bdb34f9c36cbcf14183461ee8203..9b1cd2c3bb605fad66b82f7f5728de837232eb29 100644 (file)
@@ -223,7 +223,7 @@ static NTSTATUS winsdb_addr_decode(struct winsdb_handle *h, struct winsdb_record
        if (!p) {
                /* support old entries, with only the address */
                addr->address           = (const char *)talloc_steal(addr, val->data);
-               addr->wins_owner        = talloc_reference(addr, rec->wins_owner);
+               addr->wins_owner        = talloc_strdup(addr, rec->wins_owner);
                if (!addr->wins_owner) {
                        status = NT_STATUS_NO_MEMORY;
                        goto failed;
index e9598bab8c4ed91fd0439f6837b3b234c8f3413e..3cd7d430f9969d3d42d548a97f90e4ece827821e 100644 (file)
@@ -411,8 +411,8 @@ static void wins_register_wack(struct nbt_name_socket *nbtsock,
        s->rec                  = talloc_steal(s, rec);
        s->reg_address          = packet->additional[0].rdata.netbios.addresses[0].ipaddr;
        s->new_type             = new_type;
-       s->src                  = src;
-       if (talloc_reference(s, src) == NULL) goto failed;
+       s->src                  = socket_address_copy(s, src);
+       if (s->src == NULL) goto failed;
 
        s->io.in.nbtd_server    = iface->nbtsrv;
        s->io.in.nbt_port       = lpcfg_nbt_port(iface->nbtsrv->task->lp_ctx);