summaryrefslogtreecommitdiff
path: root/debian/patches/25_heimdal_api_changes
blob: e99577cf9719c2d9b095a2eb99c4c201bf15e840 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Description: Cope with changes in Heimdal API
Author: Samuel Cabrero Alamán <scabrero@zentyal.com>
Status: not suitable for upstream in current form, as it also needs to support older Heimdal.
Last-Updated: 2012-12-16

Index: samba/source4/kdc/wdc-samba4.c
===================================================================
--- samba.orig/source4/kdc/wdc-samba4.c	2012-11-15 18:35:29.000000000 +0100
+++ samba/source4/kdc/wdc-samba4.c	2012-11-16 01:19:55.482813115 +0100
@@ -128,7 +128,7 @@
 			talloc_free(mem_ctx);
 			return EINVAL;
 		}
-		
+
 		if (is_in_db) {
 			/* Now check the KDC signature, fetching the correct key based on the enc type */
 			ret = kdc_check_pac(context, pac_srv_sig->signature, pac_kdc_sig, krbtgt);
@@ -217,7 +217,7 @@
 						     hdb_entry_ex *client_ex, const char *client_name,
 						     hdb_entry_ex *server_ex, const char *server_name,
 						     KDC_REQ *req,
-						     krb5_data *e_data)
+                             METHOD_DATA *md)
 {
 	struct samba_kdc_entry *kdc_entry;
 	bool password_change;
@@ -239,11 +239,19 @@
 			return ENOMEM;
 		}
 
-		if (e_data) {
-			DATA_BLOB data;
+		if (md) {
+			int ret;
+			krb5_data kd;
+			DATA_BLOB data;
 
 			samba_kdc_build_edata_reply(nt_status, &data);
-			*e_data = fill_krb5_data(data.data, data.length);
+			kd = fill_krb5_data(data.data, data.length);
+			ret = krb5_padata_add(context, md,
+				KRB5_PADATA_FX_ERROR,
+				kd.data, kd.length);
+			if (ret) {
+				krb5_data_free(&kd);
+			}
 		}
 
 		return samba_kdc_map_policy_err(nt_status);