diff options
author | Günther Deschner <gd@samba.org> | 2008-10-21 01:19:49 +0200 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2008-10-21 11:39:45 +0200 |
commit | b11f3a60fd8a06870ec12f8d153fd9a60ae820c5 (patch) | |
tree | 4f8937ed2c655ad5ae63adfea34ddb266c154578 /source3 | |
parent | f0b1a1bc9b74372e2af2a48ce9b06802b2198eb4 (diff) | |
download | samba-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.c | 29 | ||||
-rw-r--r-- | source3/rpcclient/cmd_lsarpc.c | 3 |
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: |