From 12bba2e84c7f57d8cb64605026fd5a0e02b20332 Mon Sep 17 00:00:00 2001 From: kris Date: Sun, 13 Oct 2002 11:23:31 +0000 Subject: Dump in $TMPDIR if !setugid, and use mode 0644 instead of 0666. MFC after: 2 weeks --- lib/libc_r/uthread/uthread_info.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'lib/libc_r/uthread') diff --git a/lib/libc_r/uthread/uthread_info.c b/lib/libc_r/uthread/uthread_info.c index 305a2b9..0193e04 100644 --- a/lib/libc_r/uthread/uthread_info.c +++ b/lib/libc_r/uthread/uthread_info.c @@ -31,13 +31,14 @@ * * $FreeBSD$ */ +#include +#include #include #include -#include #include -#include +#include #include -#include +#include #include "pthread_private.h" #ifndef NELEMENTS @@ -85,15 +86,18 @@ _thread_dump_info(void) int fd; int i; pthread_t pthread; - char tmpfile[128]; + char *tmpdir; + char tmpfile[PATH_MAX]; pq_list_t *pq_list; + if (issetugid() != 0 || (tmpdir = getenv("TMPDIR")) == NULL) + tmpdir = _PATH_TMP; for (i = 0; i < 100000; i++) { - snprintf(tmpfile, sizeof(tmpfile), "/tmp/uthread.dump.%u.%i", - getpid(), i); + snprintf(tmpfile, sizeof(tmpfile), "%s/uthread.dump.%u.%i", + tmpdir, getpid(), i); /* Open the dump file for append and create it if necessary: */ if ((fd = __sys_open(tmpfile, O_RDWR | O_CREAT | O_EXCL, - 0666)) < 0) { + 0644)) < 0) { /* Can't open the dump file. */ if (errno == EEXIST) continue; -- cgit v1.1