Loading...
stdio/FreeBSD/tempnam.c.patch Libc-594.1.4 /dev/null
--- Libc/Libc-594.1.4/stdio/FreeBSD/tempnam.c.patch
+++ /dev/null
@@ -1,77 +0,0 @@
---- tempnam.c.orig	2008-11-12 17:08:45.000000000 -0800
-+++ tempnam.c	2008-11-12 17:41:23.000000000 -0800
-@@ -57,35 +57,68 @@ tempnam(dir, pfx)
- 	int sverrno;
- 	char *f, *name;
- 
--	if (!(name = malloc(MAXPATHLEN)))
-+	if (!(name = malloc(MAXPATHLEN))) {
- 		return(NULL);
-+	}
- 
- 	if (!pfx)
- 		pfx = "tmp.";
- 
-+#if !__DARWIN_UNIX03
- 	if (issetugid() == 0 && (f = getenv("TMPDIR"))) {
- 		(void)snprintf(name, MAXPATHLEN, "%s%s%sXXXXXX", f,
- 		    *(f + strlen(f) - 1) == '/'? "": "/", pfx);
--		if ((f = _mktemp(name)))
-+		if ((f = _mktemp(name))) {
- 			return(f);
-+		}
- 	}
--
-+#endif /* !__DARWIN_UNIX03 */
- 	if ((f = (char *)dir)) {
-+#if __DARWIN_UNIX03
-+	    if (access(dir, W_OK) == 0) {
-+#endif /* __DARWIN_UNIX03 */
- 		(void)snprintf(name, MAXPATHLEN, "%s%s%sXXXXXX", f,
- 		    *(f + strlen(f) - 1) == '/'? "": "/", pfx);
--		if ((f = _mktemp(name)))
-+		if ((f = _mktemp(name))) {
- 			return(f);
-+		}
-+#if __DARWIN_UNIX03
-+	    }
-+#endif /* __DARWIN_UNIX03 */
- 	}
- 
- 	f = P_tmpdir;
-+#if __DARWIN_UNIX03
-+	if (access(f, W_OK) == 0) {	/* directory accessible? */
-+#endif /* __DARWIN_UNIX03 */
- 	(void)snprintf(name, MAXPATHLEN, "%s%sXXXXXX", f, pfx);
--	if ((f = _mktemp(name)))
-+	if ((f = _mktemp(name))) {
- 		return(f);
-+	}
- 
-+#if __DARWIN_UNIX03
-+	}
-+	if (issetugid() == 0 && (f = getenv("TMPDIR")) && access(f, W_OK) == 0) {
-+		(void)snprintf(name, MAXPATHLEN, "%s%s%sXXXXXX", f,
-+		    *(f + strlen(f) - 1) == '/'? "": "/", pfx);
-+		if ((f = _mktemp(name))) {
-+			return(f);
-+		}
-+	}
-+#endif /* __DARWIN_UNIX03 */
- 	f = _PATH_TMP;
-+#if __DARWIN_UNIX03
-+	if (access(f, W_OK) < 0) {	
-+		f = "./";	/* directory inaccessible */
-+		if (access(f, W_OK) < 0) {
-+			return(NULL);
-+		}
-+	}
-+#endif /* __DARWIN_UNIX03 */
- 	(void)snprintf(name, MAXPATHLEN, "%s%sXXXXXX", f, pfx);
--	if ((f = _mktemp(name)))
-+	if ((f = _mktemp(name))) {
- 		return(f);
-+	}
- 
- 	sverrno = errno;
- 	free(name);