diff --git a/enlightenment/src/bin/e_start_main.c b/enlightenment/src/bin/e_start_main.c index d23a45b..344c343 100644 --- a/enlightenment/src/bin/e_start_main.c +++ b/enlightenment/src/bin/e_start_main.c @@ -234,6 +234,21 @@ _sigusr1(int x __UNUSED__, siginfo_t *info __UNUSED__, void *data __UNUSED__) } int +has_privileges(const char *filename) +{ + int ret; + struct stat statbuf; + + ret = stat(filename, &statbuf); + if (ret == 0 && ((statbuf.st_mode & S_ISUID) + (statbuf.st_mode & S_ISGID))) { + printf("%s has suid/sgid bit set\n", filename); + return 1; + } else { + return 0; + } +} + +int main(int argc, char **argv) { int i, valgrind_mode = 0; @@ -404,8 +419,10 @@ main(int argc, char **argv) copy_args(args + i, argv + 1, argc - 1); args[i + argc - 1] = NULL; - if (valgrind_tool || valgrind_mode) + if (valgrind_tool || valgrind_mode || has_privileges(args[0])) { + printf("Disable tracing\n"); really_know = EINA_TRUE; + } #if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || \ (defined (__MACH__) && defined (__APPLE__))