diff options
author | Andrew Bartlett <abartlet@samba.org> | 2011-07-18 14:00:14 +1000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2011-07-20 09:17:14 +1000 |
commit | 7f64ea456be7f653dfb8aa74bbaf29b0d25fb725 (patch) | |
tree | bf84a5be12ba0a67e8aca4840a44b43fa3467539 | |
parent | 52b28ec813ff3696606fc8f3a6bf4759a1a104e5 (diff) | |
download | samba-7f64ea456be7f653dfb8aa74bbaf29b0d25fb725.tar.gz samba-7f64ea456be7f653dfb8aa74bbaf29b0d25fb725.tar.bz2 samba-7f64ea456be7f653dfb8aa74bbaf29b0d25fb725.zip |
auth: Move make_user_info_SamBaseInfo() to talloc_strdup and out of memory checking
Signed-off-by: Andrew Tridgell <tridge@samba.org>
-rw-r--r-- | auth/auth_sam_reply.c | 40 |
1 files changed, 31 insertions, 9 deletions
diff --git a/auth/auth_sam_reply.c b/auth/auth_sam_reply.c index 1644278bf0..ee27e966f6 100644 --- a/auth/auth_sam_reply.c +++ b/auth/auth_sam_reply.c @@ -192,19 +192,41 @@ NTSTATUS make_user_info_SamBaseInfo(TALLOC_CTX *mem_ctx, NT_STATUS_HAVE_NO_MEMORY(info); if (base->account_name.string) { - info->account_name = talloc_reference(info, base->account_name.string); + info->account_name = talloc_strdup(info, base->account_name.string); } else { info->account_name = talloc_strdup(info, account_name); - NT_STATUS_HAVE_NO_MEMORY(info->account_name); } + NT_STATUS_HAVE_NO_MEMORY(info->account_name); - info->domain_name = talloc_reference(info, base->domain.string); - info->full_name = talloc_reference(info, base->full_name.string); - info->logon_script = talloc_reference(info, base->logon_script.string); - info->profile_path = talloc_reference(info, base->profile_path.string); - info->home_directory = talloc_reference(info, base->home_directory.string); - info->home_drive = talloc_reference(info, base->home_drive.string); - info->logon_server = talloc_reference(info, base->logon_server.string); + if (base->domain.string) { + info->domain_name = talloc_strdup(info, base->domain.string); + NT_STATUS_HAVE_NO_MEMORY(info->domain_name); + } + + if (base->full_name.string) { + info->full_name = talloc_strdup(info, base->full_name.string); + NT_STATUS_HAVE_NO_MEMORY(info->full_name); + } + if (base->logon_script.string) { + info->logon_script = talloc_strdup(info, base->logon_script.string); + NT_STATUS_HAVE_NO_MEMORY(info->logon_script); + } + if (base->profile_path.string) { + info->profile_path = talloc_strdup(info, base->profile_path.string); + NT_STATUS_HAVE_NO_MEMORY(info->profile_path); + } + if (base->home_directory.string) { + info->home_directory = talloc_strdup(info, base->home_directory.string); + NT_STATUS_HAVE_NO_MEMORY(info->home_directory); + } + if (base->home_drive.string) { + info->home_drive = talloc_strdup(info, base->home_drive.string); + NT_STATUS_HAVE_NO_MEMORY(info->home_drive); + } + if (base->logon_server.string) { + info->logon_server = talloc_strdup(info, base->logon_server.string); + NT_STATUS_HAVE_NO_MEMORY(info->logon_server); + } info->last_logon = base->last_logon; info->last_logoff = base->last_logoff; info->acct_expiry = base->acct_expiry; |