OpenCoverage

bn_rand.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/bn/bn_rand.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4static int-
5bnrand(int pseudorand, BIGNUM *rnd, int bits, int top, int bottom)-
6{-
7 unsigned char *buf = -
8 ((void *)0)-
9 ;-
10 int ret = 0, bit, bytes, mask;-
11-
12 if (rnd ==
rnd == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 6911 times by 14 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
0-6911
13 ((void *)0)
rnd == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 6911 times by 14 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
0-6911
14 ) {-
15 ERR_put_error(3,(0xfff),((3|64)),__FILE__,128);-
16 return
never executed: return (0);
(0);
never executed: return (0);
0
17 }-
18-
19 if (bits == 0
bits == 0Description
TRUEnever evaluated
FALSEevaluated 6911 times by 14 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
) {
0-6911
20 (BN_set_word((rnd),0));-
21 return
never executed: return (1);
(1);
never executed: return (1);
0
22 }-
23-
24 bytes = (bits + 7) / 8;-
25 bit = (bits - 1) % 8;-
26 mask = 0xff << (bit + 1);-
27-
28 buf = malloc(bytes);-
29 if (buf ==
buf == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 6911 times by 14 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
0-6911
30 ((void *)0)
buf == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 6911 times by 14 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
0-6911
31 ) {-
32 ERR_put_error(3,(0xfff),((1|64)),__FILE__,143);-
33 goto
never executed: goto err;
err;
never executed: goto err;
0
34 }-
35-
36-
37 arc4random_buf(buf, bytes);-
38-
39-
40 if (pseudorand == 2
pseudorand == 2Description
TRUEevaluated 3385 times by 1 test
Evaluated by:
  • bntest
FALSEevaluated 3526 times by 14 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
) {
3385-3526
41-
42-
43 int i;-
44 unsigned char c;-
45-
46 for (i = 0; i < bytes
i < bytesDescription
TRUEevaluated 254134 times by 1 test
Evaluated by:
  • bntest
FALSEevaluated 3385 times by 1 test
Evaluated by:
  • bntest
; i++) {
3385-254134
47 arc4random_buf(&c, 1);-
48 if (c >= 128
c >= 128Description
TRUEevaluated 126974 times by 1 test
Evaluated by:
  • bntest
FALSEevaluated 127160 times by 1 test
Evaluated by:
  • bntest
&& i > 0
i > 0Description
TRUEevaluated 125321 times by 1 test
Evaluated by:
  • bntest
FALSEevaluated 1653 times by 1 test
Evaluated by:
  • bntest
)
1653-127160
49 buf[i] = buf[i - 1];
executed 125321 times by 1 test: buf[i] = buf[i - 1];
Executed by:
  • bntest
125321
50 else if (c < 42
c < 42Description
TRUEevaluated 41398 times by 1 test
Evaluated by:
  • bntest
FALSEevaluated 87415 times by 1 test
Evaluated by:
  • bntest
)
41398-87415
51 buf[i] = 0;
executed 41398 times by 1 test: buf[i] = 0;
Executed by:
  • bntest
41398
52 else if (c < 84
c < 84Description
TRUEevaluated 42134 times by 1 test
Evaluated by:
  • bntest
FALSEevaluated 45281 times by 1 test
Evaluated by:
  • bntest
)
42134-45281
53 buf[i] = 255;
executed 42134 times by 1 test: buf[i] = 255;
Executed by:
  • bntest
42134
54 }
executed 254134 times by 1 test: end of block
Executed by:
  • bntest
254134
55 }
executed 3385 times by 1 test: end of block
Executed by:
  • bntest
3385
56-
57-
58 if (top != -1
top != -1Description
TRUEevaluated 4051 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • servertest
  • ssltest
FALSEevaluated 2860 times by 13 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
) {
2860-4051
59 if (top
topDescription
TRUEevaluated 24 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
FALSEevaluated 4027 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • servertest
  • ssltest
) {
24-4027
60 if (bit == 0
bit == 0Description
TRUEnever evaluated
FALSEevaluated 24 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
) {
0-24
61 buf[0] = 1;-
62 buf[1] |= 0x80;-
63 }
never executed: end of block
else {
0
64 buf[0] |= (3 << (bit - 1));-
65 }
executed 24 times by 2 tests: end of block
Executed by:
  • bntest
  • libcrypto.so.44.0.1
24
66 } else {-
67 buf[0] |= (1 << bit);-
68 }
executed 4027 times by 7 tests: end of block
Executed by:
  • bntest
  • dhtest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • servertest
  • ssltest
4027
69 }-
70 buf[0] &= ~mask;-
71 if (bottom
bottomDescription
TRUEevaluated 488 times by 5 tests
Evaluated by:
  • bntest
  • dhtest
  • exptest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 6423 times by 14 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
)
488-6423
72 buf[bytes - 1] |= 1;
executed 488 times by 5 tests: buf[bytes - 1] |= 1;
Executed by:
  • bntest
  • dhtest
  • exptest
  • libcrypto.so.44.0.1
  • mont
488
73 if (BN_bin2bn(buf, bytes, rnd) ==
BN_bin2bn(buf,...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 6911 times by 14 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
0-6911
74 ((void *)0)
BN_bin2bn(buf,...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 6911 times by 14 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
0-6911
75 )-
76 goto
never executed: goto err;
err;
never executed: goto err;
0
77 ret = 1;-
78-
79err:
code before this statement executed 6911 times by 14 tests: err:
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
6911
80 freezero(buf, bytes);-
81 ;-
82 return
executed 6911 times by 14 tests: return (ret);
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
(ret);
executed 6911 times by 14 tests: return (ret);
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
6911
83}-
84-
85int-
86BN_rand(BIGNUM *rnd, int bits, int top, int bottom)-
87{-
88 return
executed 1668 times by 13 tests: return bnrand(0, rnd, bits, top, bottom);
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
bnrand(0, rnd, bits, top, bottom);
executed 1668 times by 13 tests: return bnrand(0, rnd, bits, top, bottom);
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
1668
89}-
90-
91int-
92BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom)-
93{-
94 return
executed 1858 times by 6 tests: return bnrand(1, rnd, bits, top, bottom);
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
bnrand(1, rnd, bits, top, bottom);
executed 1858 times by 6 tests: return bnrand(1, rnd, bits, top, bottom);
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
1858
95}-
96-
97-
98int-
99BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom)-
100{-
101 return
executed 3385 times by 1 test: return bnrand(2, rnd, bits, top, bottom);
Executed by:
  • bntest
bnrand(2, rnd, bits, top, bottom);
executed 3385 times by 1 test: return bnrand(2, rnd, bits, top, bottom);
Executed by:
  • bntest
3385
102}-
103-
104-
105-
106-
107static int-
108bn_rand_range(int pseudo, BIGNUM *r, const BIGNUM *range)-
109{-
110 int (*bn_rand)(BIGNUM *, int, int, int) = pseudo
pseudoDescription
TRUEevaluated 1572 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 468 times by 9 tests
Evaluated by:
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
? BN_pseudo_rand : BN_rand;
468-1572
111 int n;-
112 int count = 100;-
113-
114 if (range->neg
range->negDescription
TRUEnever evaluated
FALSEevaluated 2040 times by 13 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
|| ((
((range)->top == 0)Description
TRUEnever evaluated
FALSEevaluated 2040 times by 13 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
range)->top == 0)
((range)->top == 0)Description
TRUEnever evaluated
FALSEevaluated 2040 times by 13 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
) {
0-2040
115 ERR_put_error(3,(0xfff),(115),__FILE__,224);-
116 return
never executed: return 0;
0;
never executed: return 0;
0
117 }-
118-
119 n = BN_num_bits(range);-
120-
121-
122-
123 if (n == 1
n == 1Description
TRUEnever evaluated
FALSEevaluated 2040 times by 13 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
)
0-2040
124 (
never executed: (BN_set_word((r),0));
BN_set_word((r),0));
never executed: (BN_set_word((r),0));
0
125 else if (!BN_is_bit_set(range, n - 2)
!BN_is_bit_set(range, n - 2)Description
TRUEevaluated 1011 times by 9 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
FALSEevaluated 1029 times by 11 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • servertest
  • ssltest
  • tlstest
&& !BN_is_bit_set(range, n - 3)
!BN_is_bit_set(range, n - 3)Description
TRUEevaluated 647 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 364 times by 8 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
) {
364-1029
126-
127-
128 do {-
129 if (!bn_rand(r, n + 1, -1, 0)
!bn_rand(r, n + 1, -1, 0)Description
TRUEnever evaluated
FALSEevaluated 777 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
)
0-777
130 return
never executed: return 0;
0;
never executed: return 0;
0
131-
132-
133-
134-
135-
136 if (BN_cmp(r, range) >= 0
BN_cmp(r, range) >= 0Description
TRUEevaluated 552 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 225 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
) {
225-552
137 if (!BN_sub(r, r, range)
!BN_sub(r, r, range)Description
TRUEnever evaluated
FALSEevaluated 552 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
)
0-552
138 return
never executed: return 0;
0;
never executed: return 0;
0
139 if (BN_cmp(r, range) >= 0
BN_cmp(r, range) >= 0Description
TRUEevaluated 339 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 213 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
)
213-339
140 if (!BN_sub(r, r, range)
!BN_sub(r, r, range)Description
TRUEnever evaluated
FALSEevaluated 339 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
)
0-339
141 return
never executed: return 0;
0;
never executed: return 0;
0
142 }
executed 552 times by 7 tests: end of block
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
552
143-
144 if (!--count
!--countDescription
TRUEnever evaluated
FALSEevaluated 777 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
) {
0-777
145 ERR_put_error(3,(0xfff),(113),__FILE__,254);-
146 return
never executed: return 0;
0;
never executed: return 0;
0
147 }-
148-
149 }
executed 777 times by 7 tests: end of block
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
while (BN_cmp(r, range) >= 0
BN_cmp(r, range) >= 0Description
TRUEevaluated 130 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 647 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
);
130-777
150 }
executed 647 times by 7 tests: end of block
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
else {
647
151 do {-
152-
153 if (!bn_rand(r, n, -1, 0)
!bn_rand(r, n, -1, 0)Description
TRUEnever evaluated
FALSEevaluated 1635 times by 13 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
)
0-1635
154 return
never executed: return 0;
0;
never executed: return 0;
0
155-
156 if (!--count
!--countDescription
TRUEnever evaluated
FALSEevaluated 1635 times by 13 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
) {
0-1635
157 ERR_put_error(3,(0xfff),(113),__FILE__,266);-
158 return
never executed: return 0;
0;
never executed: return 0;
0
159 }-
160 }
executed 1635 times by 13 tests: end of block
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
while (BN_cmp(r, range) >= 0
BN_cmp(r, range) >= 0Description
TRUEevaluated 242 times by 8 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
  • rsa_test
  • ssltest
FALSEevaluated 1393 times by 13 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
);
242-1635
161 }
executed 1393 times by 13 tests: end of block
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
1393
162-
163 ;-
164 return
executed 2040 times by 13 tests: return 1;
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
1;
executed 2040 times by 13 tests: return 1;
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
2040
165}-
166-
167int-
168BN_rand_range(BIGNUM *r, const BIGNUM *range)-
169{-
170 return
executed 468 times by 9 tests: return bn_rand_range(0, r, range);
Executed by:
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
bn_rand_range(0, r, range);
executed 468 times by 9 tests: return bn_rand_range(0, r, range);
Executed by:
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
468
171}-
172-
173int-
174BN_pseudo_rand_range(BIGNUM *r, const BIGNUM *range)-
175{-
176 return
executed 1572 times by 6 tests: return bn_rand_range(1, r, range);
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
bn_rand_range(1, r, range);
executed 1572 times by 6 tests: return bn_rand_range(1, r, range);
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
1572
177}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2