mirror of
https://github.com/samba-team/samba.git
synced 2025-01-05 09:18:06 +03:00
s4:sam: Don't use talloc_steal for msg attributes in authsam_make_user_info_dc()
This is most likely not a problem for the current callers, but that it is unexpected and will likely cause problems with future changes. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14993 BUG: https://bugzilla.samba.org/show_bug.cgi?id=14995 Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
parent
afc2103da0
commit
f6fe86924c
@ -454,12 +454,15 @@ _PUBLIC_ NTSTATUS authsam_make_user_info_dc(TALLOC_CTX *mem_ctx,
|
|||||||
user_info_dc->info = info = talloc_zero(user_info_dc, struct auth_user_info);
|
user_info_dc->info = info = talloc_zero(user_info_dc, struct auth_user_info);
|
||||||
NT_STATUS_HAVE_NO_MEMORY(user_info_dc->info);
|
NT_STATUS_HAVE_NO_MEMORY(user_info_dc->info);
|
||||||
|
|
||||||
info->account_name = talloc_steal(info,
|
str = ldb_msg_find_attr_as_string(msg, "sAMAccountName", NULL);
|
||||||
ldb_msg_find_attr_as_string(msg, "sAMAccountName", NULL));
|
info->account_name = talloc_strdup(info, str);
|
||||||
|
if (info->account_name == NULL) {
|
||||||
|
TALLOC_FREE(user_info_dc);
|
||||||
|
return NT_STATUS_NO_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
info->user_principal_name = talloc_steal(info,
|
str = ldb_msg_find_attr_as_string(msg, "userPrincipalName", NULL);
|
||||||
ldb_msg_find_attr_as_string(msg, "userPrincipalName", NULL));
|
if (str == NULL && dns_domain_name != NULL) {
|
||||||
if (info->user_principal_name == NULL && dns_domain_name != NULL) {
|
|
||||||
info->user_principal_name = talloc_asprintf(info, "%s@%s",
|
info->user_principal_name = talloc_asprintf(info, "%s@%s",
|
||||||
info->account_name,
|
info->account_name,
|
||||||
dns_domain_name);
|
dns_domain_name);
|
||||||
@ -468,6 +471,12 @@ _PUBLIC_ NTSTATUS authsam_make_user_info_dc(TALLOC_CTX *mem_ctx,
|
|||||||
return NT_STATUS_NO_MEMORY;
|
return NT_STATUS_NO_MEMORY;
|
||||||
}
|
}
|
||||||
info->user_principal_constructed = true;
|
info->user_principal_constructed = true;
|
||||||
|
} else if (str != NULL) {
|
||||||
|
info->user_principal_name = talloc_strdup(info, str);
|
||||||
|
if (info->user_principal_name == NULL) {
|
||||||
|
TALLOC_FREE(user_info_dc);
|
||||||
|
return NT_STATUS_NO_MEMORY;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
info->domain_name = talloc_strdup(info, domain_name);
|
info->domain_name = talloc_strdup(info, domain_name);
|
||||||
|
Loading…
Reference in New Issue
Block a user