From owner-freebsd-audit Mon Jan 10 0:30:50 2000 Delivered-To: freebsd-audit@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 758) id 6BF9B15171; Mon, 10 Jan 2000 00:30:42 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by hub.freebsd.org (Postfix) with ESMTP id 4D7E41CD44A for ; Mon, 10 Jan 2000 00:30:42 -0800 (PST) (envelope-from kris@hub.freebsd.org) Date: Mon, 10 Jan 2000 00:30:42 -0800 (PST) From: Kris Kennaway To: audit@freebsd.org Subject: Re: Tempfile handling in kgzip In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-audit@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG On Sun, 9 Jan 2000, Kris Kennaway wrote: > tempnam() -> mkstemp() Updated patch respects TMPDIR like tempnam() does, in case anyone relied on that. Kris Index: kgzip.c =================================================================== RCS file: /home/ncvs/src/usr.sbin/kgzip/kgzip.c,v retrieving revision 1.2 diff -u -r1.2 kgzip.c --- kgzip.c 1999/08/28 01:16:43 1.2 +++ kgzip.c 2000/01/10 08:27:40 @@ -47,11 +47,9 @@ #define SFX_KGZ ".kgz" /* Filename suffix: executable */ #define SFX_MAX 5 /* Size of larger filename suffix */ -#define TMP_PREFIX "kgz" /* Temporary file prefix */ - const char *loader = "/usr/lib/kgzldr.o"; /* Default loader */ -static const char *tname; /* Name of temporary file */ +char *tname; /* Name of temporary file */ static void cleanup(void); static void mk_fn(int, const char *, const char *, char *[]); @@ -68,6 +66,12 @@ const char *output; int cflag, vflag, c; + if (getenv("TMPDIR") == NULL) + tname = strdup("/tmp/kgzXXXXXXXXXX"); + else + if (asprintf(&tname, "%s/kgzXXXXXXXXXX", getenv("TMPDIR")) == -1) + errx(1, "Out of memory"); + output = NULL; cflag = vflag = 0; while ((c = getopt(argc, argv, "cvl:o:")) != -1) @@ -122,7 +126,7 @@ { const char *p, *s; size_t n; - int i; + int i, fd; i = 0; s = strrchr(f1, 0); @@ -133,8 +137,9 @@ } fn[i++] = (char *)f1; if (i == FN_OBJ && !cflag) { - if (!(tname = tempnam(NULL, TMP_PREFIX))) + if ((fd = mkstemp(tname)) == -1) err(1, NULL); + close(fd); fn[i++] = (char *)tname; } if (!(fn[i] = (char *)f2)) { To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-audit" in the body of the message