From 6757803629574fe46e9047be8567e0c7e0522973 Mon Sep 17 00:00:00 2001 From: Anton Kling Date: Thu, 23 Nov 2023 17:01:55 +0100 Subject: Kernel/LibC: Add randomfill() syscall. This syscall aims to fill the given buffer with cryptographically secure random data. If the syscall returns and does not cause a page fault it will **always** have filled the buffer with random data and never gives back any error value. --- userland/test/test.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'userland/test/test.c') diff --git a/userland/test/test.c b/userland/test/test.c index a8c20dc..940854c 100644 --- a/userland/test/test.c +++ b/userland/test/test.c @@ -735,6 +735,26 @@ void realpath_test(void) { dbgln("realpath TEST PASSED"); } +void randomfill_test(void) { + dbgln("randomfill TEST"); + { + char buffer[4096]; + memset(buffer, 0, 4096); + randomfill(buffer, 4096); + int i; + for (i = 0; i < 4096; i++) { + if (0 != buffer[i]) + break; + } + assert(4096 != i); + char buffer2[4096]; + memcpy(buffer2, buffer, 4096); + randomfill(buffer, 4096); + assert(0 != memcmp(buffer, buffer2, 4096)); + } + dbgln("randomfill TEST PASSED"); +} + int main(void) { dbgln("START"); malloc_test(); @@ -774,6 +794,7 @@ int main(void) { dirname_test(); getline_test(); realpath_test(); + randomfill_test(); // TODO: Add mkstemp return 0; } -- cgit v1.2.3