diff options
author | Günther Deschner <gd@samba.org> | 2014-05-15 09:13:06 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2015-07-21 19:04:14 +0200 |
commit | 402b0dab67995874451de352eec2fde250f8d216 (patch) | |
tree | 0a6e13a3d6e4818e1dd23d8dd9b01ac85b7f9ad9 /source4/kdc | |
parent | 52e6d91d341efba6193a64199fd125b2ad681e79 (diff) | |
download | samba-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.c | 41 |
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, |