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 <v...@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 <v...@samba.org>
    Reviewed-by: Noel Power <npo...@samba.org>
    
    Autobuild-User(master): Noel Power <npo...@samba.org>
    Autobuild-Date(master): Wed Jul  3 10:51:32 UTC 2019 on sn-devel-184

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

    tdb: Adapt _tdb_transaction_cancel() to README.Coding
    
    Signed-off-by: Volker Lendecke <v...@samba.org>
    Reviewed-by: Noel Power <npo...@samba.org>

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

    tdb: Adapt tdb_rescue() to README.Coding
    
    Signed-off-by: Volker Lendecke <v...@samba.org>
    Reviewed-by: Noel Power <npo...@samba.org>

commit c3bad08e2b0913e5e49ffadb4780bb51154a3215
Author: Noel Power <noel.po...@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.po...@suse.com>
    Reviewed-by: Andreas Schneider <a...@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

Reply via email to