[SCM] Samba Shared Repository - branch master updated

Noel Power npower at samba.org
Wed Jul 3 10:52:02 UTC 2019


The branch, master has been updated
       via  fa2d5b3daa0 lib: Fix return of server_id_db_prune_name()
       via  f4430086fa2 tdb: Adapt _tdb_transaction_cancel() to README.Coding
       via  4ef5a42ca20 tdb: Adapt tdb_rescue() to README.Coding
       via  c3bad08e2b0 lib/krb5_wrap: Fix leaking using mkstemp
      from  9b017ab0465 smbd: Simplify filename_convert_internal()

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit fa2d5b3daa0eaae41e2c2348cb2a81adf9da3b62
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Jul 1 21:07:55 2019 +0200

    lib: Fix return of server_id_db_prune_name()
    
    The tdb routines return 0/-1 and return the specific error via
    tdb_error(). server_id_db_prune_name() is expected to return an errno,
    not 0/-1.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>
    
    Autobuild-User(master): Noel Power <npower at samba.org>
    Autobuild-Date(master): Wed Jul  3 10:51:32 UTC 2019 on sn-devel-184

commit f4430086fa2345c9ccf94644d92c08fd47f6a493
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Jul 1 21:02:21 2019 +0200

    tdb: Adapt _tdb_transaction_cancel() to README.Coding
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 4ef5a42ca2025b10674a4800d471ea29735c0906
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Jul 1 21:00:23 2019 +0200

    tdb: Adapt tdb_rescue() to README.Coding
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit c3bad08e2b0913e5e49ffadb4780bb51154a3215
Author: Noel Power <noel.power at suse.com>
Date:   Tue Jul 2 09:29:47 2019 +0100

    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 <noel.power at suse.com>
    Reviewed-by: Andreas Schneider <asn at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 lib/krb5_wrap/krb5_samba.c   | 7 +++++--
 lib/tdb/common/rescue.c      | 2 +-
 lib/tdb/common/transaction.c | 2 +-
 lib/util/server_id_db.c      | 7 ++++++-
 4 files changed, 13 insertions(+), 5 deletions(-)


Changeset truncated at 500 lines:

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;
diff --git a/lib/tdb/common/rescue.c b/lib/tdb/common/rescue.c
index 7e6580957bb..e608db41dea 100644
--- a/lib/tdb/common/rescue.c
+++ b/lib/tdb/common/rescue.c
@@ -300,7 +300,7 @@ _PUBLIC_ int tdb_rescue(struct tdb_context *tdb,
 		qsort(found.arr, found.num, sizeof(found.arr[0]), cmp_key);
 	}
 
-	for (i = 0; found.arr && i < found.num; ) {
+	for (i = 0; (found.arr != NULL) && i < found.num; ) {
 		unsigned int num, num_in_hash = 0;
 
 		/* How many are identical? */
diff --git a/lib/tdb/common/transaction.c b/lib/tdb/common/transaction.c
index 06710896b6b..e9b0b26ea59 100644
--- a/lib/tdb/common/transaction.c
+++ b/lib/tdb/common/transaction.c
@@ -610,7 +610,7 @@ static int _tdb_transaction_cancel(struct tdb_context *tdb)
 
 	/* free all the transaction blocks */
 	for (i=0;i<tdb->transaction->num_blocks;i++) {
-		if (tdb->transaction->blocks &&
+		if ((tdb->transaction->blocks != NULL) &&
 		    tdb->transaction->blocks[i] != NULL) {
 			free(tdb->transaction->blocks[i]);
 		}
diff --git a/lib/util/server_id_db.c b/lib/util/server_id_db.c
index bb61f316d29..17b157706b4 100644
--- a/lib/util/server_id_db.c
+++ b/lib/util/server_id_db.c
@@ -184,7 +184,12 @@ int server_id_db_prune_name(struct server_id_db *db, const char *name,
 
 	tdb_chainunlock(tdb, key);
 
-	return ret;
+	if (ret == -1) {
+		enum TDB_ERROR err = tdb_error(tdb);
+		return map_unix_error_from_tdb(err);
+	}
+
+	return 0;
 }
 
 int server_id_db_remove(struct server_id_db *db, const char *name)


-- 
Samba Shared Repository



More information about the samba-cvs mailing list