r21438: create the PAC element in the same order as w2k3,
authorStefan Metzmacher <metze@samba.org>
Sun, 18 Feb 2007 23:49:29 +0000 (23:49 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:48:35 +0000 (14:48 -0500)
maybe there's some broken code in windows which relies
on this...

love: can you merge this to heimdal?

metze

source/heimdal/lib/krb5/pac.c

index 5bc72354597eabaaeebd1b148a536ac5edef181d..283759c98b0755364b16cd77e2768ac7cdd9baa1 100644 (file)
@@ -850,12 +850,12 @@ _krb5_pac_sign(krb5_context context,
 
     krb5_data_zero(&logon);
 
+    if (p->logon_name == NULL)
+       num++;
     if (p->server_checksum == NULL)
        num++;
     if (p->privsvr_checksum == NULL)
        num++;
-    if (p->logon_name == NULL)
-       num++;
 
     if (num) {
        void *ptr;
@@ -867,6 +867,11 @@ _krb5_pac_sign(krb5_context context,
        }
        p->pac = ptr;
 
+       if (p->logon_name == NULL) {
+           p->logon_name = &p->pac->buffers[p->pac->numbuffers++];
+           memset(p->logon_name, 0, sizeof(*p->logon_name));
+           p->logon_name->type = PAC_LOGON_NAME;
+       }
        if (p->server_checksum == NULL) {
            p->server_checksum = &p->pac->buffers[p->pac->numbuffers++];
            memset(p->server_checksum, 0, sizeof(*p->server_checksum));
@@ -877,11 +882,6 @@ _krb5_pac_sign(krb5_context context,
            memset(p->privsvr_checksum, 0, sizeof(*p->privsvr_checksum));
            p->privsvr_checksum->type = PAC_PRIVSVR_CHECKSUM;
        }
-       if (p->logon_name == NULL) {
-           p->logon_name = &p->pac->buffers[p->pac->numbuffers++];
-           memset(p->logon_name, 0, sizeof(*p->logon_name));
-           p->logon_name->type = PAC_LOGON_NAME;
-       }
     }
 
     /* Calculate LOGON NAME */