Coverage Report

Created: 2025-10-04 18:33

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/libfido2/fuzz/wrap.c
Line
Count
Source
1
/*
2
 * Copyright (c) 2019-2022 Yubico AB. All rights reserved.
3
 * Use of this source code is governed by a BSD-style
4
 * license that can be found in the LICENSE file.
5
 * SPDX-License-Identifier: BSD-2-Clause
6
 */
7
8
#include <sys/types.h>
9
#include <sys/random.h>
10
#include <sys/socket.h>
11
12
#include <openssl/bn.h>
13
#include <openssl/evp.h>
14
#include <openssl/sha.h>
15
16
#include <cbor.h>
17
#include <stdbool.h>
18
#include <stdint.h>
19
#include <stdio.h>
20
#include <stdlib.h>
21
#include <zlib.h>
22
23
#include "mutator_aux.h"
24
25
extern int prng_up;
26
27
int fuzz_save_corpus;
28
29
/*
30
 * Build wrappers around functions of interest, and have them fail
31
 * in a pseudo-random manner. A uniform probability of 0.25% (1/400)
32
 * allows for a depth of log(0.5)/log(399/400) > 276 operations
33
 * before simulated errors become statistically more likely. 
34
 */
35
36
#define WRAP(type, name, args, retval, param, prob)     \
37
extern type __wrap_##name args;                         \
38
extern type __real_##name args;                         \
39
55.7M
type __wrap_##name args {                               \
40
55.7M
        if (prng_up && uniform_random(400) < (prob)) {       \
41
147k
                return (retval);                        \
42
147k
        }                                                \
43
55.7M
                                                        \
44
55.7M
        return (__real_##name param);                       \
45
55.7M
}
__wrap_malloc
Line
Count
Source
39
4.36M
type __wrap_##name args {                               \
40
4.36M
        if (prng_up && uniform_random(400) < (prob)) {       \
41
12.3k
                return (retval);                        \
42
12.3k
        }                                                \
43
4.36M
                                                        \
44
4.36M
        return (__real_##name param);                       \
45
4.36M
}
__wrap_calloc
Line
Count
Source
39
34.1M
type __wrap_##name args {                               \
40
34.1M
        if (prng_up && uniform_random(400) < (prob)) {       \
41
89.3k
                return (retval);                        \
42
89.3k
        }                                                \
43
34.1M
                                                        \
44
34.1M
        return (__real_##name param);                       \
45
34.1M
}
__wrap_realloc
Line
Count
Source
39
2.81k
type __wrap_##name args {                               \
40
2.81k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
11
                return (retval);                        \
42
11
        }                                                \
43
2.81k
                                                        \
44
2.81k
        return (__real_##name param);                       \
45
2.81k
}
__wrap_strdup
Line
Count
Source
39
2.93M
type __wrap_##name args {                               \
40
2.93M
        if (prng_up && uniform_random(400) < (prob)) {       \
41
8.02k
                return (retval);                        \
42
8.02k
        }                                                \
43
2.93M
                                                        \
44
2.93M
        return (__real_##name param);                       \
45
2.93M
}
__wrap_getrandom
Line
Count
Source
39
3.15M
type __wrap_##name args {                               \
40
3.15M
        if (prng_up && uniform_random(400) < (prob)) {       \
41
7.65k
                return (retval);                        \
42
7.65k
        }                                                \
43
3.15M
                                                        \
44
3.15M
        return (__real_##name param);                       \
45
3.15M
}
__wrap_EVP_Cipher
Line
Count
Source
39
46.9k
type __wrap_##name args {                               \
40
46.9k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
195
                return (retval);                        \
42
195
        }                                                \
43
46.9k
                                                        \
44
46.9k
        return (__real_##name param);                       \
45
46.9k
}
__wrap_EVP_CIPHER_CTX_ctrl
Line
Count
Source
39
6.46k
type __wrap_##name args {                               \
40
6.46k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
35
                return (retval);                        \
42
35
        }                                                \
43
6.46k
                                                        \
44
6.46k
        return (__real_##name param);                       \
45
6.46k
}
__wrap_EVP_CIPHER_CTX_new
Line
Count
Source
39
34.4k
type __wrap_##name args {                               \
40
34.4k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
97
                return (retval);                        \
42
97
        }                                                \
43
34.4k
                                                        \
44
34.4k
        return (__real_##name param);                       \
45
34.4k
}
__wrap_EVP_CipherInit
Line
Count
Source
39
34.2k
type __wrap_##name args {                               \
40
34.2k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
145
                return (retval);                        \
42
145
        }                                                \
43
34.2k
                                                        \
44
34.2k
        return (__real_##name param);                       \
45
34.2k
}
__wrap_EVP_PKEY_get0_RSA
Line
Count
Source
39
503
type __wrap_##name args {                               \
40
503
        if (prng_up && uniform_random(400) < (prob)) {       \
41
5
                return (retval);                        \
42
5
        }                                                \
43
503
                                                        \
44
503
        return (__real_##name param);                       \
45
503
}
__wrap_EVP_PKEY_get0_EC_KEY
Line
Count
Source
39
48.7k
type __wrap_##name args {                               \
40
48.7k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
463
                return (retval);                        \
42
463
        }                                                \
43
48.7k
                                                        \
44
48.7k
        return (__real_##name param);                       \
45
48.7k
}
__wrap_EVP_PKEY_get_raw_public_key
Line
Count
Source
39
8.56k
type __wrap_##name args {                               \
40
8.56k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
97
                return (retval);                        \
42
97
        }                                                \
43
8.56k
                                                        \
44
8.56k
        return (__real_##name param);                       \
45
8.56k
}
__wrap_EVP_MD_CTX_new
Line
Count
Source
39
9.79k
type __wrap_##name args {                               \
40
9.79k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
117
                return (retval);                        \
42
117
        }                                                \
43
9.79k
                                                        \
44
9.79k
        return (__real_##name param);                       \
45
9.79k
}
__wrap_EVP_DigestVerifyInit
Line
Count
Source
39
838
type __wrap_##name args {                               \
40
838
        if (prng_up && uniform_random(400) < (prob)) {       \
41
24
                return (retval);                        \
42
24
        }                                                \
43
838
                                                        \
44
838
        return (__real_##name param);                       \
45
838
}
__wrap_EVP_DigestInit_ex
Line
Count
Source
39
8.83k
type __wrap_##name args {                               \
40
8.83k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
74
                return (retval);                        \
42
74
        }                                                \
43
8.83k
                                                        \
44
8.83k
        return (__real_##name param);                       \
45
8.83k
}
__wrap_EVP_DigestUpdate
Line
Count
Source
39
19.9k
type __wrap_##name args {                               \
40
19.9k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
367
                return (retval);                        \
42
367
        }                                                \
43
19.9k
                                                        \
44
19.9k
        return (__real_##name param);                       \
45
19.9k
}
__wrap_EVP_DigestFinal_ex
Line
Count
Source
39
8.39k
type __wrap_##name args {                               \
40
8.39k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
78
                return (retval);                        \
42
78
        }                                                \
43
8.39k
                                                        \
44
8.39k
        return (__real_##name param);                       \
45
8.39k
}
__wrap_BN_bin2bn
Line
Count
Source
39
152k
type __wrap_##name args {                               \
40
152k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
1.41k
                return (retval);                        \
42
1.41k
        }                                                \
43
152k
                                                        \
44
152k
        return (__real_##name param);                       \
45
152k
}
__wrap_BN_bn2bin
Line
Count
Source
39
138k
type __wrap_##name args {                               \
40
138k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
999
                return (retval);                        \
42
999
        }                                                \
43
138k
                                                        \
44
138k
        return (__real_##name param);                       \
45
138k
}
__wrap_BN_CTX_get
Line
Count
Source
39
185k
type __wrap_##name args {                               \
40
185k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
1.09k
                return (retval);                        \
42
1.09k
        }                                                \
43
185k
                                                        \
44
185k
        return (__real_##name param);                       \
45
185k
}
__wrap_BN_CTX_new
Line
Count
Source
39
103k
type __wrap_##name args {                               \
40
103k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
546
                return (retval);                        \
42
546
        }                                                \
43
103k
                                                        \
44
103k
        return (__real_##name param);                       \
45
103k
}
__wrap_BN_new
Line
Count
Source
39
12.8k
type __wrap_##name args {                               \
40
12.8k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
146
                return (retval);                        \
42
146
        }                                                \
43
12.8k
                                                        \
44
12.8k
        return (__real_##name param);                       \
45
12.8k
}
__wrap_RSA_new
Line
Count
Source
39
6.04k
type __wrap_##name args {                               \
40
6.04k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
101
                return (retval);                        \
42
101
        }                                                \
43
6.04k
                                                        \
44
6.04k
        return (__real_##name param);                       \
45
6.04k
}
__wrap_RSA_set0_key
Line
Count
Source
39
5.94k
type __wrap_##name args {                               \
40
5.94k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
57
                return (retval);                        \
42
57
        }                                                \
43
5.94k
                                                        \
44
5.94k
        return (__real_##name param);                       \
45
5.94k
}
Unexecuted instantiation: __wrap_RSA_pkey_ctx_ctrl
__wrap_EC_KEY_new_by_curve_name
Line
Count
Source
39
102k
type __wrap_##name args {                               \
40
102k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
720
                return (retval);                        \
42
720
        }                                                \
43
102k
                                                        \
44
102k
        return (__real_##name param);                       \
45
102k
}
__wrap_EC_KEY_get0_group
Line
Count
Source
39
82.0k
type __wrap_##name args {                               \
40
82.0k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
424
                return (retval);                        \
42
424
        }                                                \
43
82.0k
                                                        \
44
82.0k
        return (__real_##name param);                       \
45
82.0k
}
__wrap_EC_KEY_get0_private_key
Line
Count
Source
39
47.7k
type __wrap_##name args {                               \
40
47.7k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
379
                return (retval);                        \
42
379
        }                                                \
43
47.7k
                                                        \
44
47.7k
        return (__real_##name param);                       \
45
47.7k
}
__wrap_EC_POINT_new
Line
Count
Source
39
81.6k
type __wrap_##name args {                               \
40
81.6k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
514
                return (retval);                        \
42
514
        }                                                \
43
81.6k
                                                        \
44
81.6k
        return (__real_##name param);                       \
45
81.6k
}
__wrap_EC_POINT_get_affine_coordinates_GFp
Line
Count
Source
39
45.4k
type __wrap_##name args {                               \
40
45.4k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
246
                return (retval);                        \
42
246
        }                                                \
43
45.4k
                                                        \
44
45.4k
        return (__real_##name param);                       \
45
45.4k
}
__wrap_EVP_PKEY_new
Line
Count
Source
39
44.8k
type __wrap_##name args {                               \
40
44.8k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
204
                return (retval);                        \
42
204
        }                                                \
43
44.8k
                                                        \
44
44.8k
        return (__real_##name param);                       \
45
44.8k
}
__wrap_EVP_PKEY_assign
Line
Count
Source
39
44.6k
type __wrap_##name args {                               \
40
44.6k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
273
                return (retval);                        \
42
273
        }                                                \
43
44.6k
                                                        \
44
44.6k
        return (__real_##name param);                       \
45
44.6k
}
__wrap_EVP_PKEY_keygen_init
Line
Count
Source
39
48.7k
type __wrap_##name args {                               \
40
48.7k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
311
                return (retval);                        \
42
311
        }                                                \
43
48.7k
                                                        \
44
48.7k
        return (__real_##name param);                       \
45
48.7k
}
__wrap_EVP_PKEY_keygen
Line
Count
Source
39
48.4k
type __wrap_##name args {                               \
40
48.4k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
284
                return (retval);                        \
42
284
        }                                                \
43
48.4k
                                                        \
44
48.4k
        return (__real_##name param);                       \
45
48.4k
}
__wrap_EVP_PKEY_paramgen_init
Line
Count
Source
39
49.6k
type __wrap_##name args {                               \
40
49.6k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
252
                return (retval);                        \
42
252
        }                                                \
43
49.6k
                                                        \
44
49.6k
        return (__real_##name param);                       \
45
49.6k
}
__wrap_EVP_PKEY_paramgen
Line
Count
Source
39
49.3k
type __wrap_##name args {                               \
40
49.3k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
276
                return (retval);                        \
42
276
        }                                                \
43
49.3k
                                                        \
44
49.3k
        return (__real_##name param);                       \
45
49.3k
}
__wrap_EVP_PKEY_new_raw_public_key
Line
Count
Source
39
5.92k
type __wrap_##name args {                               \
40
5.92k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
95
                return (retval);                        \
42
95
        }                                                \
43
5.92k
                                                        \
44
5.92k
        return (__real_##name param);                       \
45
5.92k
}
__wrap_EVP_PKEY_CTX_new
Line
Count
Source
39
72.5k
type __wrap_##name args {                               \
40
72.5k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
459
                return (retval);                        \
42
459
        }                                                \
43
72.5k
                                                        \
44
72.5k
        return (__real_##name param);                       \
45
72.5k
}
__wrap_EVP_PKEY_CTX_new_id
Line
Count
Source
39
55.3k
type __wrap_##name args {                               \
40
55.3k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
267
                return (retval);                        \
42
267
        }                                                \
43
55.3k
                                                        \
44
55.3k
        return (__real_##name param);                       \
45
55.3k
}
__wrap_EVP_PKEY_derive
Line
Count
Source
39
43.1k
type __wrap_##name args {                               \
40
43.1k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
316
                return (retval);                        \
42
316
        }                                                \
43
43.1k
                                                        \
44
43.1k
        return (__real_##name param);                       \
45
43.1k
}
__wrap_EVP_PKEY_derive_init
Line
Count
Source
39
24.6k
type __wrap_##name args {                               \
40
24.6k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
184
                return (retval);                        \
42
184
        }                                                \
43
24.6k
                                                        \
44
24.6k
        return (__real_##name param);                       \
45
24.6k
}
__wrap_EVP_PKEY_derive_set_peer
Line
Count
Source
39
19.1k
type __wrap_##name args {                               \
40
19.1k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
152
                return (retval);                        \
42
152
        }                                                \
43
19.1k
                                                        \
44
19.1k
        return (__real_##name param);                       \
45
19.1k
}
__wrap_EVP_PKEY_verify_init
Line
Count
Source
39
4.03k
type __wrap_##name args {                               \
40
4.03k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
111
                return (retval);                        \
42
111
        }                                                \
43
4.03k
                                                        \
44
4.03k
        return (__real_##name param);                       \
45
4.03k
}
Unexecuted instantiation: __wrap_EVP_PKEY_CTX_ctrl
__wrap_EVP_sha1
Line
Count
Source
39
1.38k
type __wrap_##name args {                               \
40
1.38k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
11
                return (retval);                        \
42
11
        }                                                \
43
1.38k
                                                        \
44
1.38k
        return (__real_##name param);                       \
45
1.38k
}
__wrap_EVP_sha256
Line
Count
Source
39
24.1k
type __wrap_##name args {                               \
40
24.1k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
233
                return (retval);                        \
42
233
        }                                                \
43
24.1k
                                                        \
44
24.1k
        return (__real_##name param);                       \
45
24.1k
}
__wrap_EVP_aes_256_cbc
Line
Count
Source
39
27.8k
type __wrap_##name args {                               \
40
27.8k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
90
                return (retval);                        \
42
90
        }                                                \
43
27.8k
                                                        \
44
27.8k
        return (__real_##name param);                       \
45
27.8k
}
__wrap_EVP_aes_256_gcm
Line
Count
Source
39
6.56k
type __wrap_##name args {                               \
40
6.56k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
41
                return (retval);                        \
42
41
        }                                                \
43
6.56k
                                                        \
44
6.56k
        return (__real_##name param);                       \
45
6.56k
}
__wrap_HMAC
Line
Count
Source
39
12.3k
type __wrap_##name args {                               \
40
12.3k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
71
                return (retval);                        \
42
71
        }                                                \
43
12.3k
                                                        \
44
12.3k
        return (__real_##name param);                       \
45
12.3k
}
__wrap_HMAC_CTX_new
Line
Count
Source
39
120
type __wrap_##name args {                               \
40
120
        if (prng_up && uniform_random(400) < (prob)) {       \
41
3
                return (retval);                        \
42
3
        }                                                \
43
120
                                                        \
44
120
        return (__real_##name param);                       \
45
120
}
__wrap_HMAC_Init_ex
Line
Count
Source
39
112
type __wrap_##name args {                               \
40
112
        if (prng_up && uniform_random(400) < (prob)) {       \
41
4
                return (retval);                        \
42
4
        }                                                \
43
112
                                                        \
44
112
        return (__real_##name param);                       \
45
112
}
__wrap_HMAC_Update
Line
Count
Source
39
210
type __wrap_##name args {                               \
40
210
        if (prng_up && uniform_random(400) < (prob)) {       \
41
9
                return (retval);                        \
42
9
        }                                                \
43
210
                                                        \
44
210
        return (__real_##name param);                       \
45
210
}
__wrap_HMAC_Final
Line
Count
Source
39
99
type __wrap_##name args {                               \
40
99
        if (prng_up && uniform_random(400) < (prob)) {       \
41
5
                return (retval);                        \
42
5
        }                                                \
43
99
                                                        \
44
99
        return (__real_##name param);                       \
45
99
}
__wrap_SHA1
Line
Count
Source
39
748
type __wrap_##name args {                               \
40
748
        if (prng_up && uniform_random(400) < (prob)) {       \
41
6
                return (retval);                        \
42
6
        }                                                \
43
748
                                                        \
44
748
        return (__real_##name param);                       \
45
748
}
__wrap_SHA256
Line
Count
Source
39
105k
type __wrap_##name args {                               \
40
105k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
561
                return (retval);                        \
42
561
        }                                                \
43
105k
                                                        \
44
105k
        return (__real_##name param);                       \
45
105k
}
__wrap_cbor_build_string
Line
Count
Source
39
1.44M
type __wrap_##name args {                               \
40
1.44M
        if (prng_up && uniform_random(400) < (prob)) {       \
41
936
                return (retval);                        \
42
936
        }                                                \
43
1.44M
                                                        \
44
1.44M
        return (__real_##name param);                       \
45
1.44M
}
__wrap_cbor_build_bytestring
Line
Count
Source
39
491k
type __wrap_##name args {                               \
40
491k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
670
                return (retval);                        \
42
670
        }                                                \
43
491k
                                                        \
44
491k
        return (__real_##name param);                       \
45
491k
}
__wrap_cbor_build_bool
Line
Count
Source
39
19.7k
type __wrap_##name args {                               \
40
19.7k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
33
                return (retval);                        \
42
33
        }                                                \
43
19.7k
                                                        \
44
19.7k
        return (__real_##name param);                       \
45
19.7k
}
__wrap_cbor_build_negint8
Line
Count
Source
39
71.9k
type __wrap_##name args {                               \
40
71.9k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
293
                return (retval);                        \
42
293
        }                                                \
43
71.9k
                                                        \
44
71.9k
        return (__real_##name param);                       \
45
71.9k
}
__wrap_cbor_build_negint16
Line
Count
Source
39
1.75k
type __wrap_##name args {                               \
40
1.75k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
3
                return (retval);                        \
42
3
        }                                                \
43
1.75k
                                                        \
44
1.75k
        return (__real_##name param);                       \
45
1.75k
}
__wrap_cbor_load
Line
Count
Source
39
215k
type __wrap_##name args {                               \
40
215k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
851
                return (retval);                        \
42
851
        }                                                \
43
215k
                                                        \
44
215k
        return (__real_##name param);                       \
45
215k
}
__wrap_cbor_build_uint8
Line
Count
Source
39
571k
type __wrap_##name args {                               \
40
571k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
1.90k
                return (retval);                        \
42
1.90k
        }                                                \
43
571k
                                                        \
44
571k
        return (__real_##name param);                       \
45
571k
}
__wrap_cbor_build_uint16
Line
Count
Source
39
4.78k
type __wrap_##name args {                               \
40
4.78k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
19
                return (retval);                        \
42
19
        }                                                \
43
4.78k
                                                        \
44
4.78k
        return (__real_##name param);                       \
45
4.78k
}
__wrap_cbor_build_uint32
Line
Count
Source
39
2.15k
type __wrap_##name args {                               \
40
2.15k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
20
                return (retval);                        \
42
20
        }                                                \
43
2.15k
                                                        \
44
2.15k
        return (__real_##name param);                       \
45
2.15k
}
Unexecuted instantiation: __wrap_cbor_build_uint64
__wrap_cbor_map_handle
Line
Count
Source
39
339k
type __wrap_##name args {                               \
40
339k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
1.41k
                return (retval);                        \
42
1.41k
        }                                                \
43
339k
                                                        \
44
339k
        return (__real_##name param);                       \
45
339k
}
__wrap_cbor_array_handle
Line
Count
Source
39
189k
type __wrap_##name args {                               \
40
189k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
125
                return (retval);                        \
42
125
        }                                                \
43
189k
                                                        \
44
189k
        return (__real_##name param);                       \
45
189k
}
__wrap_cbor_array_push
Line
Count
Source
39
519k
type __wrap_##name args {                               \
40
519k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
460
                return (retval);                        \
42
460
        }                                                \
43
519k
                                                        \
44
519k
        return (__real_##name param);                       \
45
519k
}
__wrap_cbor_map_add
Line
Count
Source
39
1.24M
type __wrap_##name args {                               \
40
1.24M
        if (prng_up && uniform_random(400) < (prob)) {       \
41
1.40k
                return (retval);                        \
42
1.40k
        }                                                \
43
1.24M
                                                        \
44
1.24M
        return (__real_##name param);                       \
45
1.24M
}
__wrap_cbor_new_definite_map
Line
Count
Source
39
567k
type __wrap_##name args {                               \
40
567k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
556
                return (retval);                        \
42
556
        }                                                \
43
567k
                                                        \
44
567k
        return (__real_##name param);                       \
45
567k
}
__wrap_cbor_new_definite_array
Line
Count
Source
39
27.4k
type __wrap_##name args {                               \
40
27.4k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
61
                return (retval);                        \
42
61
        }                                                \
43
27.4k
                                                        \
44
27.4k
        return (__real_##name param);                       \
45
27.4k
}
__wrap_cbor_new_definite_bytestring
Line
Count
Source
39
702
type __wrap_##name args {                               \
40
702
        if (prng_up && uniform_random(400) < (prob)) {       \
41
16
                return (retval);                        \
42
16
        }                                                \
43
702
                                                        \
44
702
        return (__real_##name param);                       \
45
702
}
__wrap_cbor_serialize_alloc
Line
Count
Source
39
166k
type __wrap_##name args {                               \
40
166k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
772
                return (retval);                        \
42
772
        }                                                \
43
166k
                                                        \
44
166k
        return (__real_##name param);                       \
45
166k
}
__wrap_fido_tx
Line
Count
Source
39
629k
type __wrap_##name args {                               \
40
629k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
1.64k
                return (retval);                        \
42
1.64k
        }                                                \
43
629k
                                                        \
44
629k
        return (__real_##name param);                       \
45
629k
}
__wrap_bind
Line
Count
Source
39
2.75M
type __wrap_##name args {                               \
40
2.75M
        if (prng_up && uniform_random(400) < (prob)) {       \
41
6.65k
                return (retval);                        \
42
6.65k
        }                                                \
43
2.75M
                                                        \
44
2.75M
        return (__real_##name param);                       \
45
2.75M
}
__wrap_deflateInit2_
Line
Count
Source
39
4.10k
type __wrap_##name args {                               \
40
4.10k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
4
                return (retval);                        \
42
4
        }                                                \
43
4.10k
                                                        \
44
4.10k
        return (__real_##name param);                       \
45
4.10k
}
46
47
WRAP(void *,
48
        malloc,
49
        (size_t size),
50
        NULL,
51
        (size),
52
        1
53
)
54
55
WRAP(void *,
56
        calloc,
57
        (size_t nmemb, size_t size),
58
        NULL,
59
        (nmemb, size),
60
        1
61
)
62
63
WRAP(void *,
64
        realloc,
65
        (void *ptr, size_t size),
66
        NULL,
67
        (ptr, size),
68
        1
69
)
70
71
WRAP(char *,
72
        strdup,
73
        (const char *s),
74
        NULL,
75
        (s),
76
        1
77
)
78
79
WRAP(ssize_t,
80
        getrandom,
81
        (void *buf, size_t buflen, unsigned int flags),
82
        -1,
83
        (buf, buflen, flags),
84
        1
85
)
86
87
WRAP(int,
88
        EVP_Cipher,
89
        (EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in,
90
            unsigned int inl),
91
        -1,
92
        (ctx, out, in, inl),
93
        1
94
)
95
96
WRAP(int,
97
        EVP_CIPHER_CTX_ctrl,
98
        (EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr),
99
        0,
100
        (ctx, type, arg, ptr),
101
        1
102
)
103
104
WRAP(EVP_CIPHER_CTX *,
105
        EVP_CIPHER_CTX_new,
106
        (void),
107
        NULL,
108
        (),
109
        1
110
)
111
112
WRAP(int,
113
        EVP_CipherInit,
114
        (EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
115
            const unsigned char *key, const unsigned char *iv, int enc),
116
        0,
117
        (ctx, cipher, key, iv, enc),
118
        1
119
)
120
121
WRAP(RSA *,
122
        EVP_PKEY_get0_RSA,
123
        (EVP_PKEY *pkey),
124
        NULL,
125
        (pkey),
126
        1
127
)
128
129
WRAP(EC_KEY *,
130
        EVP_PKEY_get0_EC_KEY,
131
        (EVP_PKEY *pkey),
132
        NULL,
133
        (pkey),
134
        1
135
)
136
137
WRAP(int,
138
        EVP_PKEY_get_raw_public_key,
139
        (const EVP_PKEY *pkey, unsigned char *pub, size_t *len),
140
        0,
141
        (pkey, pub, len),
142
        1
143
)
144
145
WRAP(EVP_MD_CTX *,
146
        EVP_MD_CTX_new,
147
        (void),
148
        NULL,
149
        (),
150
        1
151
)
152
153
WRAP(int,
154
        EVP_DigestVerifyInit,
155
        (EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const EVP_MD *type, ENGINE *e,
156
            EVP_PKEY *pkey),
157
        0,
158
        (ctx, pctx, type, e, pkey),
159
        1
160
)
161
162
WRAP(int,
163
        EVP_DigestInit_ex,
164
        (EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl),
165
        0,
166
        (ctx, type, impl),
167
        1
168
)
169
170
WRAP(int,
171
        EVP_DigestUpdate,
172
        (EVP_MD_CTX *ctx, const void *data, size_t count),
173
        0,
174
        (ctx, data, count),
175
        1
176
)
177
178
WRAP(int,
179
        EVP_DigestFinal_ex,
180
        (EVP_MD_CTX *ctx, unsigned char *md, unsigned int *isize),
181
        0,
182
        (ctx, md, isize),
183
        1
184
)
185
186
WRAP(BIGNUM *,
187
        BN_bin2bn,
188
        (const unsigned char *s, int len, BIGNUM *ret),
189
        NULL,
190
        (s, len, ret),
191
        1
192
)
193
194
WRAP(int,
195
        BN_bn2bin,
196
        (const BIGNUM *a, unsigned char *to),
197
        -1,
198
        (a, to),
199
        1
200
)
201
202
WRAP(BIGNUM *,
203
        BN_CTX_get,
204
        (BN_CTX *ctx),
205
        NULL,
206
        (ctx),
207
        1
208
)
209
210
WRAP(BN_CTX *,
211
        BN_CTX_new,
212
        (void),
213
        NULL,
214
        (),
215
        1
216
)
217
218
WRAP(BIGNUM *,
219
        BN_new,
220
        (void),
221
        NULL,
222
        (),
223
        1
224
)
225
226
WRAP(RSA *,
227
        RSA_new,
228
        (void),
229
        NULL,
230
        (),
231
        1
232
)
233
234
WRAP(int,
235
        RSA_set0_key,
236
        (RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d),
237
        0,
238
        (r, n, e, d),
239
        1
240
)
241
242
WRAP(int,
243
        RSA_pkey_ctx_ctrl,
244
        (EVP_PKEY_CTX *ctx, int optype, int cmd, int p1, void *p2),
245
        -1,
246
        (ctx, optype, cmd, p1, p2),
247
        1
248
)
249
250
WRAP(EC_KEY *,
251
        EC_KEY_new_by_curve_name,
252
        (int nid),
253
        NULL,
254
        (nid),
255
        1
256
)
257
258
WRAP(const EC_GROUP *,
259
        EC_KEY_get0_group,
260
        (const EC_KEY *key),
261
        NULL,
262
        (key),
263
        1
264
)
265
266
WRAP(const BIGNUM *,
267
        EC_KEY_get0_private_key,
268
        (const EC_KEY *key),
269
        NULL,
270
        (key),
271
        1
272
)
273
274
WRAP(EC_POINT *,
275
        EC_POINT_new,
276
        (const EC_GROUP *group),
277
        NULL,
278
        (group),
279
        1
280
)
281
282
WRAP(int,
283
        EC_POINT_get_affine_coordinates_GFp,
284
        (const EC_GROUP *group, const EC_POINT *p, BIGNUM *x, BIGNUM *y, BN_CTX *ctx),
285
        0,
286
        (group, p, x, y, ctx),
287
        1
288
)
289
290
WRAP(EVP_PKEY *,
291
        EVP_PKEY_new,
292
        (void),
293
        NULL,
294
        (),
295
        1
296
)
297
298
WRAP(int,
299
        EVP_PKEY_assign,
300
        (EVP_PKEY *pkey, int type, void *key),
301
        0,
302
        (pkey, type, key),
303
        1
304
)
305
306
WRAP(int,
307
        EVP_PKEY_keygen_init,
308
        (EVP_PKEY_CTX *ctx),
309
        0,
310
        (ctx),
311
        1
312
)
313
314
WRAP(int,
315
        EVP_PKEY_keygen,
316
        (EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey),
317
        0,
318
        (ctx, ppkey),
319
        1
320
)
321
322
WRAP(int,
323
        EVP_PKEY_paramgen_init,
324
        (EVP_PKEY_CTX *ctx),
325
        0,
326
        (ctx),
327
        1
328
)
329
330
WRAP(int,
331
        EVP_PKEY_paramgen,
332
        (EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey),
333
        0,
334
        (ctx, ppkey),
335
        1
336
)
337
338
WRAP(EVP_PKEY *,
339
        EVP_PKEY_new_raw_public_key,
340
        (int type, ENGINE *e, const unsigned char *key, size_t keylen),
341
        NULL,
342
        (type, e, key, keylen),
343
        1
344
)
345
346
WRAP(EVP_PKEY_CTX *,
347
        EVP_PKEY_CTX_new,
348
        (EVP_PKEY *pkey, ENGINE *e),
349
        NULL,
350
        (pkey, e),
351
        1
352
)
353
354
WRAP(EVP_PKEY_CTX *,
355
        EVP_PKEY_CTX_new_id,
356
        (int id, ENGINE *e),
357
        NULL,
358
        (id, e),
359
        1
360
)
361
362
WRAP(int,
363
        EVP_PKEY_derive,
364
        (EVP_PKEY_CTX *ctx, unsigned char *key, size_t *pkeylen),
365
        0,
366
        (ctx, key, pkeylen),
367
        1
368
)
369
370
WRAP(int,
371
        EVP_PKEY_derive_init,
372
        (EVP_PKEY_CTX *ctx),
373
        0,
374
        (ctx),
375
        1
376
)
377
378
WRAP(int,
379
        EVP_PKEY_derive_set_peer,
380
        (EVP_PKEY_CTX *ctx, EVP_PKEY *peer),
381
        0,
382
        (ctx, peer),
383
        1
384
)
385
386
WRAP(int,
387
        EVP_PKEY_verify_init,
388
        (EVP_PKEY_CTX *ctx),
389
        0,
390
        (ctx),
391
        1
392
)
393
394
WRAP(int,
395
        EVP_PKEY_CTX_ctrl,
396
        (EVP_PKEY_CTX *ctx, int keytype, int optype, int cmd, int p1, void *p2),
397
        -1,
398
        (ctx, keytype, optype, cmd, p1, p2),
399
        1
400
)
401
402
WRAP(const EVP_MD *,
403
        EVP_sha1,
404
        (void),
405
        NULL,
406
        (),
407
        1
408
)
409
410
WRAP(const EVP_MD *,
411
        EVP_sha256,
412
        (void),
413
        NULL,
414
        (),
415
        1
416
)
417
418
WRAP(const EVP_CIPHER *,
419
        EVP_aes_256_cbc,
420
        (void),
421
        NULL,
422
        (),
423
        1
424
)
425
426
WRAP(const EVP_CIPHER *,
427
        EVP_aes_256_gcm,
428
        (void),
429
        NULL,
430
        (),
431
        1
432
)
433
434
WRAP(unsigned char *,
435
        HMAC,
436
        (const EVP_MD *evp_md, const void *key, int key_len,
437
            const unsigned char *d, int n, unsigned char *md,
438
            unsigned int *md_len),
439
        NULL,
440
        (evp_md, key, key_len, d, n, md, md_len),
441
        1
442
)
443
444
WRAP(HMAC_CTX *,
445
        HMAC_CTX_new,
446
        (void),
447
        NULL,
448
        (),
449
        1
450
)
451
452
WRAP(int,
453
        HMAC_Init_ex,
454
        (HMAC_CTX *ctx, const void *key, int key_len, const EVP_MD *md,
455
            ENGINE *impl),
456
        0,
457
        (ctx, key, key_len, md, impl),
458
        1
459
)
460
461
WRAP(int,
462
        HMAC_Update,
463
        (HMAC_CTX *ctx, const unsigned char *data, int len),
464
        0,
465
        (ctx, data, len),
466
        1
467
)
468
469
WRAP(int,
470
        HMAC_Final,
471
        (HMAC_CTX *ctx, unsigned char *md, unsigned int *len),
472
        0,
473
        (ctx, md, len),
474
        1
475
)
476
477
WRAP(unsigned char *,
478
        SHA1,
479
        (const unsigned char *d, size_t n, unsigned char *md),
480
        NULL,
481
        (d, n, md),
482
        1
483
)
484
485
WRAP(unsigned char *,
486
        SHA256,
487
        (const unsigned char *d, size_t n, unsigned char *md),
488
        NULL,
489
        (d, n, md),
490
        1
491
)
492
493
WRAP(cbor_item_t *,
494
        cbor_build_string,
495
        (const char *val),
496
        NULL,
497
        (val),
498
        1
499
)
500
501
WRAP(cbor_item_t *,
502
        cbor_build_bytestring,
503
        (cbor_data handle, size_t length),
504
        NULL,
505
        (handle, length),
506
        1
507
)
508
509
WRAP(cbor_item_t *,
510
        cbor_build_bool,
511
        (bool value),
512
        NULL,
513
        (value),
514
        1
515
)
516
517
WRAP(cbor_item_t *,
518
        cbor_build_negint8,
519
        (uint8_t value),
520
        NULL,
521
        (value),
522
        1
523
)
524
525
WRAP(cbor_item_t *,
526
        cbor_build_negint16,
527
        (uint16_t value),
528
        NULL,
529
        (value),
530
        1
531
)
532
533
WRAP(cbor_item_t *,
534
        cbor_load,
535
        (cbor_data source, size_t source_size, struct cbor_load_result *result),
536
        NULL,
537
        (source, source_size, result),
538
        1
539
)
540
541
WRAP(cbor_item_t *,
542
        cbor_build_uint8,
543
        (uint8_t value),
544
        NULL,
545
        (value),
546
        1
547
)
548
549
WRAP(cbor_item_t *,
550
        cbor_build_uint16,
551
        (uint16_t value),
552
        NULL,
553
        (value),
554
        1
555
)
556
557
WRAP(cbor_item_t *,
558
        cbor_build_uint32,
559
        (uint32_t value),
560
        NULL,
561
        (value),
562
        1
563
)
564
565
WRAP(cbor_item_t *,
566
        cbor_build_uint64,
567
        (uint64_t value),
568
        NULL,
569
        (value),
570
        1
571
)
572
573
WRAP(struct cbor_pair *,
574
        cbor_map_handle,
575
        (const cbor_item_t *item),
576
        NULL,
577
        (item),
578
        1
579
)
580
581
WRAP(cbor_item_t **,
582
        cbor_array_handle,
583
        (const cbor_item_t *item),
584
        NULL,
585
        (item),
586
        1
587
)
588
589
WRAP(bool,
590
        cbor_array_push,
591
        (cbor_item_t *array, cbor_item_t *pushee),
592
        false,
593
        (array, pushee),
594
        1
595
)
596
597
WRAP(bool,
598
        cbor_map_add,
599
        (cbor_item_t *item, struct cbor_pair pair),
600
        false,
601
        (item, pair),
602
        1
603
)
604
605
WRAP(cbor_item_t *,
606
        cbor_new_definite_map,
607
        (size_t size),
608
        NULL,
609
        (size),
610
        1
611
)
612
613
WRAP(cbor_item_t *,
614
        cbor_new_definite_array,
615
        (size_t size),
616
        NULL,
617
        (size),
618
        1
619
)
620
621
WRAP(cbor_item_t *,
622
        cbor_new_definite_bytestring,
623
        (void),
624
        NULL,
625
        (),
626
        1
627
)
628
629
WRAP(size_t,
630
        cbor_serialize_alloc,
631
        (const cbor_item_t *item, cbor_mutable_data *buffer,
632
            size_t *buffer_size),
633
        0,
634
        (item, buffer, buffer_size),
635
        1
636
)
637
638
WRAP(int,
639
        fido_tx,
640
        (fido_dev_t *d, uint8_t cmd, const void *buf, size_t count, int *ms),
641
        -1,
642
        (d, cmd, buf, count, ms),
643
        1
644
)
645
646
WRAP(int,
647
        bind,
648
        (int sockfd, const struct sockaddr *addr, socklen_t addrlen),
649
        -1,
650
        (sockfd, addr, addrlen),
651
        1
652
)
653
654
WRAP(int,
655
        deflateInit2_,
656
        (z_streamp strm, int level, int method, int windowBits, int memLevel,
657
            int strategy, const char *version, int stream_size),
658
        Z_STREAM_ERROR,
659
        (strm, level, method, windowBits, memLevel, strategy, version,
660
            stream_size),
661
        1
662
)
663
664
int __wrap_deflate(z_streamp, int);
665
int __real_deflate(z_streamp, int);
666
667
int
668
__wrap_deflate(z_streamp strm, int flush)
669
4.09k
{
670
4.09k
        if (prng_up && uniform_random(400) < 1) {
671
3
                return Z_BUF_ERROR;
672
3
        }
673
        /* should never happen, but we check for it */
674
4.08k
        if (prng_up && uniform_random(400) < 1) {
675
2
                strm->avail_out = UINT_MAX;
676
2
                return Z_STREAM_END;
677
2
        }
678
679
4.08k
        return __real_deflate(strm, flush);
680
4.08k
}
681
682
int __wrap_asprintf(char **, const char *, ...);
683
684
int
685
__wrap_asprintf(char **strp, const char *fmt, ...)
686
2.81M
{
687
2.81M
        va_list ap;
688
2.81M
        int r;
689
690
2.81M
        if (prng_up && uniform_random(400) < 1) {
691
6.89k
                *strp = (void *)0xdeadbeef;
692
6.89k
                return -1;
693
6.89k
        }
694
695
2.81M
        va_start(ap, fmt);
696
2.80M
        r = vasprintf(strp, fmt, ap);
697
2.80M
        va_end(ap);
698
699
2.80M
        return r;
700
2.81M
}