mirror of
https://github.com/samba-team/samba.git
synced 2025-08-03 04:22:09 +03:00
auth: Common function for retrieving PAC_LOGIN_INFO from PAC
Several functions use the same logic as kerberos_pac_logon_info. Move kerberos_pac_logon_info to common code and reuse it to remove the code duplication. Signed-off-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
committed by
Andrew Bartlett
parent
a49eb60e04
commit
7285ed586f
@ -716,9 +716,7 @@ static NTSTATUS ntlm_auth_generate_session_info_pac(struct auth4_context *auth_c
|
||||
struct auth_session_info **session_info)
|
||||
{
|
||||
TALLOC_CTX *tmp_ctx;
|
||||
struct PAC_DATA *pac_data = NULL;
|
||||
struct PAC_LOGON_INFO *logon_info = NULL;
|
||||
unsigned int i;
|
||||
char *unixuser;
|
||||
NTSTATUS status;
|
||||
char *domain = NULL;
|
||||
@ -733,36 +731,14 @@ static NTSTATUS ntlm_auth_generate_session_info_pac(struct auth4_context *auth_c
|
||||
|
||||
if (pac_blob) {
|
||||
#ifdef HAVE_KRB5
|
||||
status = kerberos_decode_pac(tmp_ctx,
|
||||
*pac_blob,
|
||||
NULL, NULL, NULL, NULL, 0, &pac_data);
|
||||
status = kerberos_pac_logon_info(tmp_ctx, *pac_blob, NULL, NULL,
|
||||
NULL, NULL, 0, &logon_info);
|
||||
#else
|
||||
status = NT_STATUS_ACCESS_DENIED;
|
||||
#endif
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* get logon name and logon info */
|
||||
for (i = 0; i < pac_data->num_buffers; i++) {
|
||||
struct PAC_BUFFER *data_buf = &pac_data->buffers[i];
|
||||
|
||||
switch (data_buf->type) {
|
||||
case PAC_TYPE_LOGON_INFO:
|
||||
if (!data_buf->info) {
|
||||
break;
|
||||
}
|
||||
logon_info = data_buf->info->logon_info.info;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!logon_info) {
|
||||
DEBUG(1, ("Invalid PAC data, missing logon info!\n"));
|
||||
status = NT_STATUS_NOT_FOUND;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
||||
DEBUG(3, ("Kerberos ticket principal name is [%s]\n", princ_name));
|
||||
|
Reference in New Issue
Block a user