From: Günther Deschner Date: Thu, 15 May 2014 07:13:06 +0000 (+0200) Subject: s4-kdc/wdc-samba4: add a copy of samba_kdc_build_edata_reply for Heimdal. X-Git-Url: http://git.samba.org/?a=commitdiff_plain;h=402b0dab67995874451de352eec2fde250f8d216;p=obnox%2Fsamba%2Fsamba-obnox.git s4-kdc/wdc-samba4: add a copy of samba_kdc_build_edata_reply for Heimdal. Guenther Signed-off-by: Günther Deschner Reviewed-by: Alexander Bokovoy --- 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,