OpenCoverage

digest-openssl.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssh/src/digest-openssl.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8-
9struct ssh_digest_ctx {-
10 int alg;-
11 EVP_MD_CTX *mdctx;-
12};-
13-
14struct ssh_digest {-
15 int id;-
16 const char *name;-
17 size_t digest_len;-
18 const EVP_MD *(*mdfunc)(void);-
19};-
20-
21-
22const struct ssh_digest digests[] = {-
23 { 0, "MD5", 16, EVP_md5 },-
24 { 1, "SHA1", 20, EVP_sha1 },-
25 { 2, "SHA256", 32, EVP_sha256 },-
26 { 3, "SHA384", 48, EVP_sha384 },-
27 { 4, "SHA512", 64, EVP_sha512 },-
28 { -1, -
29 ((void *)0)-
30 , 0, -
31 ((void *)0) -
32 },-
33};-
34-
35static const struct ssh_digest *-
36ssh_digest_by_alg(int alg)-
37{-
38 if (alg < 0
alg < 0Description
TRUEnever evaluated
FALSEevaluated 212817 times by 5 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_hostkeys
  • test_kex
  • test_sshkey
|| alg >= 5
alg >= 5Description
TRUEnever evaluated
FALSEevaluated 212817 times by 5 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_hostkeys
  • test_kex
  • test_sshkey
)
0-212817
39 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
40 ((void *)0)
never executed: return ((void *)0) ;
0
41 ;
never executed: return ((void *)0) ;
0
42 if (digests[alg].id != alg
digests[alg].id != algDescription
TRUEnever evaluated
FALSEevaluated 212817 times by 5 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_hostkeys
  • test_kex
  • test_sshkey
)
0-212817
43 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
44 ((void *)0)
never executed: return ((void *)0) ;
0
45 ;
never executed: return ((void *)0) ;
0
46 if (digests[alg].mdfunc ==
digests[alg].m...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 212817 times by 5 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_hostkeys
  • test_kex
  • test_sshkey
0-212817
47 ((void *)0)
digests[alg].m...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 212817 times by 5 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_hostkeys
  • test_kex
  • test_sshkey
0-212817
48 )-
49 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
50 ((void *)0)
never executed: return ((void *)0) ;
0
51 ;
never executed: return ((void *)0) ;
0
52 return
executed 212817 times by 5 tests: return &(digests[alg]);
Executed by:
  • ssh-keygen
  • sshd
  • test_hostkeys
  • test_kex
  • test_sshkey
&(digests[alg]);
executed 212817 times by 5 tests: return &(digests[alg]);
Executed by:
  • ssh-keygen
  • sshd
  • test_hostkeys
  • test_kex
  • test_sshkey
212817
53}-
54-
55int-
56ssh_digest_alg_by_name(const char *name)-
57{-
58 int alg;-
59-
60 for (alg = 0; digests[alg].id != -1
digests[alg].id != -1Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • ssh-keygen
FALSEnever evaluated
; alg++) {
0-4
61 if (strcasecmp(name, digests[alg].name) == 0
strcasecmp(nam...lg].name) == 0Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • ssh-keygen
FALSEevaluated 2 times by 1 test
Evaluated by:
  • ssh-keygen
)
2
62 return
executed 2 times by 1 test: return digests[alg].id;
Executed by:
  • ssh-keygen
digests[alg].id;
executed 2 times by 1 test: return digests[alg].id;
Executed by:
  • ssh-keygen
2
63 }
executed 2 times by 1 test: end of block
Executed by:
  • ssh-keygen
2
64 return
never executed: return -1;
-1;
never executed: return -1;
0
65}-
66-
67const char *-
68ssh_digest_alg_name(int alg)-
69{-
70 const struct ssh_digest *digest = ssh_digest_by_alg(alg);-
71-
72 return
executed 31 times by 3 tests: return digest == ((void *)0) ? ((void *)0) : digest->name;
Executed by:
  • ssh-keygen
  • sshd
  • test_sshkey
digest ==
digest == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 31 times by 3 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_sshkey
executed 31 times by 3 tests: return digest == ((void *)0) ? ((void *)0) : digest->name;
Executed by:
  • ssh-keygen
  • sshd
  • test_sshkey
0-31
73 ((void *)0)
digest == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 31 times by 3 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_sshkey
executed 31 times by 3 tests: return digest == ((void *)0) ? ((void *)0) : digest->name;
Executed by:
  • ssh-keygen
  • sshd
  • test_sshkey
0-31
74 ?
executed 31 times by 3 tests: return digest == ((void *)0) ? ((void *)0) : digest->name;
Executed by:
  • ssh-keygen
  • sshd
  • test_sshkey
31
75 ((void *)0)
executed 31 times by 3 tests: return digest == ((void *)0) ? ((void *)0) : digest->name;
Executed by:
  • ssh-keygen
  • sshd
  • test_sshkey
31
76 : digest->name;
executed 31 times by 3 tests: return digest == ((void *)0) ? ((void *)0) : digest->name;
Executed by:
  • ssh-keygen
  • sshd
  • test_sshkey
31
77}-
78-
79size_t-
80ssh_digest_bytes(int alg)-
81{-
82 const struct ssh_digest *digest = ssh_digest_by_alg(alg);-
83-
84 return
executed 125439 times by 5 tests: return digest == ((void *)0) ? 0 : digest->digest_len;
Executed by:
  • ssh-keygen
  • sshd
  • test_hostkeys
  • test_kex
  • test_sshkey
digest ==
digest == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 125439 times by 5 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_hostkeys
  • test_kex
  • test_sshkey
executed 125439 times by 5 tests: return digest == ((void *)0) ? 0 : digest->digest_len;
Executed by:
  • ssh-keygen
  • sshd
  • test_hostkeys
  • test_kex
  • test_sshkey
0-125439
85 ((void *)0)
digest == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 125439 times by 5 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_hostkeys
  • test_kex
  • test_sshkey
executed 125439 times by 5 tests: return digest == ((void *)0) ? 0 : digest->digest_len;
Executed by:
  • ssh-keygen
  • sshd
  • test_hostkeys
  • test_kex
  • test_sshkey
0-125439
86 ? 0 : digest->digest_len;
executed 125439 times by 5 tests: return digest == ((void *)0) ? 0 : digest->digest_len;
Executed by:
  • ssh-keygen
  • sshd
  • test_hostkeys
  • test_kex
  • test_sshkey
125439
87}-
88-
89size_t-
90ssh_digest_blocksize(struct ssh_digest_ctx *ctx)-
91{-
92 return
executed 416 times by 1 test: return EVP_MD_block_size(EVP_MD_CTX_md( ctx->mdctx )) ;
Executed by:
  • test_hostkeys
executed 416 times by 1 test: return EVP_MD_block_size(EVP_MD_CTX_md( ctx->mdctx )) ;
Executed by:
  • test_hostkeys
416
93 EVP_MD_block_size(EVP_MD_CTX_md(
executed 416 times by 1 test: return EVP_MD_block_size(EVP_MD_CTX_md( ctx->mdctx )) ;
Executed by:
  • test_hostkeys
416
94 ctx->mdctx
executed 416 times by 1 test: return EVP_MD_block_size(EVP_MD_CTX_md( ctx->mdctx )) ;
Executed by:
  • test_hostkeys
416
95 ))
executed 416 times by 1 test: return EVP_MD_block_size(EVP_MD_CTX_md( ctx->mdctx )) ;
Executed by:
  • test_hostkeys
416
96 ;
executed 416 times by 1 test: return EVP_MD_block_size(EVP_MD_CTX_md( ctx->mdctx )) ;
Executed by:
  • test_hostkeys
416
97}-
98-
99struct ssh_digest_ctx *-
100ssh_digest_start(int alg)-
101{-
102 const struct ssh_digest *digest = ssh_digest_by_alg(alg);-
103 struct ssh_digest_ctx *ret;-
104-
105 if (digest ==
digest == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 6290 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
0-6290
106 ((void *)0)
digest == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 6290 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
0-6290
107 || ((
((ret = calloc... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 6290 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
ret = calloc(1, sizeof(*ret))) ==
((ret = calloc... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 6290 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
0-6290
108 ((void *)0)
((ret = calloc... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 6290 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
0-6290
109 )
((ret = calloc... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 6290 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
)
0-6290
110 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
111 ((void *)0)
never executed: return ((void *)0) ;
0
112 ;
never executed: return ((void *)0) ;
0
113 ret->alg = alg;-
114 if ((
(ret->mdctx = ...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 6290 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
ret->mdctx = EVP_MD_CTX_new()) ==
(ret->mdctx = ...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 6290 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
0-6290
115 ((void *)0)
(ret->mdctx = ...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 6290 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
0-6290
116 ) {-
117 free(ret);-
118 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
119 ((void *)0)
never executed: return ((void *)0) ;
0
120 ;
never executed: return ((void *)0) ;
0
121 }-
122 if (EVP_DigestInit_ex(ret->mdctx, digest->mdfunc(),
EVP_DigestInit...id *)0) ) != 1Description
TRUEnever evaluated
FALSEevaluated 6290 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
0-6290
123 ((void *)0)
EVP_DigestInit...id *)0) ) != 1Description
TRUEnever evaluated
FALSEevaluated 6290 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
0-6290
124 ) != 1
EVP_DigestInit...id *)0) ) != 1Description
TRUEnever evaluated
FALSEevaluated 6290 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
) {
0-6290
125 ssh_digest_free(ret);-
126 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
127 ((void *)0)
never executed: return ((void *)0) ;
0
128 ;
never executed: return ((void *)0) ;
0
129 }-
130 return
executed 6290 times by 3 tests: return ret;
Executed by:
  • sshd
  • test_hostkeys
  • test_kex
ret;
executed 6290 times by 3 tests: return ret;
Executed by:
  • sshd
  • test_hostkeys
  • test_kex
6290
131}-
132-
133int-
134ssh_digest_copy_state(struct ssh_digest_ctx *from, struct ssh_digest_ctx *to)-
135{-
136 if (from->alg != to->alg
from->alg != to->algDescription
TRUEnever evaluated
FALSEevaluated 832 times by 1 test
Evaluated by:
  • test_hostkeys
)
0-832
137 return
never executed: return -10;
-10;
never executed: return -10;
0
138-
139 if (!EVP_MD_CTX_copy_ex(to->mdctx, from->mdctx)
!EVP_MD_CTX_co..., from->mdctx)Description
TRUEnever evaluated
FALSEevaluated 832 times by 1 test
Evaluated by:
  • test_hostkeys
)
0-832
140 return
never executed: return -22;
-22;
never executed: return -22;
0
141 return
executed 832 times by 1 test: return 0;
Executed by:
  • test_hostkeys
0;
executed 832 times by 1 test: return 0;
Executed by:
  • test_hostkeys
832
142}-
143-
144int-
145ssh_digest_update(struct ssh_digest_ctx *ctx, const void *m, size_t mlen)-
146{-
147 if (EVP_DigestUpdate(ctx->mdctx, m, mlen) != 1
EVP_DigestUpda... m, mlen) != 1Description
TRUEnever evaluated
FALSEevaluated 18710 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
)
0-18710
148 return
never executed: return -22;
-22;
never executed: return -22;
0
149 return
executed 18710 times by 3 tests: return 0;
Executed by:
  • sshd
  • test_hostkeys
  • test_kex
0;
executed 18710 times by 3 tests: return 0;
Executed by:
  • sshd
  • test_hostkeys
  • test_kex
18710
150}-
151-
152int-
153ssh_digest_update_buffer(struct ssh_digest_ctx *ctx, const struct sshbuf *b)-
154{-
155 return
executed 5040 times by 1 test: return ssh_digest_update(ctx, sshbuf_ptr(b), sshbuf_len(b));
Executed by:
  • test_kex
ssh_digest_update(ctx, sshbuf_ptr(b), sshbuf_len(b));
executed 5040 times by 1 test: return ssh_digest_update(ctx, sshbuf_ptr(b), sshbuf_len(b));
Executed by:
  • test_kex
5040
156}-
157-
158int-
159ssh_digest_final(struct ssh_digest_ctx *ctx, u_char *d, size_t dlen)-
160{-
161 const struct ssh_digest *digest = ssh_digest_by_alg(ctx->alg);-
162 u_int l = dlen;-
163-
164 if (digest ==
digest == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 5874 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
0-5874
165 ((void *)0)
digest == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 5874 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
0-5874
166 || dlen >
dlen > (0x7fffffff * 2U + 1U)Description
TRUEnever evaluated
FALSEevaluated 5874 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
0-5874
167 (0x7fffffff * 2U + 1U)
dlen > (0x7fffffff * 2U + 1U)Description
TRUEnever evaluated
FALSEevaluated 5874 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
0-5874
168 )-
169 return
never executed: return -10;
-10;
never executed: return -10;
0
170 if (dlen < digest->digest_len
dlen < digest->digest_lenDescription
TRUEnever evaluated
FALSEevaluated 5874 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
)
0-5874
171 return
never executed: return -10;
-10;
never executed: return -10;
0
172 if (EVP_DigestFinal_ex(ctx->mdctx, d, &l) != 1
EVP_DigestFina...x, d, &l) != 1Description
TRUEnever evaluated
FALSEevaluated 5874 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
)
0-5874
173 return
never executed: return -22;
-22;
never executed: return -22;
0
174 if (l != digest->digest_len
l != digest->digest_lenDescription
TRUEnever evaluated
FALSEevaluated 5874 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
)
0-5874
175 return
never executed: return -1;
-1;
never executed: return -1;
0
176 return
executed 5874 times by 3 tests: return 0;
Executed by:
  • sshd
  • test_hostkeys
  • test_kex
0;
executed 5874 times by 3 tests: return 0;
Executed by:
  • sshd
  • test_hostkeys
  • test_kex
5874
177}-
178-
179void-
180ssh_digest_free(struct ssh_digest_ctx *ctx)-
181{-
182 if (ctx ==
ctx == ((void *)0)Description
TRUEevaluated 1920 times by 1 test
Evaluated by:
  • test_kex
FALSEevaluated 6290 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
1920-6290
183 ((void *)0)
ctx == ((void *)0)Description
TRUEevaluated 1920 times by 1 test
Evaluated by:
  • test_kex
FALSEevaluated 6290 times by 3 tests
Evaluated by:
  • sshd
  • test_hostkeys
  • test_kex
1920-6290
184 )-
185 return;
executed 1920 times by 1 test: return;
Executed by:
  • test_kex
1920
186 EVP_MD_CTX_free(ctx->mdctx);-
187 freezero(ctx, sizeof(*ctx));-
188}
executed 6290 times by 3 tests: end of block
Executed by:
  • sshd
  • test_hostkeys
  • test_kex
6290
189-
190int-
191ssh_digest_memory(int alg, const void *m, size_t mlen, u_char *d, size_t dlen)-
192{-
193 const struct ssh_digest *digest = ssh_digest_by_alg(alg);-
194 u_int mdlen;-
195-
196 if (digest ==
digest == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 75183 times by 4 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_kex
  • test_sshkey
0-75183
197 ((void *)0)
digest == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 75183 times by 4 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_kex
  • test_sshkey
0-75183
198 )-
199 return
never executed: return -10;
-10;
never executed: return -10;
0
200 if (dlen >
dlen > (0x7fffffff * 2U + 1U)Description
TRUEnever evaluated
FALSEevaluated 75183 times by 4 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_kex
  • test_sshkey
0-75183
201 (0x7fffffff * 2U + 1U)
dlen > (0x7fffffff * 2U + 1U)Description
TRUEnever evaluated
FALSEevaluated 75183 times by 4 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_kex
  • test_sshkey
0-75183
202 )-
203 return
never executed: return -10;
-10;
never executed: return -10;
0
204 if (dlen < digest->digest_len
dlen < digest->digest_lenDescription
TRUEnever evaluated
FALSEevaluated 75183 times by 4 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_kex
  • test_sshkey
)
0-75183
205 return
never executed: return -10;
-10;
never executed: return -10;
0
206 mdlen = dlen;-
207 if (!EVP_Digest(m, mlen, d, &mdlen, digest->mdfunc(),
!EVP_Digest(m,... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 75183 times by 4 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_kex
  • test_sshkey
0-75183
208 ((void *)0)
!EVP_Digest(m,... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 75183 times by 4 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_kex
  • test_sshkey
0-75183
209 )
!EVP_Digest(m,... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 75183 times by 4 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_kex
  • test_sshkey
)
0-75183
210 return
never executed: return -22;
-22;
never executed: return -22;
0
211 return
executed 75183 times by 4 tests: return 0;
Executed by:
  • ssh-keygen
  • sshd
  • test_kex
  • test_sshkey
0;
executed 75183 times by 4 tests: return 0;
Executed by:
  • ssh-keygen
  • sshd
  • test_kex
  • test_sshkey
75183
212}-
213-
214int-
215ssh_digest_buffer(int alg, const struct sshbuf *b, u_char *d, size_t dlen)-
216{-
217 return
executed 320 times by 1 test: return ssh_digest_memory(alg, sshbuf_ptr(b), sshbuf_len(b), d, dlen);
Executed by:
  • test_kex
ssh_digest_memory(alg, sshbuf_ptr(b), sshbuf_len(b), d, dlen);
executed 320 times by 1 test: return ssh_digest_memory(alg, sshbuf_ptr(b), sshbuf_len(b), d, dlen);
Executed by:
  • test_kex
320
218}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2