--- execute_cmd.c.orig Thu Jun 8 17:29:00 1995 +++ execute_cmd.c Fri Nov 24 14:41:40 2000 @@ -2718,6 +2718,7 @@ char *redirectee_word; enum r_instruction ri = redirect->instruction; REDIRECT *new_redirect; + mode_t um; if (ri == r_duplicating_input_word || ri == r_duplicating_output_word) { @@ -2938,11 +2939,15 @@ pid_t pid = getpid (); /* Make the filename for the temp file. */ - sprintf (filename, "/tmp/t%d-sh", pid); + sprintf (filename, "/tmp/t-sh-XXXXXX", pid); - fd = open (filename, O_TRUNC | O_WRONLY | O_CREAT, 0666); + /* O_TRUNC | O_WRONLY | O_CREAT */ + fd = mkstemp (filename); if (fd < 0) return (errno); + um=umask(022); + umask(um); + fchmod(fd, 0666 & ~um); errno = 0; /* XXX */ if (redirectee->word)