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>