aboutsummaryrefslogtreecommitdiff
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
parent6666a04c6c3797c3833e1af0d9b1c6d896b3c1f0 (diff)
"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
-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 ba398b2919..4133de547d 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;