#include <lttng/lttng.h>
#include <common/error.h>
+#include <common/compat/getenv.h>
#include "command.h"
sigset_t sigset;
if ((ret = sigemptyset(&sigset)) < 0) {
- perror("sigemptyset");
+ PERROR("sigemptyset");
goto end;
}
sa.sa_mask = sigset;
sa.sa_flags = 0;
if ((ret = sigaction(SIGUSR1, &sa, NULL)) < 0) {
- perror("sigaction");
+ PERROR("sigaction");
goto end;
}
if ((ret = sigaction(SIGTERM, &sa, NULL)) < 0) {
- perror("sigaction");
+ PERROR("sigaction");
goto end;
}
if ((ret = sigaction(SIGCHLD, &sa, NULL)) < 0) {
- perror("sigaction");
+ PERROR("sigaction");
goto end;
}
if (errno == ENOENT) {
ERR("No session daemon found. Use --sessiond-path.");
} else {
- perror("execlp");
+ PERROR("execlp");
}
kill(getppid(), SIGTERM); /* wake parent */
exit(EXIT_FAILURE);
}
goto end;
} else {
- perror("fork");
+ PERROR("fork");
ret = -1;
goto end;
}
int opt, ret;
char *user;
+ if (lttng_is_setuid_setgid()) {
+ ERR("'%s' is not allowed to be executed as a setuid/setgid binary for security reasons. Aborting.", argv[0]);
+ clean_exit(EXIT_FAILURE);
+ }
+
if (argc < 2) {
usage(stderr);
clean_exit(EXIT_FAILURE);