Merge pull request #289 from dkg/getrandom_test-cleanup

Ease build of getrandom_test
This commit is contained in:
Wolfgang Hommel
2021-02-04 21:39:02 +01:00
committed by GitHub
4 changed files with 40 additions and 4 deletions

1
.gitignore vendored
View File

@@ -1,6 +1,7 @@
*.o
*.so.1
timetest
test/getrandom_test
src/libfaketime.dylib.1
src/libfaketime.1.dylib

View File

@@ -22,8 +22,14 @@ test: timetest functest
functest:
./testframe.sh functests
getrandom_test: getrandom_test.c
${CC} -o $@ ${CFLAGS} $<
randomtest: getrandom_test
./randomtest.sh
clean:
@rm -f ${OBJ} timetest
@rm -f ${OBJ} timetest getrandom_test
distclean: clean
@echo

View File

@@ -2,13 +2,13 @@
#include <sys/random.h>
#include <stdlib.h>
int main(int argc, char **argv) {
int main() {
char *buf = calloc(100, 1);
size_t buflen = 100;
unsigned flags = GRND_NONBLOCK;
fprintf(stdout, "Before getrandom:\n");
for (int i=0; i < buflen; i++) { fprintf(stdout, "%hhu ", buf[i]); }
for (size_t i=0; i < buflen; i++) { fprintf(stdout, "%hhu ", buf[i]); }
fprintf(stdout, "\n");
int result = getrandom(buf, buflen, flags);
@@ -17,7 +17,7 @@ int main(int argc, char **argv) {
fprintf(stdout, "After getrandom:\n");
for (int i=0; i < buflen; i++) { fprintf(stdout, "%hhu ", buf[i]); }
for (size_t i=0; i < buflen; i++) { fprintf(stdout, "%hhu ", buf[i]); }
fprintf(stdout, "\n");
free(buf);

29
test/randomtest.sh Executable file
View File

@@ -0,0 +1,29 @@
#!/bin/sh
error=0
./getrandom_test > run0
FAKERANDOM_SEED=0x12345678DEADBEEF LD_PRELOAD=../src/libfaketime.so.1 ./getrandom_test > run1
FAKERANDOM_SEED=0x12345678DEADBEEF LD_PRELOAD=../src/libfaketime.so.1 ./getrandom_test > run2
FAKERANDOM_SEED=0x0000000000000000 LD_PRELOAD=../src/libfaketime.so.1 ./getrandom_test > run3
if diff -u run0 run1 > /dev/null; then
error=1
printf >&2 'test run without a seed produced the same data as a run with a seed!\n'
fi
if ! diff -u run1 run2; then
error=2
printf >&2 'test runs with identical seeds differed!\n'
fi
if diff -u run2 run3 >/dev/null; then
error=3
printf >&2 'test runs with different seeds produced the same data!\n'
fi
rm -f run0 run1 run2 run3
if [ 0 = $error ]; then
printf 'getrandom interception test successful.\n'
fi
exit $error