From: Jeremy Allison Date: Wed, 8 Jun 2016 21:50:59 +0000 (-0700) Subject: s3: krb5: keytab - The done label can be jumped to with context == NULL. X-Git-Tag: samba-4.3.12~138 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2b18b8b246dac53ce1946f544043e210e389f60d;p=thirdparty%2Fsamba.git s3: krb5: keytab - The done label can be jumped to with context == NULL. Ensure we don't crash in this case. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11959 Signed-off-by: Jeremy Allison Reviewed-by: Uri Simchoni Autobuild-User(master): Uri Simchoni Autobuild-Date(master): Thu Jun 9 13:18:56 CEST 2016 on sn-devel-144 (cherry picked from commit e46cb9b835eb8f2bd998def82baf6f07fda9fe5c) Autobuild-User(v4-3-test): Karolin Seeger Autobuild-Date(v4-3-test): Wed Jun 15 15:05:50 CEST 2016 on sn-devel-104 --- diff --git a/source3/libads/kerberos_keytab.c b/source3/libads/kerberos_keytab.c index 309e614b4f0..b47dde64485 100644 --- a/source3/libads/kerberos_keytab.c +++ b/source3/libads/kerberos_keytab.c @@ -744,26 +744,24 @@ done: TALLOC_FREE(oldEntries); TALLOC_FREE(frame); - { + if (context) { krb5_keytab_entry zero_kt_entry; + krb5_kt_cursor zero_csr; + ZERO_STRUCT(zero_kt_entry); + ZERO_STRUCT(zero_csr); + if (memcmp(&zero_kt_entry, &kt_entry, sizeof(krb5_keytab_entry))) { smb_krb5_kt_free_entry(context, &kt_entry); } - } - { - krb5_kt_cursor zero_csr; - ZERO_STRUCT(zero_csr); if ((memcmp(&cursor, &zero_csr, sizeof(krb5_kt_cursor)) != 0) && keytab) { krb5_kt_end_seq_get(context, keytab, &cursor); } - } - if (keytab) { - krb5_kt_close(context, keytab); - } - if (context) { + if (keytab) { + krb5_kt_close(context, keytab); + } krb5_free_context(context); } return ret;