summaryrefslogtreecommitdiff
path: root/source4/kdc
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2014-05-15 09:13:06 +0200
committerAndreas Schneider <asn@cryptomilk.org>2015-07-21 19:04:14 +0200
commit402b0dab67995874451de352eec2fde250f8d216 (patch)
tree0a6e13a3d6e4818e1dd23d8dd9b01ac85b7f9ad9 /source4/kdc
parent52e6d91d341efba6193a64199fd125b2ad681e79 (diff)
downloadsamba-402b0dab67995874451de352eec2fde250f8d216.tar.gz
s4-kdc/wdc-samba4: add a copy of samba_kdc_build_edata_reply for Heimdal.
Guenther Signed-off-by: Günther Deschner <gd@samba.org> Reviewed-by: Alexander Bokovoy <ab@samba.org>
Diffstat (limited to 'source4/kdc')
-rw-r--r--source4/kdc/wdc-samba4.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/source4/kdc/wdc-samba4.c b/source4/kdc/wdc-samba4.c
index b8929e6047a..4e7ea4b0907 100644
--- a/source4/kdc/wdc-samba4.c
+++ b/source4/kdc/wdc-samba4.c
@@ -225,6 +225,47 @@ static krb5_data fill_krb5_data(void *data, size_t length)
return kdata;
}
+/* this function allocates 'data' using malloc.
+ * The caller is responsible for freeing it */
+static void samba_kdc_build_edata_reply(NTSTATUS nt_status, DATA_BLOB *e_data)
+{
+ krb5_error_code ret = 0;
+ PA_DATA pa;
+ unsigned char *buf;
+ size_t len;
+
+ if (!e_data)
+ return;
+
+ e_data->data = NULL;
+ e_data->length = 0;
+
+ pa.padata_type = KRB5_PADATA_PW_SALT;
+ pa.padata_value.length = 12;
+ pa.padata_value.data = malloc(pa.padata_value.length);
+ if (!pa.padata_value.data) {
+ e_data->length = 0;
+ e_data->data = NULL;
+ return;
+ }
+
+ SIVAL(pa.padata_value.data, 0, NT_STATUS_V(nt_status));
+ SIVAL(pa.padata_value.data, 4, 0);
+ SIVAL(pa.padata_value.data, 8, 1);
+
+ ASN1_MALLOC_ENCODE(PA_DATA, buf, len, &pa, &len, ret);
+ free(pa.padata_value.data);
+ if (ret) {
+ return;
+ }
+
+ e_data->data = buf;
+ e_data->length = len;
+
+ return;
+}
+
+
static krb5_error_code samba_wdc_check_client_access(void *priv,
krb5_context context,
krb5_kdc_configuration *config,