summaryrefslogtreecommitdiffstats
path: root/tools/gccld
diff options
context:
space:
mode:
authorJohn Criswell <criswell@uiuc.edu>2003-08-29 14:46:12 +0000
committerJohn Criswell <criswell@uiuc.edu>2003-08-29 14:46:12 +0000
commit3a9ce672898da15aae7fb0e2d3f21fe28a4ee451 (patch)
treea857c1c22d4642ef15bfd9f1c0d5d476c2112b43 /tools/gccld
parent6666a04c6c3797c3833e1af0d9b1c6d896b3c1f0 (diff)
downloadexternal_llvm-3a9ce672898da15aae7fb0e2d3f21fe28a4ee451.zip
external_llvm-3a9ce672898da15aae7fb0e2d3f21fe28a4ee451.tar.gz
external_llvm-3a9ce672898da15aae7fb0e2d3f21fe28a4ee451.tar.bz2
"Help keep our secrets secret."
Added code to respect the umask value. Before, files were generated world readable, which may not be desirable for all installations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8215 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/gccld')
-rw-r--r--tools/gccld/gccld.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/tools/gccld/gccld.cpp b/tools/gccld/gccld.cpp
index ba398b2..4133de5 100644
--- a/tools/gccld/gccld.cpp
+++ b/tools/gccld/gccld.cpp
@@ -433,6 +433,9 @@ int main(int argc, char **argv) {
Out.close();
if (!LinkAsLibrary) {
+ // Permissions masking value of the user
+ mode_t mask;
+
// Output the script to start the program...
std::ofstream Out2(OutputFilename.c_str());
if (!Out2.good())
@@ -441,11 +444,22 @@ int main(int argc, char **argv) {
Out2 << "#!/bin/sh\nlli -q -abort-on-exception $0.bc $*\n";
Out2.close();
+ //
+ // Grab the umask value from the operating system. We want to use it when
+ // changing the file's permissions.
+ //
+ // Note:
+ // Umask() is one of those annoying system calls. You have to call it
+ // to get the current value and then set it back.
+ //
+ mask = umask (0);
+ umask (mask);
+
// Make the script executable...
- chmod(OutputFilename.c_str(), 0755);
+ chmod(OutputFilename.c_str(), (0755 & ~mask));
// Make the bytecode file directly executable in LLEE as well
- chmod(RealBytecodeOutput.c_str(), 0755);
+ chmod(RealBytecodeOutput.c_str(), (0755 & ~mask));
}
return 0;