1 --- zephyr-3.1.2/lib/ZMkAuth.c.orig 2013-10-28 05:21:44.000000000 +0100
2 +++ zephyr-3.1.2/lib/ZMkAuth.c 2021-03-05 21:41:58.211169636 +0100
4 keyblock = Z_credskey(creds);
7 - Z_keys_head->keyblock->enctype == keyblock->enctype &&
8 - Z_keys_head->keyblock->length == keyblock->length &&
9 - memcmp(Z_keys_head->keyblock->contents, keyblock->contents,
10 - keyblock->length) == 0) {
11 + Z_enctype(Z_keys_head->keyblock) == Z_enctype(keyblock) &&
12 + Z_keylen(Z_keys_head->keyblock) == Z_keylen(keyblock) &&
13 + memcmp(Z_keydata(Z_keys_head->keyblock), Z_keydata(keyblock),
14 + Z_keylen(keyblock)) == 0) {
16 * Optimization: if the key hasn't changed, replace the current entry,
17 * rather than make a new one.
18 --- zephyr-3.1.2/lib/ZDumpSession.c.orig 2013-10-28 05:21:44.000000000 +0100
19 +++ zephyr-3.1.2/lib/ZDumpSession.c 2021-03-05 22:11:03.011717241 +0100
21 for (key = Z_keys_head; key != NULL; key = key->next) {
23 len += 4 + 4; /* enctype, length */
24 - len += key->keyblock->length; /* contents */
25 + len += Z_keylen(key->keyblock); /* contents */
31 *((uint32_t *)ptr) = htonl(num_keys); ptr += 4;
32 for (key = Z_keys_tail; key != NULL; key = key->prev) {
33 - *((uint32_t*) ptr) = htonl(key->keyblock->enctype); ptr += 4;
34 - *((uint32_t*) ptr) = htonl(key->keyblock->length); ptr += 4;
35 - memcpy(ptr, key->keyblock->contents, key->keyblock->length);
36 - ptr += key->keyblock->length;
37 + *((uint32_t*) ptr) = htonl(Z_enctype(key->keyblock)); ptr += 4;
38 + *((uint32_t*) ptr) = htonl(Z_keylen(key->keyblock)); ptr += 4;
39 + memcpy(ptr, Z_keydata(key->keyblock), Z_keylen(key->keyblock));
40 + ptr += Z_keylen(key->keyblock);
48 - ret = krb5_init_keyblock(Z_krb5_ctx, enctype, keylength, &key->keyblock);
49 + ret = Z_krb5_init_keyblock(Z_krb5_ctx, enctype, keylength, &key->keyblock);
54 - memcpy((char *)key->keyblock->contents, buffer, keylength);
55 + memcpy((char *)Z_keydata(key->keyblock), buffer, keylength);
56 buffer += keylength; len -= keylength;
57 /* Just set recent times. It means we might not be able to
58 retire the keys, but that's fine. */
59 --- zephyr-3.1.2/lib/Zinternal.c.orig 2013-10-28 05:21:44.000000000 +0100
60 +++ zephyr-3.1.2/lib/Zinternal.c 2021-03-06 08:54:08.562681386 +0100
61 @@ -1420,3 +1420,30 @@
68 +Z_krb5_init_keyblock(krb5_context context,
71 + krb5_keyblock **key)
73 +#ifdef HAVE_KRB5_CREDS_KEYBLOCK_ENCTYPE
74 + return krb5_init_keyblock(context, type, size, key);
76 + krb5_error_code ret;
77 + krb5_keyblock *tmp, tmp_ss;
81 + Z_enctype(tmp) = type;
82 + Z_keylen(tmp) = size;
83 + Z_keydata(tmp) = malloc(size);
84 + if (!Z_keydata(tmp))
86 + ret = krb5_copy_keyblock(context, tmp, key);
87 + free(Z_keydata(tmp));
92 --- zephyr-3.1.2/h/internal.h.orig 2013-10-28 05:21:44.000000000 +0100
93 +++ zephyr-3.1.2/h/internal.h 2021-03-06 08:52:45.043133850 +0100
95 #define Z_tktprinc(tkt) ((tkt)->client)
99 +krb5_error_code Z_krb5_init_keyblock(krb5_context, krb5_enctype, size_t,
103 #endif /* __INTERNAL_H__ */
104 --- zephyr-3.1.2/server/kstuff.c.orig 2013-10-28 05:21:44.000000000 +0100
105 +++ zephyr-3.1.2/server/kstuff.c 2021-03-06 08:55:24.682269010 +0100
114 -Z_krb5_init_keyblock(krb5_context context,
117 - krb5_keyblock **key)
119 -#ifdef HAVE_KRB5_CREDS_KEYBLOCK_ENCTYPE
120 - return krb5_init_keyblock(context, type, size, key);
122 - krb5_error_code ret;
123 - krb5_keyblock *tmp, tmp_ss;
127 - Z_enctype(tmp) = type;
128 - Z_keylen(tmp) = size;
129 - Z_keydata(tmp) = malloc(size);
130 - if (!Z_keydata(tmp))
132 - ret = krb5_copy_keyblock(context, tmp, key);
133 - free(Z_keydata(tmp));
139 ZSetSession(krb5_keyblock *keyblock) {
140 --- zephyr-3.1.2/server/zserver.h.orig 2021-03-06 08:52:57.593065861 +0100
141 +++ zephyr-3.1.2/server/zserver.h 2021-03-06 08:53:00.516383357 +0100
143 extern krb5_keyblock *__Zephyr_keyblock;
144 #define ZGetSession() (__Zephyr_keyblock)
145 void ZSetSession(krb5_keyblock *keyblock);
146 -krb5_error_code Z_krb5_init_keyblock(krb5_context, krb5_enctype, size_t,