From 3a9ce672898da15aae7fb0e2d3f21fe28a4ee451 Mon Sep 17 00:00:00 2001 From: John Criswell Date: Fri, 29 Aug 2003 14:46:12 +0000 Subject: [PATCH] "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 --- tools/gccld/gccld.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/tools/gccld/gccld.cpp b/tools/gccld/gccld.cpp index ba398b2919d..4133de547d6 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; -- 2.34.1