From: Robbie Harwood Date: Wed, 29 Mar 2017 22:34:37 +0000 (-0400) Subject: Avoid using tmpnam(3) in db2's hash.c X-Git-Tag: krb5-1.16-beta1~94 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bb0100296dea0a3b2f4b80235c21a1ca19d006f6;p=thirdparty%2Fkrb5.git 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. [ghudson@mit.edu: rewrote commit message; condensed conditionals] --- diff --git a/src/plugins/kdb/db2/libdb2/hash/hash.c b/src/plugins/kdb/db2/libdb2/hash/hash.c index 76f5d47093..862dbb1640 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);