chiark / gitweb /
tmpdir: Ignore environment variables; use effective uid only.
authorMark Wooding <mdw@distorted.org.uk>
Thu, 13 Apr 2006 10:20:24 +0000 (11:20 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Thu, 13 Apr 2006 10:20:24 +0000 (11:20 +0100)
Tools which change uid without messing with the environment confuse
tmpdir and persuade it to create directories in the wrong places and
with the wrong permissions.

tmpdir.c

index 0920341358ad6c14dd5fc3ffd5e0d8c822c19214..b2881c80144468c476e558f2108247b636467586 100644 (file)
--- a/tmpdir.c
+++ b/tmpdir.c
@@ -205,16 +205,12 @@ static char *goodtmp(void)
 
   /* --- Try making a directory in `/tmp' --- */
 
-  if (!(q = getenv("USER")) && !(q = getenv("LOGNAME")))
-    q = pw->pw_name;
-  if ((q = trytmp("/tmp", q)) != 0)
+  if ((q = trytmp("/tmp", pw->pw_name)) != 0)
     return (q);
 
   /* --- That failed: try a directory in the user's home --- */
 
-  if (!(q = getenv("HOME")))
-    q = pw->pw_dir;
-  if ((q = trytmp(q, "tmp")) != 0)
+  if ((q = trytmp(pw->pw_dir, "tmp")) != 0)
     return (q);
 
   /* --- Still no joy: give up --- *
@@ -294,7 +290,7 @@ int main(int argc, char *argv[])
   /* --- Initialize variables --- */
 
   ego(argv[0]);
-  me = getuid();
+  me = geteuid();
   cp.cp_what = CP_WRWORLD | CP_WRGRP | CP_WROTHUSR | CP_STICKYOK;
   cp.cp_verbose = 0;
   cp.cp_report = 0;