Coverage Report

Created: 2019-06-19 13:33

/src/systemd/src/basic/random-util.h
Line
Count
Source (jump to first uncovered line)
1
/* SPDX-License-Identifier: LGPL-2.1+ */
2
#pragma once
3
4
#include <stdbool.h>
5
#include <stddef.h>
6
#include <stdint.h>
7
8
typedef enum RandomFlags {
9
        RANDOM_EXTEND_WITH_PSEUDO = 1 << 0, /* If we can't get enough genuine randomness, but some, fill up the rest with pseudo-randomness */
10
        RANDOM_BLOCK              = 1 << 1, /* Rather block than return crap randomness (only if the kernel supports that) */
11
        RANDOM_MAY_FAIL           = 1 << 2, /* If we can't get any randomness at all, return early with -ENODATA */
12
        RANDOM_ALLOW_RDRAND       = 1 << 3, /* Allow usage of the CPU RNG */
13
} RandomFlags;
14
15
int genuine_random_bytes(void *p, size_t n, RandomFlags flags); /* returns "genuine" randomness, optionally filled up with pseudo random, if not enough is available */
16
void pseudo_random_bytes(void *p, size_t n);                    /* returns only pseudo-randommess (but possibly seeded from something better) */
17
void random_bytes(void *p, size_t n);                           /* returns genuine randomness if cheaply available, and pseudo randomness if not. */
18
19
void initialize_srand(void);
20
21
0
static inline uint64_t random_u64(void) {
22
0
        uint64_t u;
23
0
        random_bytes(&u, sizeof(u));
24
0
        return u;
25
0
}
Unexecuted instantiation: networkd-lldp-tx.c:random_u64
Unexecuted instantiation: sd-dhcp-client.c:random_u64
Unexecuted instantiation: sd-ipv4ll.c:random_u64
Unexecuted instantiation: sd-ipv4acd.c:random_u64
Unexecuted instantiation: sd-ndisc.c:random_u64
Unexecuted instantiation: sd-radv.c:random_u64
Unexecuted instantiation: sd-dhcp6-client.c:random_u64
Unexecuted instantiation: journald-rate-limit.c:random_u64
Unexecuted instantiation: timer.c:random_u64
Unexecuted instantiation: dynamic-user.c:random_u64
Unexecuted instantiation: link-config.c:random_u64
Unexecuted instantiation: ask-password-api.c:random_u64
Unexecuted instantiation: hashmap.c:random_u64
Unexecuted instantiation: in-addr-util.c:random_u64
Unexecuted instantiation: random-util.c:random_u64
Unexecuted instantiation: tmpfile-util.c:random_u64
Unexecuted instantiation: user-util.c:random_u64
Unexecuted instantiation: sd-id128.c:random_u64
Unexecuted instantiation: journal-file.c:random_u64
26
27
4.46k
static inline uint32_t random_u32(void) {
28
4.46k
        uint32_t u;
29
4.46k
        random_bytes(&u, sizeof(u));
30
4.46k
        return u;
31
4.46k
}
Unexecuted instantiation: networkd-lldp-tx.c:random_u32
Unexecuted instantiation: sd-dhcp-client.c:random_u32
Unexecuted instantiation: sd-ipv4ll.c:random_u32
Unexecuted instantiation: sd-ipv4acd.c:random_u32
Unexecuted instantiation: sd-ndisc.c:random_u32
Unexecuted instantiation: sd-radv.c:random_u32
sd-dhcp6-client.c:random_u32
Line
Count
Source
27
4.46k
static inline uint32_t random_u32(void) {
28
4.46k
        uint32_t u;
29
4.46k
        random_bytes(&u, sizeof(u));
30
4.46k
        return u;
31
4.46k
}
Unexecuted instantiation: journald-rate-limit.c:random_u32
Unexecuted instantiation: timer.c:random_u32
Unexecuted instantiation: dynamic-user.c:random_u32
Unexecuted instantiation: link-config.c:random_u32
Unexecuted instantiation: ask-password-api.c:random_u32
Unexecuted instantiation: hashmap.c:random_u32
Unexecuted instantiation: in-addr-util.c:random_u32
Unexecuted instantiation: random-util.c:random_u32
Unexecuted instantiation: tmpfile-util.c:random_u32
Unexecuted instantiation: user-util.c:random_u32
Unexecuted instantiation: sd-id128.c:random_u32
Unexecuted instantiation: journal-file.c:random_u32
32
33
int rdrand(unsigned long *ret);