aboutsummaryrefslogtreecommitdiffstats
path: root/librecrypt_fill_with_random_.c
diff options
context:
space:
mode:
authorMattias Andrée <m@maandree.se>2026-05-01 17:45:39 +0200
committerMattias Andrée <m@maandree.se>2026-05-01 17:45:39 +0200
commitadfa8e1265f6155d1a582baa9929af198bb5d4de (patch)
treee3cee62aa5a8768621cd294295f787b8cc54141b /librecrypt_fill_with_random_.c
parentAdd librecrypt.7 and README (diff)
downloadlibrecrypt-adfa8e1265f6155d1a582baa9929af198bb5d4de.tar.gz
librecrypt-adfa8e1265f6155d1a582baa9929af198bb5d4de.tar.bz2
librecrypt-adfa8e1265f6155d1a582baa9929af198bb5d4de.tar.xz
Misc
Signed-off-by: Mattias Andrée <m@maandree.se>
Diffstat (limited to 'librecrypt_fill_with_random_.c')
-rw-r--r--librecrypt_fill_with_random_.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/librecrypt_fill_with_random_.c b/librecrypt_fill_with_random_.c
index 475a156..8eb3cfd 100644
--- a/librecrypt_fill_with_random_.c
+++ b/librecrypt_fill_with_random_.c
@@ -16,7 +16,7 @@ librecrypt_fill_with_random_(void *out, size_t n, ssize_t (*rng)(void *out, size
r = (*rng)(buf, n, user);
if (r <= 0) {
if (!r)
- abort();
+ abort(); /* $covered$ */
return -1;
}
buf = &buf[(size_t)r];
@@ -98,10 +98,12 @@ main(void)
SET_UP_ALARM();
+ /* Check default RNG */
EXPECT(librecrypt_fill_with_random_(buf1, sizeof(buf1), NULL, NULL) == 0);
EXPECT(librecrypt_fill_with_random_(buf2, sizeof(buf1), NULL, NULL) == 0);
EXPECT(memcmp(buf1, buf2, sizeof(buf1)));
+ /* Check stateless all-at-once RNG */
memset(buf1, 99, sizeof(buf1));
errno = 0;
EXPECT(librecrypt_fill_with_random_(buf1, sizeof(buf1), &zero, NULL) == 0);
@@ -109,6 +111,7 @@ main(void)
for (s = 0u, i = 0u; i < sizeof(buf1); i++, s++)
EXPECT(!buf1[i]);
+ /* Check stateful chunked RNG (importantly, chunks are smaller than pattern) */
memset(buf1, 99, sizeof(buf1));
s = 0u;
errno = 0;
@@ -117,6 +120,7 @@ main(void)
for (s = 0u, i = 0u; i < sizeof(buf1); i++, s++)
EXPECT(buf1[i] == s);
+ /* Check stateful one-byte-per-call RNG */
memset(buf1, 99, sizeof(buf1));
s = 0u;
errno = 0;
@@ -125,6 +129,7 @@ main(void)
for (s = 0u, i = 0u; i < sizeof(buf1); i++, s++)
EXPECT(buf1[i] == s);
+ /* Check failure in RNG */
memset(buf1, 99, sizeof(buf1));
s = 0u;
errno = 0;
@@ -133,6 +138,7 @@ main(void)
for (s = 0u, i = 0u; i < sizeof(buf1); i++, s++)
EXPECT(buf1[i] == 99);
+ /* Check function abort(3)s if RNG returns 0 */
EXPECT_ABORT(rv = librecrypt_fill_with_random_(buf1, sizeof(buf1), &zero_ret, NULL));
return rv;