From 4d0797b12c8163e9e94ae0f0c7f4178bff9bdd4a Mon Sep 17 00:00:00 2001 From: netblue30 Date: Mon, 5 Dec 2016 21:16:10 -0500 Subject: testing --- src/firejail/profile.c | 3 +++ src/firejail/rlimit.c | 12 ++++++++++++ src/firejail/sandbox.c | 9 +++++++++ 3 files changed, 24 insertions(+) (limited to 'src') diff --git a/src/firejail/profile.c b/src/firejail/profile.c index 63678514f..da3daf95a 100644 --- a/src/firejail/profile.c +++ b/src/firejail/profile.c @@ -1053,6 +1053,9 @@ void profile_read(const char *fname) { // else { // free(ptr); // } +#ifdef HAVE_GCOV + __gcov_flush(); +#endif } fclose(fp); } diff --git a/src/firejail/rlimit.c b/src/firejail/rlimit.c index a774fd6f5..47dd846d2 100644 --- a/src/firejail/rlimit.c +++ b/src/firejail/rlimit.c @@ -27,6 +27,9 @@ void set_rlimits(void) { if (arg_rlimit_nofile) { rl.rlim_cur = (rlim_t) cfg.rlimit_nofile; rl.rlim_max = (rlim_t) cfg.rlimit_nofile; +#ifdef HAVE_GCOV // gcov-instrumented programs might crash at this point + __gcov_dump(); +#endif if (setrlimit(RLIMIT_NOFILE, &rl) == -1) errExit("setrlimit"); if (arg_debug) @@ -36,6 +39,9 @@ void set_rlimits(void) { if (arg_rlimit_nproc) { rl.rlim_cur = (rlim_t) cfg.rlimit_nproc; rl.rlim_max = (rlim_t) cfg.rlimit_nproc; +#ifdef HAVE_GCOV + __gcov_dump(); +#endif if (setrlimit(RLIMIT_NPROC, &rl) == -1) errExit("setrlimit"); if (arg_debug) @@ -45,6 +51,9 @@ void set_rlimits(void) { if (arg_rlimit_fsize) { rl.rlim_cur = (rlim_t) cfg.rlimit_fsize; rl.rlim_max = (rlim_t) cfg.rlimit_fsize; +#ifdef HAVE_GCOV + __gcov_dump(); +#endif if (setrlimit(RLIMIT_FSIZE, &rl) == -1) errExit("setrlimit"); if (arg_debug) @@ -54,6 +63,9 @@ void set_rlimits(void) { if (arg_rlimit_sigpending) { rl.rlim_cur = (rlim_t) cfg.rlimit_sigpending; rl.rlim_max = (rlim_t) cfg.rlimit_sigpending; +#ifdef HAVE_GCOV + __gcov_dump(); +#endif if (setrlimit(RLIMIT_SIGPENDING, &rl) == -1) errExit("setrlimit"); if (arg_debug) diff --git a/src/firejail/sandbox.c b/src/firejail/sandbox.c index 68b8f554d..50fcd6ed0 100644 --- a/src/firejail/sandbox.c +++ b/src/firejail/sandbox.c @@ -286,6 +286,9 @@ void start_application(void) { //**************************************** if (arg_audit) { assert(arg_audit_prog); +#ifdef HAVE_GCOV + __gcov_dump(); +#endif execl(arg_audit_prog, arg_audit_prog, NULL); } //**************************************** @@ -309,6 +312,9 @@ void start_application(void) { if (!arg_command && !arg_quiet) printf("Child process initialized\n"); +#ifdef HAVE_GCOV + __gcov_dump(); +#endif execvp(cfg.original_argv[cfg.original_program_index], &cfg.original_argv[cfg.original_program_index]); exit(1); } @@ -356,6 +362,9 @@ void start_application(void) { if (!arg_command && !arg_quiet) printf("Child process initialized\n"); +#ifdef HAVE_GCOV + __gcov_dump(); +#endif execvp(arg[0], arg); } -- cgit v1.2.3-70-g09d2