diff options
author | Anton Kling <anton@kling.gg> | 2023-11-23 17:01:55 +0100 |
---|---|---|
committer | Anton Kling <anton@kling.gg> | 2023-11-23 17:01:55 +0100 |
commit | 6757803629574fe46e9047be8567e0c7e0522973 (patch) | |
tree | cf31247efa27997b0b43bfed559ffbb42bfb8f3e /userland/test | |
parent | b8da260dd01175529feb57d5a73570f469decb08 (diff) |
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.
Diffstat (limited to 'userland/test')
-rw-r--r-- | userland/test/test.c | 21 |
1 files changed, 21 insertions, 0 deletions
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; } |