auth: Common function for retrieving PAC_LOGIN_INFO from PAC
[mat/samba.git] / source3 / auth / auth_generic.c
index 82b376feb647ec26e2de3818c519736ebb1f7fa8..80f5fa7d3e3611769f58f52646a6cf6815c56255 100644 (file)
@@ -42,9 +42,7 @@ static NTSTATUS auth3_generate_session_info_pac(struct auth4_context *auth_ctx,
                                                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;
        bool is_mapped;
        bool is_guest;
        char *ntuser;
@@ -62,36 +60,14 @@ static NTSTATUS auth3_generate_session_info_pac(struct auth4_context *auth_ctx,
 
        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;
-               }
        }
 
        rc = get_remote_hostname(remote_address,