CVE-2018-16853: fix crash in expired passowrd case
authorIsaac Boukris <iboukris@gmail.com>
Wed, 7 Nov 2018 20:53:35 +0000 (22:53 +0200)
committerKarolin Seeger <kseeger@samba.org>
Tue, 4 Dec 2018 17:36:56 +0000 (18:36 +0100)
When calling encode_krb5_padata_sequence() make sure to
pass a null terminated array as required.

Fixes expired passowrd case in samba4.blackbox.kinit test.

Signed-off-by: Isaac Boukris <iboukris@gmail.com>
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Autobuild-User(v4-8-test): Karolin Seeger <kseeger@samba.org>
Autobuild-Date(v4-8-test): Tue Dec  4 18:36:56 CET 2018 on sn-devel-144

source4/kdc/mit_samba.c

index 1cd6750f5ab76d097054227991976b58c2ed7485..8283c72648785a489ee10e2a183bbd15f6733a50 100644 (file)
@@ -855,7 +855,7 @@ krb5_error_code encode_krb5_padata_sequence(krb5_pa_data *const *rep, krb5_data
 static void samba_kdc_build_edata_reply(NTSTATUS nt_status, DATA_BLOB *e_data)
 {
        krb5_error_code ret = 0;
-       krb5_pa_data pa, *ppa = NULL;
+       krb5_pa_data pa, *ppa[2];
        krb5_data *d = NULL;
 
        if (!e_data)
@@ -876,9 +876,10 @@ static void samba_kdc_build_edata_reply(NTSTATUS nt_status, DATA_BLOB *e_data)
        SIVAL(pa.contents, 4, 0);
        SIVAL(pa.contents, 8, 1);
 
-       ppa = &pa;
+       ppa[0] = &pa;
+       ppa[1] = NULL;
 
-       ret = encode_krb5_padata_sequence(&ppa, &d);
+       ret = encode_krb5_padata_sequence(ppa, &d);
        free(pa.contents);
        if (ret) {
                return;