Coverage Report

Created: 2026-04-08 06:32

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.2M
type __wrap_##name args {                               \
40
55.2M
        if (prng_up && uniform_random(400) < (prob)) {       \
41
140k
                return (retval);                        \
42
140k
        }                                                \
43
55.2M
                                                        \
44
55.2M
        return (__real_##name param);                       \
45
55.2M
}
__wrap_malloc
Line
Count
Source
39
7.41M
type __wrap_##name args {                               \
40
7.41M
        if (prng_up && uniform_random(400) < (prob)) {       \
41
18.3k
                return (retval);                        \
42
18.3k
        }                                                \
43
7.41M
                                                        \
44
7.41M
        return (__real_##name param);                       \
45
7.41M
}
__wrap_calloc
Line
Count
Source
39
29.1M
type __wrap_##name args {                               \
40
29.1M
        if (prng_up && uniform_random(400) < (prob)) {       \
41
73.8k
                return (retval);                        \
42
73.8k
        }                                                \
43
29.1M
                                                        \
44
29.1M
        return (__real_##name param);                       \
45
29.1M
}
__wrap_realloc
Line
Count
Source
39
3.89k
type __wrap_##name args {                               \
40
3.89k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
10
                return (retval);                        \
42
10
        }                                                \
43
3.89k
                                                        \
44
3.89k
        return (__real_##name param);                       \
45
3.89k
}
__wrap_strdup
Line
Count
Source
39
2.10M
type __wrap_##name args {                               \
40
2.10M
        if (prng_up && uniform_random(400) < (prob)) {       \
41
5.99k
                return (retval);                        \
42
5.99k
        }                                                \
43
2.10M
                                                        \
44
2.10M
        return (__real_##name param);                       \
45
2.10M
}
__wrap_getrandom
Line
Count
Source
39
2.99M
type __wrap_##name args {                               \
40
2.99M
        if (prng_up && uniform_random(400) < (prob)) {       \
41
7.10k
                return (retval);                        \
42
7.10k
        }                                                \
43
2.99M
                                                        \
44
2.99M
        return (__real_##name param);                       \
45
2.99M
}
__wrap_EVP_Cipher
Line
Count
Source
39
58.1k
type __wrap_##name args {                               \
40
58.1k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
283
                return (retval);                        \
42
283
        }                                                \
43
58.1k
                                                        \
44
58.1k
        return (__real_##name param);                       \
45
58.1k
}
__wrap_EVP_CIPHER_CTX_ctrl
Line
Count
Source
39
8.18k
type __wrap_##name args {                               \
40
8.18k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
64
                return (retval);                        \
42
64
        }                                                \
43
8.18k
                                                        \
44
8.18k
        return (__real_##name param);                       \
45
8.18k
}
__wrap_EVP_CIPHER_CTX_new
Line
Count
Source
39
42.3k
type __wrap_##name args {                               \
40
42.3k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
158
                return (retval);                        \
42
158
        }                                                \
43
42.3k
                                                        \
44
42.3k
        return (__real_##name param);                       \
45
42.3k
}
__wrap_EVP_CipherInit
Line
Count
Source
39
42.1k
type __wrap_##name args {                               \
40
42.1k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
156
                return (retval);                        \
42
156
        }                                                \
43
42.1k
                                                        \
44
42.1k
        return (__real_##name param);                       \
45
42.1k
}
__wrap_EVP_PKEY_get0_RSA
Line
Count
Source
39
629
type __wrap_##name args {                               \
40
629
        if (prng_up && uniform_random(400) < (prob)) {       \
41
6
                return (retval);                        \
42
6
        }                                                \
43
629
                                                        \
44
629
        return (__real_##name param);                       \
45
629
}
__wrap_EVP_PKEY_get0_EC_KEY
Line
Count
Source
39
115k
type __wrap_##name args {                               \
40
115k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
472
                return (retval);                        \
42
472
        }                                                \
43
115k
                                                        \
44
115k
        return (__real_##name param);                       \
45
115k
}
__wrap_EVP_PKEY_get_raw_public_key
Line
Count
Source
39
11.6k
type __wrap_##name args {                               \
40
11.6k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
128
                return (retval);                        \
42
128
        }                                                \
43
11.6k
                                                        \
44
11.6k
        return (__real_##name param);                       \
45
11.6k
}
__wrap_EVP_MD_CTX_new
Line
Count
Source
39
9.27k
type __wrap_##name args {                               \
40
9.27k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
48
                return (retval);                        \
42
48
        }                                                \
43
9.27k
                                                        \
44
9.27k
        return (__real_##name param);                       \
45
9.27k
}
__wrap_EVP_DigestVerifyInit
Line
Count
Source
39
252
type __wrap_##name args {                               \
40
252
        if (prng_up && uniform_random(400) < (prob)) {       \
41
4
                return (retval);                        \
42
4
        }                                                \
43
252
                                                        \
44
252
        return (__real_##name param);                       \
45
252
}
__wrap_EVP_DigestInit_ex
Line
Count
Source
39
8.97k
type __wrap_##name args {                               \
40
8.97k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
41
                return (retval);                        \
42
41
        }                                                \
43
8.97k
                                                        \
44
8.97k
        return (__real_##name param);                       \
45
8.97k
}
__wrap_EVP_DigestUpdate
Line
Count
Source
39
20.1k
type __wrap_##name args {                               \
40
20.1k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
88
                return (retval);                        \
42
88
        }                                                \
43
20.1k
                                                        \
44
20.1k
        return (__real_##name param);                       \
45
20.1k
}
__wrap_EVP_DigestFinal_ex
Line
Count
Source
39
8.84k
type __wrap_##name args {                               \
40
8.84k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
20
                return (retval);                        \
42
20
        }                                                \
43
8.84k
                                                        \
44
8.84k
        return (__real_##name param);                       \
45
8.84k
}
__wrap_BN_bin2bn
Line
Count
Source
39
261k
type __wrap_##name args {                               \
40
261k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
1.67k
                return (retval);                        \
42
1.67k
        }                                                \
43
261k
                                                        \
44
261k
        return (__real_##name param);                       \
45
261k
}
__wrap_BN_bn2bin
Line
Count
Source
39
337k
type __wrap_##name args {                               \
40
337k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
1.03k
                return (retval);                        \
42
1.03k
        }                                                \
43
337k
                                                        \
44
337k
        return (__real_##name param);                       \
45
337k
}
__wrap_BN_CTX_get
Line
Count
Source
39
357k
type __wrap_##name args {                               \
40
357k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
1.47k
                return (retval);                        \
42
1.47k
        }                                                \
43
357k
                                                        \
44
357k
        return (__real_##name param);                       \
45
357k
}
__wrap_BN_CTX_new
Line
Count
Source
39
195k
type __wrap_##name args {                               \
40
195k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
688
                return (retval);                        \
42
688
        }                                                \
43
195k
                                                        \
44
195k
        return (__real_##name param);                       \
45
195k
}
__wrap_BN_new
Line
Count
Source
39
16.4k
type __wrap_##name args {                               \
40
16.4k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
127
                return (retval);                        \
42
127
        }                                                \
43
16.4k
                                                        \
44
16.4k
        return (__real_##name param);                       \
45
16.4k
}
__wrap_RSA_new
Line
Count
Source
39
7.86k
type __wrap_##name args {                               \
40
7.86k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
45
                return (retval);                        \
42
45
        }                                                \
43
7.86k
                                                        \
44
7.86k
        return (__real_##name param);                       \
45
7.86k
}
__wrap_RSA_set0_key
Line
Count
Source
39
7.82k
type __wrap_##name args {                               \
40
7.82k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
47
                return (retval);                        \
42
47
        }                                                \
43
7.82k
                                                        \
44
7.82k
        return (__real_##name param);                       \
45
7.82k
}
Unexecuted instantiation: __wrap_RSA_pkey_ctx_ctrl
__wrap_EC_KEY_new_by_curve_name
Line
Count
Source
39
194k
type __wrap_##name args {                               \
40
194k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
802
                return (retval);                        \
42
802
        }                                                \
43
194k
                                                        \
44
194k
        return (__real_##name param);                       \
45
194k
}
__wrap_EC_KEY_get0_group
Line
Count
Source
39
162k
type __wrap_##name args {                               \
40
162k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
398
                return (retval);                        \
42
398
        }                                                \
43
162k
                                                        \
44
162k
        return (__real_##name param);                       \
45
162k
}
__wrap_EC_KEY_get0_private_key
Line
Count
Source
39
114k
type __wrap_##name args {                               \
40
114k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
358
                return (retval);                        \
42
358
        }                                                \
43
114k
                                                        \
44
114k
        return (__real_##name param);                       \
45
114k
}
__wrap_EC_POINT_new
Line
Count
Source
39
162k
type __wrap_##name args {                               \
40
162k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
676
                return (retval);                        \
42
676
        }                                                \
43
162k
                                                        \
44
162k
        return (__real_##name param);                       \
45
162k
}
__wrap_EC_POINT_get_affine_coordinates_GFp
Line
Count
Source
39
111k
type __wrap_##name args {                               \
40
111k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
356
                return (retval);                        \
42
356
        }                                                \
43
111k
                                                        \
44
111k
        return (__real_##name param);                       \
45
111k
}
__wrap_EVP_PKEY_new
Line
Count
Source
39
65.9k
type __wrap_##name args {                               \
40
65.9k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
182
                return (retval);                        \
42
182
        }                                                \
43
65.9k
                                                        \
44
65.9k
        return (__real_##name param);                       \
45
65.9k
}
__wrap_EVP_PKEY_assign
Line
Count
Source
39
65.7k
type __wrap_##name args {                               \
40
65.7k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
325
                return (retval);                        \
42
325
        }                                                \
43
65.7k
                                                        \
44
65.7k
        return (__real_##name param);                       \
45
65.7k
}
__wrap_EVP_PKEY_keygen_init
Line
Count
Source
39
115k
type __wrap_##name args {                               \
40
115k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
327
                return (retval);                        \
42
327
        }                                                \
43
115k
                                                        \
44
115k
        return (__real_##name param);                       \
45
115k
}
__wrap_EVP_PKEY_keygen
Line
Count
Source
39
115k
type __wrap_##name args {                               \
40
115k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
336
                return (retval);                        \
42
336
        }                                                \
43
115k
                                                        \
44
115k
        return (__real_##name param);                       \
45
115k
}
__wrap_EVP_PKEY_paramgen_init
Line
Count
Source
39
116k
type __wrap_##name args {                               \
40
116k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
340
                return (retval);                        \
42
340
        }                                                \
43
116k
                                                        \
44
116k
        return (__real_##name param);                       \
45
116k
}
__wrap_EVP_PKEY_paramgen
Line
Count
Source
39
116k
type __wrap_##name args {                               \
40
116k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
449
                return (retval);                        \
42
449
        }                                                \
43
116k
                                                        \
44
116k
        return (__real_##name param);                       \
45
116k
}
__wrap_EVP_PKEY_new_raw_public_key
Line
Count
Source
39
7.34k
type __wrap_##name args {                               \
40
7.34k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
117
                return (retval);                        \
42
117
        }                                                \
43
7.34k
                                                        \
44
7.34k
        return (__real_##name param);                       \
45
7.34k
}
__wrap_EVP_PKEY_CTX_new
Line
Count
Source
39
151k
type __wrap_##name args {                               \
40
151k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
454
                return (retval);                        \
42
454
        }                                                \
43
151k
                                                        \
44
151k
        return (__real_##name param);                       \
45
151k
}
__wrap_EVP_PKEY_CTX_new_id
Line
Count
Source
39
148k
type __wrap_##name args {                               \
40
148k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
370
                return (retval);                        \
42
370
        }                                                \
43
148k
                                                        \
44
148k
        return (__real_##name param);                       \
45
148k
}
__wrap_EVP_PKEY_derive
Line
Count
Source
39
91.7k
type __wrap_##name args {                               \
40
91.7k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
320
                return (retval);                        \
42
320
        }                                                \
43
91.7k
                                                        \
44
91.7k
        return (__real_##name param);                       \
45
91.7k
}
__wrap_EVP_PKEY_derive_init
Line
Count
Source
39
62.0k
type __wrap_##name args {                               \
40
62.0k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
292
                return (retval);                        \
42
292
        }                                                \
43
62.0k
                                                        \
44
62.0k
        return (__real_##name param);                       \
45
62.0k
}
__wrap_EVP_PKEY_derive_set_peer
Line
Count
Source
39
30.3k
type __wrap_##name args {                               \
40
30.3k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
78
                return (retval);                        \
42
78
        }                                                \
43
30.3k
                                                        \
44
30.3k
        return (__real_##name param);                       \
45
30.3k
}
__wrap_EVP_PKEY_verify_init
Line
Count
Source
39
4.65k
type __wrap_##name args {                               \
40
4.65k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
53
                return (retval);                        \
42
53
        }                                                \
43
4.65k
                                                        \
44
4.65k
        return (__real_##name param);                       \
45
4.65k
}
Unexecuted instantiation: __wrap_EVP_PKEY_CTX_ctrl
__wrap_EVP_sha1
Line
Count
Source
39
1.22k
type __wrap_##name args {                               \
40
1.22k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
8
                return (retval);                        \
42
8
        }                                                \
43
1.22k
                                                        \
44
1.22k
        return (__real_##name param);                       \
45
1.22k
}
__wrap_EVP_sha256
Line
Count
Source
39
54.7k
type __wrap_##name args {                               \
40
54.7k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
264
                return (retval);                        \
42
264
        }                                                \
43
54.7k
                                                        \
44
54.7k
        return (__real_##name param);                       \
45
54.7k
}
__wrap_EVP_aes_256_cbc
Line
Count
Source
39
32.5k
type __wrap_##name args {                               \
40
32.5k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
45
                return (retval);                        \
42
45
        }                                                \
43
32.5k
                                                        \
44
32.5k
        return (__real_##name param);                       \
45
32.5k
}
__wrap_EVP_aes_256_gcm
Line
Count
Source
39
8.27k
type __wrap_##name args {                               \
40
8.27k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
30
                return (retval);                        \
42
30
        }                                                \
43
8.27k
                                                        \
44
8.27k
        return (__real_##name param);                       \
45
8.27k
}
__wrap_HMAC
Line
Count
Source
39
14.2k
type __wrap_##name args {                               \
40
14.2k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
139
                return (retval);                        \
42
139
        }                                                \
43
14.2k
                                                        \
44
14.2k
        return (__real_##name param);                       \
45
14.2k
}
__wrap_HMAC_CTX_new
Line
Count
Source
39
315
type __wrap_##name args {                               \
40
315
        if (prng_up && uniform_random(400) < (prob)) {       \
41
4
                return (retval);                        \
42
4
        }                                                \
43
315
                                                        \
44
315
        return (__real_##name param);                       \
45
315
}
__wrap_HMAC_Init_ex
Line
Count
Source
39
306
type __wrap_##name args {                               \
40
306
        if (prng_up && uniform_random(400) < (prob)) {       \
41
6
                return (retval);                        \
42
6
        }                                                \
43
306
                                                        \
44
306
        return (__real_##name param);                       \
45
306
}
__wrap_HMAC_Update
Line
Count
Source
39
585
type __wrap_##name args {                               \
40
585
        if (prng_up && uniform_random(400) < (prob)) {       \
41
21
                return (retval);                        \
42
21
        }                                                \
43
585
                                                        \
44
585
        return (__real_##name param);                       \
45
585
}
__wrap_HMAC_Final
Line
Count
Source
39
279
type __wrap_##name args {                               \
40
279
        if (prng_up && uniform_random(400) < (prob)) {       \
41
8
                return (retval);                        \
42
8
        }                                                \
43
279
                                                        \
44
279
        return (__real_##name param);                       \
45
279
}
__wrap_SHA1
Line
Count
Source
39
706
type __wrap_##name args {                               \
40
706
        if (prng_up && uniform_random(400) < (prob)) {       \
41
1
                return (retval);                        \
42
1
        }                                                \
43
706
                                                        \
44
706
        return (__real_##name param);                       \
45
706
}
__wrap_SHA256
Line
Count
Source
39
117k
type __wrap_##name args {                               \
40
117k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
334
                return (retval);                        \
42
334
        }                                                \
43
117k
                                                        \
44
117k
        return (__real_##name param);                       \
45
117k
}
__wrap_cbor_build_string
Line
Count
Source
39
1.34M
type __wrap_##name args {                               \
40
1.34M
        if (prng_up && uniform_random(400) < (prob)) {       \
41
1.88k
                return (retval);                        \
42
1.88k
        }                                                \
43
1.34M
                                                        \
44
1.34M
        return (__real_##name param);                       \
45
1.34M
}
__wrap_cbor_build_bytestring
Line
Count
Source
39
423k
type __wrap_##name args {                               \
40
423k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
856
                return (retval);                        \
42
856
        }                                                \
43
423k
                                                        \
44
423k
        return (__real_##name param);                       \
45
423k
}
__wrap_cbor_build_bool
Line
Count
Source
39
24.6k
type __wrap_##name args {                               \
40
24.6k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
66
                return (retval);                        \
42
66
        }                                                \
43
24.6k
                                                        \
44
24.6k
        return (__real_##name param);                       \
45
24.6k
}
__wrap_cbor_build_negint8
Line
Count
Source
39
97.2k
type __wrap_##name args {                               \
40
97.2k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
461
                return (retval);                        \
42
461
        }                                                \
43
97.2k
                                                        \
44
97.2k
        return (__real_##name param);                       \
45
97.2k
}
__wrap_cbor_build_negint16
Line
Count
Source
39
1.20k
type __wrap_##name args {                               \
40
1.20k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
4
                return (retval);                        \
42
4
        }                                                \
43
1.20k
                                                        \
44
1.20k
        return (__real_##name param);                       \
45
1.20k
}
__wrap_cbor_load
Line
Count
Source
39
264k
type __wrap_##name args {                               \
40
264k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
609
                return (retval);                        \
42
609
        }                                                \
43
264k
                                                        \
44
264k
        return (__real_##name param);                       \
45
264k
}
__wrap_cbor_build_uint8
Line
Count
Source
39
916k
type __wrap_##name args {                               \
40
916k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
3.11k
                return (retval);                        \
42
3.11k
        }                                                \
43
916k
                                                        \
44
916k
        return (__real_##name param);                       \
45
916k
}
__wrap_cbor_build_uint16
Line
Count
Source
39
7.32k
type __wrap_##name args {                               \
40
7.32k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
7
                return (retval);                        \
42
7
        }                                                \
43
7.32k
                                                        \
44
7.32k
        return (__real_##name param);                       \
45
7.32k
}
__wrap_cbor_build_uint32
Line
Count
Source
39
2.39k
type __wrap_##name args {                               \
40
2.39k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
30
                return (retval);                        \
42
30
        }                                                \
43
2.39k
                                                        \
44
2.39k
        return (__real_##name param);                       \
45
2.39k
}
Unexecuted instantiation: __wrap_cbor_build_uint64
__wrap_cbor_map_handle
Line
Count
Source
39
536k
type __wrap_##name args {                               \
40
536k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
1.36k
                return (retval);                        \
42
1.36k
        }                                                \
43
536k
                                                        \
44
536k
        return (__real_##name param);                       \
45
536k
}
__wrap_cbor_array_handle
Line
Count
Source
39
400k
type __wrap_##name args {                               \
40
400k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
157
                return (retval);                        \
42
157
        }                                                \
43
400k
                                                        \
44
400k
        return (__real_##name param);                       \
45
400k
}
__wrap_cbor_array_push
Line
Count
Source
39
629k
type __wrap_##name args {                               \
40
629k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
1.19k
                return (retval);                        \
42
1.19k
        }                                                \
43
629k
                                                        \
44
629k
        return (__real_##name param);                       \
45
629k
}
__wrap_cbor_map_add
Line
Count
Source
39
1.21M
type __wrap_##name args {                               \
40
1.21M
        if (prng_up && uniform_random(400) < (prob)) {       \
41
2.19k
                return (retval);                        \
42
2.19k
        }                                                \
43
1.21M
                                                        \
44
1.21M
        return (__real_##name param);                       \
45
1.21M
}
__wrap_cbor_new_definite_map
Line
Count
Source
39
553k
type __wrap_##name args {                               \
40
553k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
821
                return (retval);                        \
42
821
        }                                                \
43
553k
                                                        \
44
553k
        return (__real_##name param);                       \
45
553k
}
__wrap_cbor_new_definite_array
Line
Count
Source
39
33.5k
type __wrap_##name args {                               \
40
33.5k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
84
                return (retval);                        \
42
84
        }                                                \
43
33.5k
                                                        \
44
33.5k
        return (__real_##name param);                       \
45
33.5k
}
__wrap_cbor_new_definite_bytestring
Line
Count
Source
39
1.13k
type __wrap_##name args {                               \
40
1.13k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
17
                return (retval);                        \
42
17
        }                                                \
43
1.13k
                                                        \
44
1.13k
        return (__real_##name param);                       \
45
1.13k
}
__wrap_cbor_serialize_alloc
Line
Count
Source
39
208k
type __wrap_##name args {                               \
40
208k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
861
                return (retval);                        \
42
861
        }                                                \
43
208k
                                                        \
44
208k
        return (__real_##name param);                       \
45
208k
}
__wrap_fido_tx
Line
Count
Source
39
1.12M
type __wrap_##name args {                               \
40
1.12M
        if (prng_up && uniform_random(400) < (prob)) {       \
41
2.60k
                return (retval);                        \
42
2.60k
        }                                                \
43
1.12M
                                                        \
44
1.12M
        return (__real_##name param);                       \
45
1.12M
}
__wrap_bind
Line
Count
Source
39
2.28M
type __wrap_##name args {                               \
40
2.28M
        if (prng_up && uniform_random(400) < (prob)) {       \
41
5.61k
                return (retval);                        \
42
5.61k
        }                                                \
43
2.28M
                                                        \
44
2.28M
        return (__real_##name param);                       \
45
2.28M
}
__wrap_deflateInit2_
Line
Count
Source
39
5.55k
type __wrap_##name args {                               \
40
5.55k
        if (prng_up && uniform_random(400) < (prob)) {       \
41
7
                return (retval);                        \
42
7
        }                                                \
43
5.55k
                                                        \
44
5.55k
        return (__real_##name param);                       \
45
5.55k
}
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
5.55k
{
670
5.55k
        if (prng_up && uniform_random(400) < 1) {
671
2
                return Z_BUF_ERROR;
672
2
        }
673
        /* should never happen, but we check for it */
674
5.54k
        if (prng_up && uniform_random(400) < 1) {
675
4
                strm->avail_out = UINT_MAX;
676
4
                return Z_STREAM_END;
677
4
        }
678
679
5.54k
        return __real_deflate(strm, flush);
680
5.54k
}
681
682
int __wrap_asprintf(char **, const char *, ...);
683
684
int
685
__wrap_asprintf(char **strp, const char *fmt, ...)
686
2.38M
{
687
2.38M
        va_list ap;
688
2.38M
        int r;
689
690
2.38M
        if (prng_up && uniform_random(400) < 1) {
691
6.13k
                *strp = (void *)0xdeadbeef;
692
6.13k
                return -1;
693
6.13k
        }
694
695
2.38M
        va_start(ap, fmt);
696
2.37M
        r = vasprintf(strp, fmt, ap);
697
2.37M
        va_end(ap);
698
699
2.37M
        return r;
700
2.38M
}