The branch, master has been updated
       via  b11f3a60fd8a06870ec12f8d153fd9a60ae820c5 (commit)
      from  f0b1a1bc9b74372e2af2a48ce9b06802b2198eb4 (commit)

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


- Log -----------------------------------------------------------------
commit b11f3a60fd8a06870ec12f8d153fd9a60ae820c5
Author: Günther Deschner <[EMAIL PROTECTED]>
Date:   Tue Oct 21 01:19:49 2008 +0200

    s3-lsa-server: fix _lsa_GetUserName.
    
    Guenther

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

Summary of changes:
 source3/rpc_server/srv_lsa_nt.c |   29 +++++++++++++++++++++--------
 source3/rpcclient/cmd_lsarpc.c  |    3 ++-
 2 files changed, 23 insertions(+), 9 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/rpc_server/srv_lsa_nt.c b/source3/rpc_server/srv_lsa_nt.c
index 317c1c1..e307533 100644
--- a/source3/rpc_server/srv_lsa_nt.c
+++ b/source3/rpc_server/srv_lsa_nt.c
@@ -1462,6 +1462,16 @@ NTSTATUS _lsa_GetUserName(pipes_struct *p,
        struct lsa_String *account_name = NULL;
        struct lsa_String *authority_name = NULL;
 
+       if (r->in.account_name &&
+          *r->in.account_name) {
+               return NT_STATUS_INVALID_PARAMETER;
+       }
+
+       if (r->in.authority_name &&
+          *r->in.authority_name) {
+               return NT_STATUS_INVALID_PARAMETER;
+       }
+
        if (p->server_info->guest) {
                /*
                 * I'm 99% sure this is not the right place to do this,
@@ -1477,21 +1487,24 @@ NTSTATUS _lsa_GetUserName(pipes_struct *p,
                domname = pdb_get_domain(p->server_info->sam_account);
        }
 
-       account_name = TALLOC_ZERO_P(p->mem_ctx, struct lsa_String);
+       account_name = TALLOC(p->mem_ctx, struct lsa_String);
        if (!account_name) {
                return NT_STATUS_NO_MEMORY;
        }
+       init_lsa_String(account_name, username);
 
-       authority_name = TALLOC_ZERO_P(p->mem_ctx, struct lsa_String);
-       if (!authority_name) {
-               return NT_STATUS_NO_MEMORY;
+       if (r->out.authority_name) {
+               authority_name = TALLOC(p->mem_ctx, struct lsa_String);
+               if (!authority_name) {
+                       return NT_STATUS_NO_MEMORY;
+               }
+               init_lsa_String(authority_name, domname);
        }
 
-       init_lsa_String(account_name, username);
-       init_lsa_String(authority_name, domname);
-
        *r->out.account_name = account_name;
-       *r->out.authority_name = authority_name;
+       if (r->out.authority_name) {
+               *r->out.authority_name = authority_name;
+       }
 
        return NT_STATUS_OK;
 }
diff --git a/source3/rpcclient/cmd_lsarpc.c b/source3/rpcclient/cmd_lsarpc.c
index 3f79310..aa8662c 100644
--- a/source3/rpcclient/cmd_lsarpc.c
+++ b/source3/rpcclient/cmd_lsarpc.c
@@ -1182,7 +1182,8 @@ static NTSTATUS cmd_lsa_get_username(struct 
rpc_pipe_client *cli,
        /* Print results */
 
        printf("Account Name: %s, Authority Name: %s\n",
-               account_name->string, authority_name->string);
+               account_name->string, authority_name ? authority_name->string :
+               "");
 
        rpccli_lsa_Close(cli, mem_ctx, &pol);
  done:


-- 
Samba Shared Repository

Reply via email to