aboutsummaryrefslogtreecommitdiffstats
path: root/executor/common_linux.h
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2017-12-26 09:39:22 +0100
committerDmitry Vyukov <dvyukov@google.com>2017-12-27 09:18:26 +0100
commitb7b7ac19fd9e2afbf5aea4db5e3f318576e6809f (patch)
treec43e8bbb312fc42016cd75526301ac9842ae70c9 /executor/common_linux.h
parent6f03c356200becfa347b8abade66ac74f52c10c9 (diff)
executor: check format strings
I see a crash which says: #0: too much cover 0 (errno 0) while the code is: uint64_t n = ...; if (n >= kCoverSize) fail("#%d: too much cover %u", th->id, n); It seems that the high part of n is set, but we don't see it. Add printf format attribute to fail and friends and fix all similar cases. Caught a bunch of similar cases and a missing argument in: exitf("opendir(%s) failed due to NOFILE, exiting");
Diffstat (limited to 'executor/common_linux.h')
-rw-r--r--executor/common_linux.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/executor/common_linux.h b/executor/common_linux.h
index 421486ed5..7f2247d12 100644
--- a/executor/common_linux.h
+++ b/executor/common_linux.h
@@ -150,10 +150,10 @@ static void segv_handler(int sig, siginfo_t* info, void* uctx)
const uintptr_t prog_start = 1 << 20;
const uintptr_t prog_end = 100 << 20;
if (__atomic_load_n(&skip_segv, __ATOMIC_RELAXED) && (addr < prog_start || addr > prog_end)) {
- debug("SIGSEGV on %p, skipping\n", addr);
+ debug("SIGSEGV on %p, skipping\n", (void*)addr);
_longjmp(segv_env, 1);
}
- debug("SIGSEGV on %p, exiting\n", addr);
+ debug("SIGSEGV on %p, exiting\n", (void*)addr);
doexit(sig);
}
@@ -891,7 +891,7 @@ retry:
// This happens when the test process casts prlimit(NOFILE) on us.
// Ideally we somehow prevent test processes from messing with parent processes.
// But full sandboxing is expensive, so let's ignore this error for now.
- exitf("opendir(%s) failed due to NOFILE, exiting");
+ exitf("opendir(%s) failed due to NOFILE, exiting", dir);
}
exitf("opendir(%s) failed", dir);
}