The branch, master has been updated
       via  c59961d s3-dsgetdcname: cleanup receive_getdc_response a little.
      from  33fdf8d s3-build: use proper RPC_X_OBJ target names.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit c59961dd814965e1dedd172b5e11c31310b80cc7
Author: Günther Deschner <[email protected]>
Date:   Wed Dec 3 10:40:04 2008 +0100

    s3-dsgetdcname: cleanup receive_getdc_response a little.
    
    Guenther

-----------------------------------------------------------------------

Summary of changes:
 source3/libsmb/clidgram.c |   32 ++++++++++++++++++--------------
 1 files changed, 18 insertions(+), 14 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/libsmb/clidgram.c b/source3/libsmb/clidgram.c
index f1f0bcb..919ea93 100644
--- a/source3/libsmb/clidgram.c
+++ b/source3/libsmb/clidgram.c
@@ -201,13 +201,13 @@ bool receive_getdc_response(TALLOC_CTX *mem_ctx,
                            const char *domain_name,
                            uint32_t *nt_version,
                            const char **dc_name,
-                           struct netlogon_samlogon_response **_r)
+                           struct netlogon_samlogon_response 
**samlogon_response)
 {
        struct packet_struct *packet;
        const char *my_mailslot = NULL;
        struct in_addr dc_ip;
        DATA_BLOB blob;
-       struct netlogon_samlogon_response r;
+       struct netlogon_samlogon_response *r;
        union dgram_message_body p;
        enum ndr_err_code ndr_err;
        NTSTATUS status;
@@ -269,41 +269,45 @@ bool receive_getdc_response(TALLOC_CTX *mem_ctx,
 
        blob = p.smb.body.trans.data;
 
-       ZERO_STRUCT(r);
+       r = TALLOC_ZERO_P(mem_ctx, struct netlogon_samlogon_response);
+       if (!r) {
+               return false;
+       }
 
-       status = pull_netlogon_samlogon_response(&blob, mem_ctx, &r);
+       status = pull_netlogon_samlogon_response(&blob, mem_ctx, r);
        if (!NT_STATUS_IS_OK(status)) {
+               TALLOC_FREE(r);
                return false;
        }
 
-       map_netlogon_samlogon_response(&r);
+       map_netlogon_samlogon_response(r);
 
        /* do we still need this ? */
-       *nt_version = r.ntver;
+       *nt_version = r->ntver;
 
-       returned_domain = r.data.nt5_ex.domain_name;
-       returned_dc = r.data.nt5_ex.pdc_name;
+       returned_domain = r->data.nt5_ex.domain_name;
+       returned_dc = r->data.nt5_ex.pdc_name;
 
        if (!strequal(returned_domain, domain_name)) {
                DEBUG(3, ("GetDC: Expected domain %s, got %s\n",
                          domain_name, returned_domain));
+               TALLOC_FREE(r);
                return false;
        }
 
        *dc_name = talloc_strdup(mem_ctx, returned_dc);
        if (!*dc_name) {
+               TALLOC_FREE(r);
                return false;
        }
 
        if (**dc_name == '\\')  *dc_name += 1;
        if (**dc_name == '\\')  *dc_name += 1;
 
-       if (_r) {
-               *_r = (struct netlogon_samlogon_response *)talloc_memdup(
-                       mem_ctx, &r, sizeof(struct netlogon_samlogon_response));
-               if (!*_r) {
-                       return false;
-               }
+       if (samlogon_response) {
+               *samlogon_response = r;
+       } else {
+               TALLOC_FREE(r);
        }
 
        DEBUG(10, ("GetDC gave name %s for domain %s\n",


-- 
Samba Shared Repository

Reply via email to