From 533af4f0fdd9c80cd0d9560b2363fdec36c08ec1 Mon Sep 17 00:00:00 2001 From: fche Date: Wed, 2 Jan 2008 18:22:28 +0000 Subject: Fix mkdtemp() umask issue Even though the mkdtemp() man page indicates that the directory will be created with always 0700 permissions, it is actually affected by the process's umask. So, if you run stap with an unusual umask it can end up creating the temp dir with permissions that staprun can't handle e.g.: $> rpm -q systemtap systemtap-0.6-1.fc9 $> umask 0122 $> stap -e 'probe begin { println("foo") exit() }' ERROR: Error opening '/tmp/stapV4pBIb/stap_725b9bc541cef2618a5ccbc58bb64d15_287.ko': Permission denied Obvious solution is to briefly set the umask to zero in stap so as to ensure 0700 permissions. Signed-off-by: Mark McLoughlin --- main.cxx | 2 ++ 1 file changed, 2 insertions(+) (limited to 'main.cxx') diff --git a/main.cxx b/main.cxx index 1880436f..556b30ff 100644 --- a/main.cxx +++ b/main.cxx @@ -521,7 +521,9 @@ main (int argc, char * const argv []) string stapdir = "/stapXXXXXX"; string tmpdirt = tmpdir_env + stapdir; + mode_t mask = umask(0); const char* tmpdir = mkdtemp((char *)tmpdirt.c_str()); + umask(mask); if (! tmpdir) { const char* e = strerror (errno); -- cgit