summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2008-10-21 01:19:49 +0200
committerGünther Deschner <gd@samba.org>2008-10-21 11:39:45 +0200
commitb11f3a60fd8a06870ec12f8d153fd9a60ae820c5 (patch)
tree4f8937ed2c655ad5ae63adfea34ddb266c154578 /source3
parentf0b1a1bc9b74372e2af2a48ce9b06802b2198eb4 (diff)
downloadsamba-b11f3a60fd8a06870ec12f8d153fd9a60ae820c5.tar.gz
samba-b11f3a60fd8a06870ec12f8d153fd9a60ae820c5.tar.bz2
samba-b11f3a60fd8a06870ec12f8d153fd9a60ae820c5.zip
s3-lsa-server: fix _lsa_GetUserName.
Guenther
Diffstat (limited to 'source3')
-rw-r--r--source3/rpc_server/srv_lsa_nt.c29
-rw-r--r--source3/rpcclient/cmd_lsarpc.c3
2 files changed, 23 insertions, 9 deletions
diff --git a/source3/rpc_server/srv_lsa_nt.c b/source3/rpc_server/srv_lsa_nt.c
index 317c1c17bb..e3075334b8 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 3f79310c36..aa8662ce9d 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: