summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSylvestre Ledru <sylvestre@debian.org>2013-09-28 15:47:38 +0000
committerSylvestre Ledru <sylvestre@debian.org>2013-09-28 15:47:38 +0000
commit77c87c05106612bc6f55a247f9601765f0af80aa (patch)
treef05b92541b3d1895648cfe75291919ba20a1042c
parent30eff98e7e04e333618195ac2eec153f7591a471 (diff)
downloadbcm5719-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.cpp9
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;
OpenPOWER on IntegriCloud