Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 04 Apr 1999 14:26:07 -0600
From:      Warner Losh <imp@harmony.village.org>
To:        obrien@NUXI.com
Cc:        current@FreeBSD.ORG
Subject:   Re: World Breakage? 
Message-ID:  <199904042026.OAA31920@harmony.village.org>
In-Reply-To: Your message of "Sun, 04 Apr 1999 13:21:14 PDT." <19990404132114.C77056@nuxi.com> 
References:  <19990404132114.C77056@nuxi.com>  <19990404093848.A76160@nuxi.com> <19990403222515.A75073@nuxi.com> <19990404093848.A76160@nuxi.com> <199904041912.NAA84643@harmony.village.org> 

next in thread | previous in thread | raw e-mail | index | archive | help
In message <19990404132114.C77056@nuxi.com> "David O'Brien" writes:
: I can't duplicate this problem.  Just to be sure... you aren't using
: -DNOCLEAN, -O2 or anything like that, right?
: 
: Would it be possible for you to take the March 31st CURRENT snapshot, do
: a fresh CVSup/cvs checkout and try a build?

I already have mkstemps in my tree.  I had imported it from OpenBSD a
while ago, but hadn't committed it.  I'll do that now, as well as
remove the mktemp.c from the offending makefile.  It works w/o it and
eliminates an XXX comment.

So you shouldn't be able to reproduce this in a clean tree. :-)

Warner

P.S.  here's what I have in my tree that I'll commit soon.

Index: mktemp.c
===================================================================
RCS file: /home/imp/FreeBSD/CVS/src/lib/libc/stdio/mktemp.c,v
retrieving revision 1.12
diff -d -u -r1.12 mktemp.c
--- mktemp.c	1998/10/20 15:33:21	1.12
+++ mktemp.c	1999/04/04 19:31:50
@@ -50,29 +50,39 @@
 
 char *_mktemp __P((char *));
 
-static int _gettemp __P((char *, int *, int));
+static int _gettemp __P((char *, int *, int, int));
 
 int
+mkstemps(path, slen)
+	char *path;
+	int slen;
+{
+	int fd;
+
+	return (_gettemp(path, &fd, 0, slen) ? fd : -1);
+}
+
+int
 mkstemp(path)
 	char *path;
 {
 	int fd;
 
-	return (_gettemp(path, &fd, 0) ? fd : -1);
+	return (_gettemp(path, &fd, 0, 0) ? fd : -1);
 }
 
 char *
 mkdtemp(path)
 	char *path;
 {
-	return(_gettemp(path, (int *)NULL, 1) ? path : (char *)NULL);
+	return(_gettemp(path, (int *)NULL, 1, 0) ? path : (char *)NULL);
 }
 
 char *
 _mktemp(path)
 	char *path;
 {
-	return(_gettemp(path, (int *)NULL, 0) ? path : (char *)NULL);
+	return(_gettemp(path, (int *)NULL, 0, 0) ? path : (char *)NULL);
 }
 
 #ifdef UNSAFE_WARN
@@ -88,12 +98,13 @@
 }
 
 static int
-_gettemp(path, doopen, domkdir)
+_gettemp(path, doopen, domkdir, slen)
 	char *path;
 	register int *doopen;
 	int domkdir;
+	int slen;
 {
-	register char *start, *trv;
+	register char *start, *trv, *suffp;
 	struct stat sbuf;
 	int pid, rval;
 
@@ -105,7 +116,13 @@
 	pid = getpid();
 	for (trv = path; *trv; ++trv)
 		;
+	trv -= slen;
+	suffp = trv;
 	--trv;
+	if (trv < path) {
+		errno = EINVAL;
+		return (0);
+	}
 	while (*trv == 'X' && pid != 0) {
 		*trv-- = (pid % 10) + '0';
 		pid /= 10;


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




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