Add syscall_clock_gettime_heap snippet

This invokes clock_gettime, but uses a timespec from the heap instead
of the stack.

It appears to be successful for me on x86-64 GNU/Linux.

This rules out one possible cause of the error reported in #310: I was
worried that an address from the range occupied by the heap might
somehow be corrupted by the syscall variadic argument de-mangling, but
that looks like it is not the case.
This commit is contained in:
Daniel Kahn Gillmor
2021-03-02 10:32:39 -05:00
parent a3f9410e51
commit d3f3ee38c6
2 changed files with 9 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
struct timespec *ts = malloc(sizeof(struct timespec));
clockid_t ckid = CLOCK_REALTIME;
long ret = syscall(__NR_clock_gettime, ckid, ts);
if (ret == 0)
printf("[%s] syscall(__NR_gettime, CLOCK_REALTIME[%d], ts) -> {%lld, %ld}\n", where, ckid, (long long)ts->tv_sec, ts->tv_nsec);
else
printf("[%s] syscall(__NR_gettime, CLOCK_REALTIME[%d], ts) returned non-zero (%ld)\n", where, ckid, ret);

View File

@@ -0,0 +1 @@
FAKETIME 2020-02-02 02:02:02+00:00