svn commit: samba r11794 - in branches/SAMBA_4_0/source/libnet: .

tridge at samba.org tridge at samba.org
Fri Nov 18 23:27:58 GMT 2005


Author: tridge
Date: 2005-11-18 23:27:58 +0000 (Fri, 18 Nov 2005)
New Revision: 11794

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=11794

Log:

- fixed a valgrind error in libnet, caused by using a stack variable
  after the function has returned (the *address variable was assigned
  into the state).

- changed libnet to use event_context_find() instead of
  event_context_init(), so it works as a child of existing code that
  uses a event context


Modified:
   branches/SAMBA_4_0/source/libnet/libnet.c
   branches/SAMBA_4_0/source/libnet/libnet_lookup.c
   branches/SAMBA_4_0/source/libnet/libnet_rpc.c


Changeset:
Modified: branches/SAMBA_4_0/source/libnet/libnet.c
===================================================================
--- branches/SAMBA_4_0/source/libnet/libnet.c	2005-11-18 23:15:47 UTC (rev 11793)
+++ branches/SAMBA_4_0/source/libnet/libnet.c	2005-11-18 23:27:58 UTC (rev 11794)
@@ -38,7 +38,7 @@
 
 	/* events */
 	if (ev == NULL) {
-		ev = event_context_init(ctx);
+		ev = event_context_find(ctx);
 		if (ev == NULL) {
 			talloc_free(ctx);
 			return NULL;

Modified: branches/SAMBA_4_0/source/libnet/libnet_lookup.c
===================================================================
--- branches/SAMBA_4_0/source/libnet/libnet_lookup.c	2005-11-18 23:15:47 UTC (rev 11793)
+++ branches/SAMBA_4_0/source/libnet/libnet_lookup.c	2005-11-18 23:27:58 UTC (rev 11794)
@@ -34,7 +34,6 @@
 struct lookup_state {
 	struct composite_context *resolve_ctx;
 	struct nbt_name hostname;
-	const char **address;
 };
 
 
@@ -50,7 +49,6 @@
 	struct composite_context *c;
 	struct lookup_state *s;
 	const char** methods;
-	const char* address = talloc_array(ctx, const char, 16);
 
 	if (!io) return NULL;
 
@@ -62,14 +60,13 @@
 	if (s == NULL) goto failed;
 	
 	/* prepare event context */
-	c->event_ctx = event_context_init(c);
+	c->event_ctx = event_context_find(c);
 	if (c->event_ctx == NULL) goto failed;
 
 	/* parameters */
 	s->hostname.name   = talloc_strdup(s, io->in.hostname);
 	s->hostname.type   = io->in.type;
 	s->hostname.scope  = NULL;
-	s->address         = &address;
 
 	/* name resolution methods */
 	if (io->in.methods) {
@@ -106,12 +103,14 @@
 {
 	NTSTATUS status;
 	struct lookup_state *s;
+	const char *address;
 
 	s = talloc_get_type(c->private_data, struct lookup_state);
 
-	status = resolve_name_recv(s->resolve_ctx, mem_ctx, s->address);
+	status = resolve_name_recv(s->resolve_ctx, mem_ctx, &address);
 	if (NT_STATUS_IS_OK(status)) {
-		io->out.address = s->address;
+		io->out.address = str_list_make(mem_ctx, address, NULL);
+		NT_STATUS_HAVE_NO_MEMORY(io->out.address);
 	}
 
 	return status;

Modified: branches/SAMBA_4_0/source/libnet/libnet_rpc.c
===================================================================
--- branches/SAMBA_4_0/source/libnet/libnet_rpc.c	2005-11-18 23:15:47 UTC (rev 11793)
+++ branches/SAMBA_4_0/source/libnet/libnet_rpc.c	2005-11-18 23:27:58 UTC (rev 11794)
@@ -77,11 +77,10 @@
 	NTSTATUS status;
 	struct libnet_RpcConnect r2;
 	struct libnet_Lookup f;
-	const char *address = talloc_array(ctx, const char, 16);
 
 	f.in.hostname  = r->in.domain_name;
 	f.in.methods   = NULL;
-	f.out.address  = &address;
+	f.out.address  = NULL;
 
 	status = libnet_LookupPdc(ctx, mem_ctx, &f);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -91,7 +90,7 @@
 	}
 
 	r2.level		    = LIBNET_RPC_CONNECT_SERVER;
-	r2.in.domain_name	    = talloc_strdup(mem_ctx, *f.out.address);
+	r2.in.domain_name	    = talloc_strdup(mem_ctx, f.out.address[0]);
 	r2.in.dcerpc_iface_name     = r->in.dcerpc_iface_name;
 	r2.in.dcerpc_iface_uuid	    = r->in.dcerpc_iface_uuid;
 	r2.in.dcerpc_iface_version  = r->in.dcerpc_iface_version;



More information about the samba-cvs mailing list