[SCM] Samba Shared Repository - branch master updated - b11f3a60fd8a06870ec12f8d153fd9a60ae820c5

Günther Deschner gd at samba.org
Tue Oct 21 09:40:16 GMT 2008


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 <gd at samba.org>
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


More information about the samba-cvs mailing list