Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 3 Jul 2003 18:37:40 +0200
From:      Volker Stolz <stolz@i2.informatik.rwth-aachen.de>
To:        "Sergey A. Osokin" <osa@FreeBSD.org>
Cc:        freebsd-ports-bugs@FreeBSD.org
Subject:   Re: ports/54012: [patch] devel/mk: Update to 1.4
Message-ID:  <20030703163740.GA39180@i2.informatik.rwth-aachen.de>
In-Reply-To: <200307031330.h63DUUsM044221@freefall.freebsd.org>
References:  <200307031330.h63DUUsM044221@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--opJtzjQTFsWo+cga
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Thu, Jul 03, 2003 at 06:30:30AM -0700, Sergey A. Osokin wrote:
> Synopsis: [patch] devel/mk: Update to 1.4
> 
> What do you think about fix the following:
> /usr/home/osa/src/mk/work/mk-1.4/src/Posix.c:285:
> warning: tmpnam() possibly used unsafely; consider using mkstemp()

Try the attached patch. IANAE, but should/seems to work.
BTW: The previous versions had tmpnam() as well, so it might not strictly
be necessary to fix it.

Volker
-- 
http://www-i2.informatik.rwth-aachen.de/stolz/ *** PGP *** S/MIME
rage against the finite state machine 

--opJtzjQTFsWo+cga
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=patch-mkstemp

--- src/main.c.orig	Wed Jun  5 17:30:39 2002
+++ src/main.c	Thu Jul  3 18:34:19 2003
@@ -33,7 +33,7 @@
 main(int argc, char **argv)
 {
 	Word *w;
-	char *s, *temp;
+	char *s;
 	char *files[256], **f = files, **ff;
 	int sflag = 0;
 	int i;
@@ -41,6 +41,8 @@
 	Biobuf tb;
 	Bufblock *buf;
 	Bufblock *whatif;
+	char TMPLATE[14];
+	(void)strncpy(TMPLATE,"/tmp/mk.XXXXX", sizeof(TMPLATE));
 
 	/*
 	 *  start with a copy of the current environment variables
@@ -133,21 +135,15 @@
 	/*
 		assignment args become null strings
 	*/
-	temp = 0;
 	for(i = 0; argv[i]; i++) if(utfrune(argv[i], '=')){
 		bufcpy(buf, argv[i], strlen(argv[i]));
 		insert(buf, ' ');
 		if(tfd < 0){
-			temp = maketmp();
-			if(temp == 0) {
-				perror("temp file");
-				Exit();
-			}
-			close(create(temp, OWRITE, 0600));
-			if((tfd = open(temp, 2)) < 0){
-				perror(temp);
+			if ((tfd = mkstemp(TMPLATE)) < 0){
+				perror(TMPLATE);
 				Exit();
 			}
+			unlink(TMPLATE);
 			Binit(&tb, tfd, OWRITE);
 		}
 		Bprint(&tb, "%s\n", argv[i]);
@@ -157,7 +153,6 @@
 		Bflush(&tb);
 		LSEEK(tfd, 0L, 0);
 		parse("command line args", tfd, 1);
-		remove(temp);
 	}
 
 	if (buf->current != buf->start) {
--- src/Posix.c.orig	Thu Jul  3 16:08:16 2003
+++ src/Posix.c	Thu Jul  3 16:08:31 2003
@@ -276,14 +276,6 @@
 		signal(sigmsgs[i].sig, notifyf);
 }
 
-char*
-maketmp(void)
-{
-	static char temp[L_tmpnam];
-
-	return tmpnam(temp);
-}
-
 int
 chgtime(char *name)
 {

--opJtzjQTFsWo+cga--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030703163740.GA39180>