From bebd317964c787abf84daa638edff11840841e83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Thu, 22 Feb 2007 01:42:47 +0000 Subject: [PATCH] Create the PAC element in the same order as w2k3, maybe there's some broken code in windows which relies on this... From metze. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@20275 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/pac.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/krb5/pac.c b/lib/krb5/pac.c index a9bd0706d..fa05323a7 100644 --- a/lib/krb5/pac.c +++ b/lib/krb5/pac.c @@ -852,12 +852,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; @@ -869,6 +869,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)); @@ -879,11 +884,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 */ @@ -892,7 +892,6 @@ _krb5_pac_sign(krb5_context context, goto out; /* Set lengths for checksum */ - ret = pac_checksum(context, server_key, &server_cksumtype, &server_size); if (ret) goto out;