diff options
author | Sylvestre Ledru <sylvestre@debian.org> | 2013-09-28 15:47:38 +0000 |
---|---|---|
committer | Sylvestre Ledru <sylvestre@debian.org> | 2013-09-28 15:47:38 +0000 |
commit | 77c87c05106612bc6f55a247f9601765f0af80aa (patch) | |
tree | f05b92541b3d1895648cfe75291919ba20a1042c | |
parent | 30eff98e7e04e333618195ac2eec153f7591a471 (diff) | |
download | bcm5719-llvm-77c87c05106612bc6f55a247f9601765f0af80aa.tar.gz bcm5719-llvm-77c87c05106612bc6f55a247f9601765f0af80aa.zip |
If setgid fails for any reason, exit lldb.
scan-build was complaining about:
The return value from the call to 'setgid' is not checked. If an error occurs in 'setgid', the following code may execute with unexpected privileges
llvm-svn: 191618
-rw-r--r-- | lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp b/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp index d9d90934381..5578748829d 100644 --- a/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp +++ b/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp @@ -1111,7 +1111,8 @@ ProcessMonitor::Launch(LaunchArgs *args) eDupStdoutFailed, eDupStderrFailed, eChdirFailed, - eExecFailed + eExecFailed, + eSetGidFailed }; // Child process. @@ -1122,7 +1123,8 @@ ProcessMonitor::Launch(LaunchArgs *args) exit(ePtraceFailed); // Do not inherit setgid powers. - setgid(getgid()); + if (setgid(getgid()) != 0) + exit(eSetGidFailed); // Let us have our own process group. setpgid(0, 0); @@ -1187,6 +1189,9 @@ ProcessMonitor::Launch(LaunchArgs *args) case eExecFailed: args->m_error.SetErrorString("Child exec failed."); break; + case eSetGidFailed: + args->m_error.SetErrorString("Child setgid failed."); + break; default: args->m_error.SetErrorString("Child returned unknown exit status."); break; |