diff options
Diffstat (limited to 'src/plugins/abrt-action-install-debuginfo.c')
| -rw-r--r-- | src/plugins/abrt-action-install-debuginfo.c | 31 |
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); } |
