From: Noel Power Date: Tue, 2 Jul 2019 08:29:47 +0000 (+0100) Subject: lib/krb5_wrap: Fix leaking using mkstemp X-Git-Tag: ldb-2.0.5~43 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c3bad08e2b0913e5e49ffadb4780bb51154a3215;p=thirdparty%2Fsamba.git lib/krb5_wrap: Fix leaking using mkstemp commit: 8b92539997a9df8e0d217790fd82fc8f59ea50cc introduced a leak by replacing mktemp with mkstemp (mkstemp returns an open fd) Signed-off-by: Noel Power Reviewed-by: Andreas Schneider --- diff --git a/lib/krb5_wrap/krb5_samba.c b/lib/krb5_wrap/krb5_samba.c index 37257ddfe03..72889fffcf0 100644 --- a/lib/krb5_wrap/krb5_samba.c +++ b/lib/krb5_wrap/krb5_samba.c @@ -2001,6 +2001,7 @@ krb5_error_code smb_krb5_kinit_keyblock_ccache(krb5_context ctx, char tmp_name[sizeof(SMB_CREDS_KEYTAB)]; krb5_keytab_entry entry; krb5_keytab keytab; + int tmpfd; mode_t mask; memset(&entry, 0, sizeof(entry)); @@ -2009,11 +2010,13 @@ krb5_error_code smb_krb5_kinit_keyblock_ccache(krb5_context ctx, memcpy(tmp_name, SMB_CREDS_KEYTAB, sizeof(SMB_CREDS_KEYTAB)); mask = umask(S_IRWXO | S_IRWXG); - mkstemp(tmp_name); + tmpfd = mkstemp(tmp_name); umask(mask); - if (tmp_name[0] == 0) { + if (tmpfd == -1) { + DBG_ERR("Failed to mkstemp %s\n", tmp_name); return KRB5_KT_BADNAME; } + close(tmpfd); code = krb5_kt_resolve(ctx, tmp_name, &keytab); if (code) { return code;