krb5 commit: Avoid using tmpnam(3) in db2's hash.c

Greg Hudson <[email protected]>
Newsgroups gmane.comp.encryption.kerberos.cvs
Message-ID <[email protected]>
https://github.com/krb5/krb5/commit/bb0100296dea0a3b2f4b80235c21a1ca19d006f6
commit bb0100296dea0a3b2f4b80235c21a1ca19d006f6
Author: Robbie Harwood <[email protected]>
Date:   Wed Mar 29 18:34:37 2017 -0400

    Avoid using tmpnam(3) in db2's hash.c
    
    As we do not rely on anonymous db2 databases, get rid of the code
    using tmpnam() for hash databases and reporting EINVAL if a filename
    is not specified.
    
    [[email protected]: rewrote commit message; condensed conditionals]

 src/plugins/kdb/db2/libdb2/hash/hash.c |   19 +++----------------
 1 files changed, 3 insertions(+), 16 deletions(-)

diff --git a/src/plugins/kdb/db2/libdb2/hash/hash.c b/src/plugins/kdb/db2/libdb2/hash/hash.c
index 76f5d47..862dbb1 100644
--- a/src/plugins/kdb/db2/libdb2/hash/hash.c
+++ b/src/plugins/kdb/db2/libdb2/hash/hash.c
@@ -103,26 +103,15 @@ __kdb2_hash_open(file, flags, mode, info, dflags)
 	DB *dbp;
 	DBT mpool_key;
 	HTAB *hashp;
-	int32_t bpages, csize, new_table, save_errno, specified_file;
+	int32_t bpages, csize, new_table, save_errno;
 
-	if ((flags & O_ACCMODE) == O_WRONLY) {
+	if (!file || (flags & O_ACCMODE) == O_WRONLY) {
 		errno = EINVAL;
 		return (NULL);
 	}
 	if (!(hashp = (HTAB *)calloc(1, sizeof(HTAB))))
 		return (NULL);
 	hashp->fp = -1;
-
-	/* set this now, before file goes away... */
-	specified_file = (file != NULL);
-	if (!file) {
-		file = tmpnam(NULL);
-		/* store the file name so that we can unlink it later */
-		hashp->fname = file;
-#ifdef DEBUG
-		fprintf(stderr, "Using file name %s.\n", file);
-#endif
-	}
 	/*
 	 * Even if user wants write only, we need to be able to read
 	 * the actual file, so we need to open it read/write. But, the
@@ -130,7 +119,7 @@ __kdb2_hash_open(file, flags, mode, info, dflags)
 	 * we can check accesses.
 	 */
 	hashp->flags = flags;
-	hashp->save_file = specified_file && (hashp->flags & O_RDWR);
+	hashp->save_file = hashp->flags & O_RDWR;
 
 	new_table = 0;
 	if (!file || (flags & O_TRUNC) ||
@@ -542,8 +531,6 @@ hdestroy(hashp)
 		/* we need to chmod the file to allow it to be deleted... */
 		chmod(hashp->fname, 0700);
 		unlink(hashp->fname);
-		/* destroy the temporary name */
-		tmpnam(NULL);
 	}
 	free(hashp);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.