From: Mark Wooding Date: Thu, 13 Apr 2006 10:20:24 +0000 (+0100) Subject: tmpdir: Ignore environment variables; use effective uid only. X-Git-Tag: 1.2.0~5 X-Git-Url: https://git.distorted.org.uk/~mdw/checkpath/commitdiff_plain/557179afe0e43fa9abbe5dbcdfa1143d238a8805 tmpdir: Ignore environment variables; use effective uid only. 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. --- diff --git a/tmpdir.c b/tmpdir.c index 0920341..b2881c8 100644 --- 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;