#include <lttng/lttng.h>
#include <common/error.h>
+#include <common/compat/getenv.h>
#include "command.h"
{ "snapshot", cmd_snapshot},
{ "save", cmd_save},
{ "load", cmd_load},
+ { "track", cmd_track},
+ { "untrack", cmd_untrack},
{ NULL, NULL} /* Array closure */
};
fprintf(ofp, " view Start trace viewer\n");
fprintf(ofp, " save Save session configuration\n");
fprintf(ofp, " load Load session configuration\n");
+ fprintf(ofp, " track Track specific system resources\n");
+ fprintf(ofp, " untrack Untrack specific system resources\n");
fprintf(ofp, "\n");
fprintf(ofp, "Each command also has its own -h, --help option.\n");
fprintf(ofp, "\n");
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);
break;
case OPT_SESSION_PATH:
opt_sessiond_path = strdup(optarg);
+ if (!opt_sessiond_path) {
+ ret = -1;
+ goto error;
+ }
break;
case OPT_RELAYD_PATH:
opt_relayd_path = strdup(optarg);
+ if (!opt_relayd_path) {
+ ret = -1;
+ goto error;
+ }
break;
case OPT_DUMP_OPTIONS:
list_options(stdout);