summaryrefslogtreecommitdiffstats
path: root/src/plugins/abrt-action-install-debuginfo.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/abrt-action-install-debuginfo.c')
-rw-r--r--src/plugins/abrt-action-install-debuginfo.c31
1 files changed, 29 insertions, 2 deletions
diff --git a/src/plugins/abrt-action-install-debuginfo.c b/src/plugins/abrt-action-install-debuginfo.c
index dc7eed79..39915e59 100644
--- a/src/plugins/abrt-action-install-debuginfo.c
+++ b/src/plugins/abrt-action-install-debuginfo.c
@@ -3,6 +3,20 @@
#define EXECUTABLE "abrt-action-install-debuginfo.py"
+static void error_msg_and_die(const char *msg, const char *arg)
+{
+ write(2, msg, strlen(msg));
+ if (arg)
+ {
+ write(2, " '", 2);
+ write(2, msg, strlen(msg));
+ write(2, "'", 1);
+ }
+ write(2, "\n", 1);
+ exit(1);
+}
+
+
/* A binary wrapper is needed around python scripts if we want
* to run them in sgid/suid mode.
*
@@ -10,7 +24,20 @@
*/
int main(int argc, char **argv)
{
+ /*
+ * We disallow passing of arguments which point to writable dirs.
+ * This way, the script will always use default arguments.
+ */
+ char **pp = argv;
+ char *arg;
+ while ((arg = *++pp) != NULL)
+ {
+ if (strncmp(arg, "--cache", 7) == 0)
+ error_msg_and_die("bad option", arg);
+ if (strncmp(arg, "--tmpdir", 8) == 0)
+ error_msg_and_die("bad option", arg);
+ }
+
execvp(EXECUTABLE, argv);
- write(2, "Can't execute "EXECUTABLE"\n", strlen("Can't execute "EXECUTABLE"\n"));
- return 1;
+ error_msg_and_die("Can't execute", EXECUTABLE);
}