summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2012-06-12 01:58:10 -0500
committerSlávek Banko <slavek.banko@axis.cz>2012-06-13 21:27:51 +0200
commit93546d981cc14722e6ab1c00c1fd66908bbe8ba5 (patch)
treebf84028cc5f0653a012641a5d3135c4c2aa186c2
parente7453569450bd440b7331e6519d947fe6665ae0b (diff)
downloadtdebase-93546d981cc14722e6ab1c00c1fd66908bbe8ba5.tar.gz
tdebase-93546d981cc14722e6ab1c00c1fd66908bbe8ba5.zip
Only request root access in drkonqui if yama ptrace setting requires it
This resolves Bug 1005 (cherry picked from commit 30461576d34ece5d06626f217a034dbfaa353c4d)
-rw-r--r--drkonqi/backtrace.cpp22
1 files changed, 21 insertions, 1 deletions
diff --git a/drkonqi/backtrace.cpp b/drkonqi/backtrace.cpp
index 36a0fc8ff..7fa052e76 100644
--- a/drkonqi/backtrace.cpp
+++ b/drkonqi/backtrace.cpp
@@ -107,11 +107,31 @@ void BackTrace::start()
::fsync(handle);
m_temp_cmd->close();
+ // determine if yama has been used to prevent ptrace as normal user
+ bool need_root_access = false;
+ TQFile yamactl("/proc/sys/kernel/yama/ptrace_scope");
+ if (yamactl.exists()) {
+ if (yamactl.open(IO_ReadOnly)) {
+ TQTextStream stream(&yamactl);
+ TQString line;
+ line = stream.readLine();
+ if (line.toInt() != 0) {
+ need_root_access = true;
+ }
+ yamactl.close();
+ }
+ }
+
// start the debugger
m_proc = new KProcess;
m_proc->setUseShell(true);
- *m_proc << "kdesu -t --comment \"" << i18n("Administrative access is required to generate a backtrace") << "\" -c \"" << m_temp_cmd->name() << "\"";
+ if (need_root_access == false) {
+ *m_proc << m_temp_cmd->name();
+ }
+ else {
+ *m_proc << "kdesu -t --comment \"" << i18n("Administrative access is required to generate a backtrace") << "\" -c \"" << m_temp_cmd->name() << "\"";
+ }
connect(m_proc, TQT_SIGNAL(receivedStdout(KProcess*, char*, int)),
TQT_SLOT(slotReadInput(KProcess*, char*, int)));