Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/cms/cms_smime.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||||||||
2 | - | |||||||||||||||||||||||||
3 | static BIO *cms_get_text_bio(BIO *out, unsigned int flags) | - | ||||||||||||||||||||||||
4 | { | - | ||||||||||||||||||||||||
5 | BIO *rbio; | - | ||||||||||||||||||||||||
6 | if (out ==
| 1-55 | ||||||||||||||||||||||||
7 | ((void *)0)
| 1-55 | ||||||||||||||||||||||||
8 | ) | - | ||||||||||||||||||||||||
9 | rbio = BIO_new(BIO_s_null()); executed 1 time by 1 test: rbio = BIO_new(BIO_s_null()); Executed by:
| 1 | ||||||||||||||||||||||||
10 | else if (flags & 0x1
| 1-54 | ||||||||||||||||||||||||
11 | rbio = BIO_new(BIO_s_mem()); | - | ||||||||||||||||||||||||
12 | BIO_ctrl(rbio,130,0, | - | ||||||||||||||||||||||||
13 | ((void *)0) | - | ||||||||||||||||||||||||
14 | ); | - | ||||||||||||||||||||||||
15 | } executed 1 time by 1 test: elseend of block Executed by:
| 1 | ||||||||||||||||||||||||
16 | rbio = out; executed 54 times by 1 test: rbio = out; Executed by:
| 54 | ||||||||||||||||||||||||
17 | return executed 56 times by 1 test: rbio;return rbio; Executed by:
executed 56 times by 1 test: return rbio; Executed by:
| 56 | ||||||||||||||||||||||||
18 | } | - | ||||||||||||||||||||||||
19 | - | |||||||||||||||||||||||||
20 | static int cms_copy_content(BIO *out, BIO *in, unsigned int flags) | - | ||||||||||||||||||||||||
21 | { | - | ||||||||||||||||||||||||
22 | unsigned char buf[4096]; | - | ||||||||||||||||||||||||
23 | int r = 0, i; | - | ||||||||||||||||||||||||
24 | BIO *tmpout; | - | ||||||||||||||||||||||||
25 | - | |||||||||||||||||||||||||
26 | tmpout = cms_get_text_bio(out, flags); | - | ||||||||||||||||||||||||
27 | - | |||||||||||||||||||||||||
28 | if (tmpout ==
| 0-46 | ||||||||||||||||||||||||
29 | ((void *)0)
| 0-46 | ||||||||||||||||||||||||
30 | ) { | - | ||||||||||||||||||||||||
31 | ERR_put_error(46,(107),((1|64)),__FILE__,41); | - | ||||||||||||||||||||||||
32 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
33 | } | - | ||||||||||||||||||||||||
34 | - | |||||||||||||||||||||||||
35 | - | |||||||||||||||||||||||||
36 | for (;;) { | - | ||||||||||||||||||||||||
37 | i = BIO_read(in, buf, sizeof(buf)); | - | ||||||||||||||||||||||||
38 | if (i <= 0
| 46 | ||||||||||||||||||||||||
39 | if (BIO_method_type(in) == (10|0x0200)
| 22-24 | ||||||||||||||||||||||||
40 | if (!BIO_ctrl(in,113,0,
| 0-24 | ||||||||||||||||||||||||
41 | ((void *)0)
| 0-24 | ||||||||||||||||||||||||
42 | )
| 0-24 | ||||||||||||||||||||||||
43 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
44 | } executed 24 times by 1 test: end of block Executed by:
| 24 | ||||||||||||||||||||||||
45 | if (i < 0
| 0-46 | ||||||||||||||||||||||||
46 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
47 | break; executed 46 times by 1 test: break; Executed by:
| 46 | ||||||||||||||||||||||||
48 | } | - | ||||||||||||||||||||||||
49 | - | |||||||||||||||||||||||||
50 | if (tmpout
| 0-46 | ||||||||||||||||||||||||
51 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
52 | } executed 46 times by 1 test: end of block Executed by:
| 46 | ||||||||||||||||||||||||
53 | - | |||||||||||||||||||||||||
54 | if (flags & 0x1
| 1-45 | ||||||||||||||||||||||||
55 | if (!SMIME_text(tmpout, out)
| 0-1 | ||||||||||||||||||||||||
56 | ERR_put_error(46,(107),(140),__FILE__,64); | - | ||||||||||||||||||||||||
57 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
58 | } | - | ||||||||||||||||||||||||
59 | } executed 1 time by 1 test: end of block Executed by:
| 1 | ||||||||||||||||||||||||
60 | - | |||||||||||||||||||||||||
61 | r = 1; | - | ||||||||||||||||||||||||
62 | - | |||||||||||||||||||||||||
63 | err: code before this statement executed 46 times by 1 test: err: Executed by:
| 46 | ||||||||||||||||||||||||
64 | if (tmpout != out
| 2-44 | ||||||||||||||||||||||||
65 | BIO_free(tmpout); executed 2 times by 1 test: BIO_free(tmpout); Executed by:
| 2 | ||||||||||||||||||||||||
66 | return executed 46 times by 1 test: r;return r; Executed by:
executed 46 times by 1 test: return r; Executed by:
| 46 | ||||||||||||||||||||||||
67 | - | |||||||||||||||||||||||||
68 | } | - | ||||||||||||||||||||||||
69 | - | |||||||||||||||||||||||||
70 | static int check_content(CMS_ContentInfo *cms) | - | ||||||||||||||||||||||||
71 | { | - | ||||||||||||||||||||||||
72 | ASN1_OCTET_STRING **pos = CMS_get0_content(cms); | - | ||||||||||||||||||||||||
73 | if (!pos
| 0-45 | ||||||||||||||||||||||||
74 | ERR_put_error(46,(99),(127),__FILE__,82); | - | ||||||||||||||||||||||||
75 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
76 | } | - | ||||||||||||||||||||||||
77 | return executed 45 times by 1 test: 1;return 1; Executed by:
executed 45 times by 1 test: return 1; Executed by:
| 45 | ||||||||||||||||||||||||
78 | } | - | ||||||||||||||||||||||||
79 | - | |||||||||||||||||||||||||
80 | static void do_free_upto(BIO *f, BIO *upto) | - | ||||||||||||||||||||||||
81 | { | - | ||||||||||||||||||||||||
82 | if (upto
| 10-38 | ||||||||||||||||||||||||
83 | BIO *tbio; | - | ||||||||||||||||||||||||
84 | do { | - | ||||||||||||||||||||||||
85 | tbio = BIO_pop(f); | - | ||||||||||||||||||||||||
86 | BIO_free(f); | - | ||||||||||||||||||||||||
87 | f = tbio; | - | ||||||||||||||||||||||||
88 | } executed 10 times by 1 test: end of block Executed by:
| 10 | ||||||||||||||||||||||||
89 | while (f
| 0-10 | ||||||||||||||||||||||||
90 | } executed 10 times by 1 test: elseend of block Executed by:
| 10 | ||||||||||||||||||||||||
91 | BIO_free_all(f); executed 38 times by 1 test: BIO_free_all(f); Executed by:
| 38 | ||||||||||||||||||||||||
92 | } | - | ||||||||||||||||||||||||
93 | - | |||||||||||||||||||||||||
94 | int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags) | - | ||||||||||||||||||||||||
95 | { | - | ||||||||||||||||||||||||
96 | BIO *cont; | - | ||||||||||||||||||||||||
97 | int r; | - | ||||||||||||||||||||||||
98 | if (OBJ_obj2nid(CMS_get0_type(cms)) != 21
| 0-1 | ||||||||||||||||||||||||
99 | ERR_put_error(46,(109),(143),__FILE__,107); | - | ||||||||||||||||||||||||
100 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
101 | } | - | ||||||||||||||||||||||||
102 | cont = CMS_dataInit(cms, | - | ||||||||||||||||||||||||
103 | ((void *)0) | - | ||||||||||||||||||||||||
104 | ); | - | ||||||||||||||||||||||||
105 | if (!cont
| 0-1 | ||||||||||||||||||||||||
106 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
107 | r = cms_copy_content(out, cont, flags); | - | ||||||||||||||||||||||||
108 | BIO_free_all(cont); | - | ||||||||||||||||||||||||
109 | return executed 1 time by 1 test: r;return r; Executed by:
executed 1 time by 1 test: return r; Executed by:
| 1 | ||||||||||||||||||||||||
110 | } | - | ||||||||||||||||||||||||
111 | - | |||||||||||||||||||||||||
112 | CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags) | - | ||||||||||||||||||||||||
113 | { | - | ||||||||||||||||||||||||
114 | CMS_ContentInfo *cms; | - | ||||||||||||||||||||||||
115 | cms = cms_Data_create(); | - | ||||||||||||||||||||||||
116 | if (!cms
| 0-1 | ||||||||||||||||||||||||
117 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
118 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
119 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
120 | - | |||||||||||||||||||||||||
121 | if ((
| 0-1 | ||||||||||||||||||||||||
122 | ((void *)0)
| 0 | ||||||||||||||||||||||||
123 | , flags)
| 0 | ||||||||||||||||||||||||
124 | return executed 1 time by 1 test: cms;return cms; Executed by:
executed 1 time by 1 test: return cms; Executed by:
| 1 | ||||||||||||||||||||||||
125 | - | |||||||||||||||||||||||||
126 | CMS_ContentInfo_free(cms); | - | ||||||||||||||||||||||||
127 | - | |||||||||||||||||||||||||
128 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
129 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
130 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
131 | } | - | ||||||||||||||||||||||||
132 | - | |||||||||||||||||||||||||
133 | int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, | - | ||||||||||||||||||||||||
134 | unsigned int flags) | - | ||||||||||||||||||||||||
135 | { | - | ||||||||||||||||||||||||
136 | BIO *cont; | - | ||||||||||||||||||||||||
137 | int r; | - | ||||||||||||||||||||||||
138 | if (OBJ_obj2nid(CMS_get0_type(cms)) != 25
| 0 | ||||||||||||||||||||||||
139 | ERR_put_error(46,(118),(144),__FILE__,139); | - | ||||||||||||||||||||||||
140 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
141 | } | - | ||||||||||||||||||||||||
142 | - | |||||||||||||||||||||||||
143 | if (!dcont
| 0 | ||||||||||||||||||||||||
144 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
145 | - | |||||||||||||||||||||||||
146 | cont = CMS_dataInit(cms, dcont); | - | ||||||||||||||||||||||||
147 | if (!cont
| 0 | ||||||||||||||||||||||||
148 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
149 | r = cms_copy_content(out, cont, flags); | - | ||||||||||||||||||||||||
150 | if (r
| 0 | ||||||||||||||||||||||||
151 | r = cms_DigestedData_do_final(cms, cont, 1); never executed: r = cms_DigestedData_do_final(cms, cont, 1); | 0 | ||||||||||||||||||||||||
152 | do_free_upto(cont, dcont); | - | ||||||||||||||||||||||||
153 | return never executed: r;return r; never executed: return r; | 0 | ||||||||||||||||||||||||
154 | } | - | ||||||||||||||||||||||||
155 | - | |||||||||||||||||||||||||
156 | CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, | - | ||||||||||||||||||||||||
157 | unsigned int flags) | - | ||||||||||||||||||||||||
158 | { | - | ||||||||||||||||||||||||
159 | CMS_ContentInfo *cms; | - | ||||||||||||||||||||||||
160 | if (!md
| 0 | ||||||||||||||||||||||||
161 | md = EVP_sha1(); never executed: md = EVP_sha1(); | 0 | ||||||||||||||||||||||||
162 | cms = cms_DigestedData_create(md); | - | ||||||||||||||||||||||||
163 | if (!cms
| 0 | ||||||||||||||||||||||||
164 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
165 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
166 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
167 | - | |||||||||||||||||||||||||
168 | if (!(flags & 0x40)
| 0 | ||||||||||||||||||||||||
169 | CMS_set_detached(cms, 0); never executed: CMS_set_detached(cms, 0); | 0 | ||||||||||||||||||||||||
170 | - | |||||||||||||||||||||||||
171 | if ((
| 0 | ||||||||||||||||||||||||
172 | ((void *)0)
| 0 | ||||||||||||||||||||||||
173 | , flags)
| 0 | ||||||||||||||||||||||||
174 | return never executed: cms;return cms; never executed: return cms; | 0 | ||||||||||||||||||||||||
175 | - | |||||||||||||||||||||||||
176 | CMS_ContentInfo_free(cms); | - | ||||||||||||||||||||||||
177 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
178 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
179 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
180 | } | - | ||||||||||||||||||||||||
181 | - | |||||||||||||||||||||||||
182 | int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, | - | ||||||||||||||||||||||||
183 | const unsigned char *key, size_t keylen, | - | ||||||||||||||||||||||||
184 | BIO *dcont, BIO *out, unsigned int flags) | - | ||||||||||||||||||||||||
185 | { | - | ||||||||||||||||||||||||
186 | BIO *cont; | - | ||||||||||||||||||||||||
187 | int r; | - | ||||||||||||||||||||||||
188 | if (OBJ_obj2nid(CMS_get0_type(cms)) != 26
| 0-4 | ||||||||||||||||||||||||
189 | ERR_put_error(46,(121),(145),__FILE__,184) | - | ||||||||||||||||||||||||
190 | ; | - | ||||||||||||||||||||||||
191 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
192 | } | - | ||||||||||||||||||||||||
193 | - | |||||||||||||||||||||||||
194 | if (!dcont
| 0-4 | ||||||||||||||||||||||||
195 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
196 | - | |||||||||||||||||||||||||
197 | if (CMS_EncryptedData_set1_key(cms,
| 0-4 | ||||||||||||||||||||||||
198 | ((void *)0)
| 0-4 | ||||||||||||||||||||||||
199 | , key, keylen) <= 0
| 0-4 | ||||||||||||||||||||||||
200 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
201 | cont = CMS_dataInit(cms, dcont); | - | ||||||||||||||||||||||||
202 | if (!cont
| 0-4 | ||||||||||||||||||||||||
203 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
204 | r = cms_copy_content(out, cont, flags); | - | ||||||||||||||||||||||||
205 | do_free_upto(cont, dcont); | - | ||||||||||||||||||||||||
206 | return executed 4 times by 1 test: r;return r; Executed by:
executed 4 times by 1 test: return r; Executed by:
| 4 | ||||||||||||||||||||||||
207 | } | - | ||||||||||||||||||||||||
208 | - | |||||||||||||||||||||||||
209 | CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, | - | ||||||||||||||||||||||||
210 | const unsigned char *key, | - | ||||||||||||||||||||||||
211 | size_t keylen, unsigned int flags) | - | ||||||||||||||||||||||||
212 | { | - | ||||||||||||||||||||||||
213 | CMS_ContentInfo *cms; | - | ||||||||||||||||||||||||
214 | if (!cipher
| 0-4 | ||||||||||||||||||||||||
215 | ERR_put_error(46,(122),(126),__FILE__,207); | - | ||||||||||||||||||||||||
216 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
217 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
218 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
219 | } | - | ||||||||||||||||||||||||
220 | cms = CMS_ContentInfo_new(); | - | ||||||||||||||||||||||||
221 | if (cms ==
| 0-4 | ||||||||||||||||||||||||
222 | ((void *)0)
| 0-4 | ||||||||||||||||||||||||
223 | ) | - | ||||||||||||||||||||||||
224 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
225 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
226 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
227 | if (!CMS_EncryptedData_set1_key(cms, cipher, key, keylen)
| 0-4 | ||||||||||||||||||||||||
228 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
229 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
230 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
231 | - | |||||||||||||||||||||||||
232 | if (!(flags & 0x40)
| 0-4 | ||||||||||||||||||||||||
233 | CMS_set_detached(cms, 0); executed 4 times by 1 test: CMS_set_detached(cms, 0); Executed by:
| 4 | ||||||||||||||||||||||||
234 | - | |||||||||||||||||||||||||
235 | if ((
| 0-4 | ||||||||||||||||||||||||
236 | || CMS_final(cms, in,
| 0 | ||||||||||||||||||||||||
237 | ((void *)0)
| 0 | ||||||||||||||||||||||||
238 | , flags)
| 0 | ||||||||||||||||||||||||
239 | return executed 4 times by 1 test: cms;return cms; Executed by:
executed 4 times by 1 test: return cms; Executed by:
| 4 | ||||||||||||||||||||||||
240 | - | |||||||||||||||||||||||||
241 | CMS_ContentInfo_free(cms); | - | ||||||||||||||||||||||||
242 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
243 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
244 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
245 | } | - | ||||||||||||||||||||||||
246 | - | |||||||||||||||||||||||||
247 | static int cms_signerinfo_verify_cert(CMS_SignerInfo *si, | - | ||||||||||||||||||||||||
248 | X509_STORE *store, | - | ||||||||||||||||||||||||
249 | struct stack_st_X509 *certs, | - | ||||||||||||||||||||||||
250 | struct stack_st_X509_CRL *crls) | - | ||||||||||||||||||||||||
251 | { | - | ||||||||||||||||||||||||
252 | X509_STORE_CTX *ctx = X509_STORE_CTX_new(); | - | ||||||||||||||||||||||||
253 | X509 *signer; | - | ||||||||||||||||||||||||
254 | int i, j, r = 0; | - | ||||||||||||||||||||||||
255 | - | |||||||||||||||||||||||||
256 | if (ctx ==
| 0-63 | ||||||||||||||||||||||||
257 | ((void *)0)
| 0-63 | ||||||||||||||||||||||||
258 | ) { | - | ||||||||||||||||||||||||
259 | ERR_put_error(46,(153),((1|64)),__FILE__,237); | - | ||||||||||||||||||||||||
260 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
261 | } | - | ||||||||||||||||||||||||
262 | CMS_SignerInfo_get0_algs(si, | - | ||||||||||||||||||||||||
263 | ((void *)0) | - | ||||||||||||||||||||||||
264 | , &signer, | - | ||||||||||||||||||||||||
265 | ((void *)0) | - | ||||||||||||||||||||||||
266 | , | - | ||||||||||||||||||||||||
267 | ((void *)0) | - | ||||||||||||||||||||||||
268 | ); | - | ||||||||||||||||||||||||
269 | if (!X509_STORE_CTX_init(ctx, store, signer, certs)
| 0-63 | ||||||||||||||||||||||||
270 | ERR_put_error(46,(153),(141),__FILE__,242); | - | ||||||||||||||||||||||||
271 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
272 | } | - | ||||||||||||||||||||||||
273 | X509_STORE_CTX_set_default(ctx, "smime_sign"); | - | ||||||||||||||||||||||||
274 | if (crls
| 0-63 | ||||||||||||||||||||||||
275 | X509_STORE_CTX_set0_crls(ctx, crls); never executed: X509_STORE_CTX_set0_crls(ctx, crls); | 0 | ||||||||||||||||||||||||
276 | - | |||||||||||||||||||||||||
277 | i = X509_verify_cert(ctx); | - | ||||||||||||||||||||||||
278 | if (i <= 0
| 0-63 | ||||||||||||||||||||||||
279 | j = X509_STORE_CTX_get_error(ctx); | - | ||||||||||||||||||||||||
280 | ERR_put_error(46,(153),(100),__FILE__,253) | - | ||||||||||||||||||||||||
281 | ; | - | ||||||||||||||||||||||||
282 | ERR_add_error_data(2, "Verify error:", | - | ||||||||||||||||||||||||
283 | X509_verify_cert_error_string(j)); | - | ||||||||||||||||||||||||
284 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
285 | } | - | ||||||||||||||||||||||||
286 | r = 1; | - | ||||||||||||||||||||||||
287 | err: code before this statement executed 63 times by 1 test: err: Executed by:
| 63 | ||||||||||||||||||||||||
288 | X509_STORE_CTX_free(ctx); | - | ||||||||||||||||||||||||
289 | return executed 63 times by 1 test: r;return r; Executed by:
executed 63 times by 1 test: return r; Executed by:
| 63 | ||||||||||||||||||||||||
290 | - | |||||||||||||||||||||||||
291 | } | - | ||||||||||||||||||||||||
292 | - | |||||||||||||||||||||||||
293 | int CMS_verify(CMS_ContentInfo *cms, struct stack_st_X509 *certs, | - | ||||||||||||||||||||||||
294 | X509_STORE *store, BIO *dcont, BIO *out, unsigned int flags) | - | ||||||||||||||||||||||||
295 | { | - | ||||||||||||||||||||||||
296 | CMS_SignerInfo *si; | - | ||||||||||||||||||||||||
297 | struct stack_st_CMS_SignerInfo *sinfos; | - | ||||||||||||||||||||||||
298 | struct stack_st_X509 *cms_certs = | - | ||||||||||||||||||||||||
299 | ((void *)0) | - | ||||||||||||||||||||||||
300 | ; | - | ||||||||||||||||||||||||
301 | struct stack_st_X509_CRL *crls = | - | ||||||||||||||||||||||||
302 | ((void *)0) | - | ||||||||||||||||||||||||
303 | ; | - | ||||||||||||||||||||||||
304 | X509 *signer; | - | ||||||||||||||||||||||||
305 | int i, scount = 0, ret = 0; | - | ||||||||||||||||||||||||
306 | BIO *cmsbio = | - | ||||||||||||||||||||||||
307 | ((void *)0) | - | ||||||||||||||||||||||||
308 | , *tmpin = | - | ||||||||||||||||||||||||
309 | ((void *)0) | - | ||||||||||||||||||||||||
310 | , *tmpout = | - | ||||||||||||||||||||||||
311 | ((void *)0) | - | ||||||||||||||||||||||||
312 | ; | - | ||||||||||||||||||||||||
313 | - | |||||||||||||||||||||||||
314 | if (!dcont
| 0-21 | ||||||||||||||||||||||||
315 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
316 | if (dcont
| 0-21 | ||||||||||||||||||||||||
317 | const ASN1_OBJECT *coid = CMS_get0_eContentType(cms); | - | ||||||||||||||||||||||||
318 | if (OBJ_obj2nid(coid) == 787
| 0-10 | ||||||||||||||||||||||||
319 | flags |= 0x80000; never executed: flags |= 0x80000; | 0 | ||||||||||||||||||||||||
320 | } executed 10 times by 1 test: end of block Executed by:
| 10 | ||||||||||||||||||||||||
321 | - | |||||||||||||||||||||||||
322 | - | |||||||||||||||||||||||||
323 | - | |||||||||||||||||||||||||
324 | sinfos = CMS_get0_SignerInfos(cms); | - | ||||||||||||||||||||||||
325 | - | |||||||||||||||||||||||||
326 | if (sk_CMS_SignerInfo_num(sinfos) <= 0
| 0-31 | ||||||||||||||||||||||||
327 | ERR_put_error(46,(157),(135),__FILE__,289); | - | ||||||||||||||||||||||||
328 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
329 | } | - | ||||||||||||||||||||||||
330 | - | |||||||||||||||||||||||||
331 | for (i = 0; i < sk_CMS_SignerInfo_num(sinfos)
| 31-63 | ||||||||||||||||||||||||
332 | si = sk_CMS_SignerInfo_value(sinfos, i); | - | ||||||||||||||||||||||||
333 | CMS_SignerInfo_get0_algs(si, | - | ||||||||||||||||||||||||
334 | ((void *)0) | - | ||||||||||||||||||||||||
335 | , &signer, | - | ||||||||||||||||||||||||
336 | ((void *)0) | - | ||||||||||||||||||||||||
337 | , | - | ||||||||||||||||||||||||
338 | ((void *)0) | - | ||||||||||||||||||||||||
339 | ); | - | ||||||||||||||||||||||||
340 | if (signer
| 0-63 | ||||||||||||||||||||||||
341 | scount++; never executed: scount++; | 0 | ||||||||||||||||||||||||
342 | } executed 63 times by 1 test: end of block Executed by:
| 63 | ||||||||||||||||||||||||
343 | - | |||||||||||||||||||||||||
344 | if (scount != sk_CMS_SignerInfo_num(sinfos)
| 0-31 | ||||||||||||||||||||||||
345 | scount += CMS_set1_signers_certs(cms, certs, flags); executed 31 times by 1 test: scount += CMS_set1_signers_certs(cms, certs, flags); Executed by:
| 31 | ||||||||||||||||||||||||
346 | - | |||||||||||||||||||||||||
347 | if (scount != sk_CMS_SignerInfo_num(sinfos)
| 0-31 | ||||||||||||||||||||||||
348 | ERR_put_error(46,(157),(138),__FILE__,304); | - | ||||||||||||||||||||||||
349 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
350 | } | - | ||||||||||||||||||||||||
351 | - | |||||||||||||||||||||||||
352 | - | |||||||||||||||||||||||||
353 | - | |||||||||||||||||||||||||
354 | if (!(flags & 0x20)
| 0-31 | ||||||||||||||||||||||||
355 | cms_certs = CMS_get1_certs(cms); | - | ||||||||||||||||||||||||
356 | if (!(flags & 0x2000)
| 0-31 | ||||||||||||||||||||||||
357 | crls = CMS_get1_crls(cms); executed 31 times by 1 test: crls = CMS_get1_crls(cms); Executed by:
| 31 | ||||||||||||||||||||||||
358 | for (i = 0; i < sk_CMS_SignerInfo_num(sinfos)
| 31-63 | ||||||||||||||||||||||||
359 | si = sk_CMS_SignerInfo_value(sinfos, i); | - | ||||||||||||||||||||||||
360 | if (!cms_signerinfo_verify_cert(si, store, cms_certs, crls)
| 0-63 | ||||||||||||||||||||||||
361 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
362 | } executed 63 times by 1 test: end of block Executed by:
| 63 | ||||||||||||||||||||||||
363 | } executed 31 times by 1 test: end of block Executed by:
| 31 | ||||||||||||||||||||||||
364 | - | |||||||||||||||||||||||||
365 | - | |||||||||||||||||||||||||
366 | - | |||||||||||||||||||||||||
367 | if (!(flags & 0x8)
| 0-31 | ||||||||||||||||||||||||
368 | for (i = 0; i < sk_CMS_SignerInfo_num(sinfos)
| 31-63 | ||||||||||||||||||||||||
369 | si = sk_CMS_SignerInfo_value(sinfos, i); | - | ||||||||||||||||||||||||
370 | if (CMS_signed_get_attr_count(si) < 0
| 9-54 | ||||||||||||||||||||||||
371 | continue; executed 9 times by 1 test: continue; Executed by:
| 9 | ||||||||||||||||||||||||
372 | if (CMS_SignerInfo_verify(si) <= 0
| 0-54 | ||||||||||||||||||||||||
373 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
374 | } executed 54 times by 1 test: end of block Executed by:
| 54 | ||||||||||||||||||||||||
375 | } executed 31 times by 1 test: end of block Executed by:
| 31 | ||||||||||||||||||||||||
376 | if (dcont
| 4-21 | ||||||||||||||||||||||||
377 | char *ptr; | - | ||||||||||||||||||||||||
378 | long len; | - | ||||||||||||||||||||||||
379 | len = BIO_ctrl(dcont,3,0,(char *)(&ptr)); | - | ||||||||||||||||||||||||
380 | tmpin = BIO_new_mem_buf(ptr, len); | - | ||||||||||||||||||||||||
381 | if (tmpin ==
| 0-4 | ||||||||||||||||||||||||
382 | ((void *)0)
| 0-4 | ||||||||||||||||||||||||
383 | ) { | - | ||||||||||||||||||||||||
384 | ERR_put_error(46,(157),((1|64)),__FILE__,346); | - | ||||||||||||||||||||||||
385 | goto never executed: err2;goto err2; never executed: goto err2; | 0 | ||||||||||||||||||||||||
386 | } | - | ||||||||||||||||||||||||
387 | } executed 4 times by 1 test: elseend of block Executed by:
| 4 | ||||||||||||||||||||||||
388 | tmpin = dcont; executed 27 times by 1 test: tmpin = dcont; Executed by:
| 27 | ||||||||||||||||||||||||
389 | - | |||||||||||||||||||||||||
390 | - | |||||||||||||||||||||||||
391 | - | |||||||||||||||||||||||||
392 | - | |||||||||||||||||||||||||
393 | if (!(flags & 0x80)
| 0-31 | ||||||||||||||||||||||||
394 | - | |||||||||||||||||||||||||
395 | - | |||||||||||||||||||||||||
396 | - | |||||||||||||||||||||||||
397 | - | |||||||||||||||||||||||||
398 | tmpout = cms_get_text_bio(out, flags); | - | ||||||||||||||||||||||||
399 | if (!tmpout
| 0-10 | ||||||||||||||||||||||||
400 | ERR_put_error(46,(157),((1|64)),__FILE__,362); | - | ||||||||||||||||||||||||
401 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
402 | } | - | ||||||||||||||||||||||||
403 | cmsbio = CMS_dataInit(cms, tmpout); | - | ||||||||||||||||||||||||
404 | if (!cmsbio
| 0-10 | ||||||||||||||||||||||||
405 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
406 | - | |||||||||||||||||||||||||
407 | - | |||||||||||||||||||||||||
408 | - | |||||||||||||||||||||||||
409 | - | |||||||||||||||||||||||||
410 | SMIME_crlf_copy(dcont, cmsbio, flags & ~0x1); | - | ||||||||||||||||||||||||
411 | - | |||||||||||||||||||||||||
412 | if (flags & 0x1
| 0-10 | ||||||||||||||||||||||||
413 | if (!SMIME_text(tmpout, out)
| 0 | ||||||||||||||||||||||||
414 | ERR_put_error(46,(157),(140),__FILE__,376); | - | ||||||||||||||||||||||||
415 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
416 | } | - | ||||||||||||||||||||||||
417 | } never executed: end of block | 0 | ||||||||||||||||||||||||
418 | } executed 10 times by 1 test: else {end of block Executed by:
| 10 | ||||||||||||||||||||||||
419 | cmsbio = CMS_dataInit(cms, tmpin); | - | ||||||||||||||||||||||||
420 | if (!cmsbio
| 0-21 | ||||||||||||||||||||||||
421 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
422 | - | |||||||||||||||||||||||||
423 | if (!cms_copy_content(out, cmsbio, flags)
| 0-21 | ||||||||||||||||||||||||
424 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
425 | - | |||||||||||||||||||||||||
426 | } executed 21 times by 1 test: end of block Executed by:
| 21 | ||||||||||||||||||||||||
427 | if (!(flags & 0x4)
| 0-31 | ||||||||||||||||||||||||
428 | for (i = 0; i < sk_CMS_SignerInfo_num(sinfos)
| 31-63 | ||||||||||||||||||||||||
429 | si = sk_CMS_SignerInfo_value(sinfos, i); | - | ||||||||||||||||||||||||
430 | if (CMS_SignerInfo_verify_content(si, cmsbio) <= 0
| 0-63 | ||||||||||||||||||||||||
431 | ERR_put_error(46,(157),(109),__FILE__,393); | - | ||||||||||||||||||||||||
432 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
433 | } | - | ||||||||||||||||||||||||
434 | } executed 63 times by 1 test: end of block Executed by:
| 63 | ||||||||||||||||||||||||
435 | } executed 31 times by 1 test: end of block Executed by:
| 31 | ||||||||||||||||||||||||
436 | - | |||||||||||||||||||||||||
437 | ret = 1; | - | ||||||||||||||||||||||||
438 | - | |||||||||||||||||||||||||
439 | err: code before this statement executed 31 times by 1 test: err: Executed by:
| 31 | ||||||||||||||||||||||||
440 | if (!(flags & 0x80)
| 0-31 | ||||||||||||||||||||||||
441 | do_free_upto(cmsbio, tmpout); | - | ||||||||||||||||||||||||
442 | if (tmpin != dcont
| 4-6 | ||||||||||||||||||||||||
443 | BIO_free(tmpin); executed 4 times by 1 test: BIO_free(tmpin); Executed by:
| 4 | ||||||||||||||||||||||||
444 | } executed 10 times by 1 test: else {end of block Executed by:
| 10 | ||||||||||||||||||||||||
445 | if (dcont
| 0-21 | ||||||||||||||||||||||||
446 | do_free_upto(cmsbio, dcont); never executed: do_free_upto(cmsbio, dcont); | 0 | ||||||||||||||||||||||||
447 | else | - | ||||||||||||||||||||||||
448 | BIO_free_all(cmsbio); executed 21 times by 1 test: BIO_free_all(cmsbio); Executed by:
| 21 | ||||||||||||||||||||||||
449 | } | - | ||||||||||||||||||||||||
450 | - | |||||||||||||||||||||||||
451 | if (out != tmpout
| 11-20 | ||||||||||||||||||||||||
452 | BIO_free_all(tmpout); executed 20 times by 1 test: BIO_free_all(tmpout); Executed by:
| 20 | ||||||||||||||||||||||||
453 | - | |||||||||||||||||||||||||
454 | err2: code before this statement executed 31 times by 1 test: err2: Executed by:
| 31 | ||||||||||||||||||||||||
455 | sk_X509_pop_free(cms_certs, X509_free); | - | ||||||||||||||||||||||||
456 | sk_X509_CRL_pop_free(crls, X509_CRL_free); | - | ||||||||||||||||||||||||
457 | - | |||||||||||||||||||||||||
458 | return executed 31 times by 1 test: ret;return ret; Executed by:
executed 31 times by 1 test: return ret; Executed by:
| 31 | ||||||||||||||||||||||||
459 | } | - | ||||||||||||||||||||||||
460 | - | |||||||||||||||||||||||||
461 | int CMS_verify_receipt(CMS_ContentInfo *rcms, CMS_ContentInfo *ocms, | - | ||||||||||||||||||||||||
462 | struct stack_st_X509 *certs, | - | ||||||||||||||||||||||||
463 | X509_STORE *store, unsigned int flags) | - | ||||||||||||||||||||||||
464 | { | - | ||||||||||||||||||||||||
465 | int r; | - | ||||||||||||||||||||||||
466 | flags &= ~(0x40 | 0x1); | - | ||||||||||||||||||||||||
467 | r = CMS_verify(rcms, certs, store, | - | ||||||||||||||||||||||||
468 | ((void *)0) | - | ||||||||||||||||||||||||
469 | , | - | ||||||||||||||||||||||||
470 | ((void *)0) | - | ||||||||||||||||||||||||
471 | , flags); | - | ||||||||||||||||||||||||
472 | if (r <= 0
| 0-1 | ||||||||||||||||||||||||
473 | return never executed: r;return r; never executed: return r; | 0 | ||||||||||||||||||||||||
474 | return executed 1 time by 1 test: cms_Receipt_verify(rcms, ocms);return cms_Receipt_verify(rcms, ocms); Executed by:
executed 1 time by 1 test: return cms_Receipt_verify(rcms, ocms); Executed by:
| 1 | ||||||||||||||||||||||||
475 | } | - | ||||||||||||||||||||||||
476 | - | |||||||||||||||||||||||||
477 | CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, | - | ||||||||||||||||||||||||
478 | struct stack_st_X509 *certs, BIO *data, | - | ||||||||||||||||||||||||
479 | unsigned int flags) | - | ||||||||||||||||||||||||
480 | { | - | ||||||||||||||||||||||||
481 | CMS_ContentInfo *cms; | - | ||||||||||||||||||||||||
482 | int i; | - | ||||||||||||||||||||||||
483 | - | |||||||||||||||||||||||||
484 | cms = CMS_ContentInfo_new(); | - | ||||||||||||||||||||||||
485 | if (cms ==
| 0-29 | ||||||||||||||||||||||||
486 | ((void *)0)
| 0-29 | ||||||||||||||||||||||||
487 | || !CMS_SignedData_init(cms)
| 0-29 | ||||||||||||||||||||||||
488 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||||||||||||||
489 | if (flags & 0x80000
| 0-29 | ||||||||||||||||||||||||
490 | && !CMS_set1_eContentType(cms,
| 0 | ||||||||||||||||||||||||
491 | OBJ_nid2obj(787))
| 0 | ||||||||||||||||||||||||
492 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
493 | - | |||||||||||||||||||||||||
494 | if (pkey
| 0-29 | ||||||||||||||||||||||||
495 | ((void *)0)
| 0 | ||||||||||||||||||||||||
496 | , flags)
| 0 | ||||||||||||||||||||||||
497 | ERR_put_error(46,(148),(99),__FILE__,451); | - | ||||||||||||||||||||||||
498 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
499 | } | - | ||||||||||||||||||||||||
500 | - | |||||||||||||||||||||||||
501 | for (i = 0; i < sk_X509_num(certs)
| 4-29 | ||||||||||||||||||||||||
502 | X509 *x = sk_X509_value(certs, i); | - | ||||||||||||||||||||||||
503 | if (!CMS_add1_cert(cms, x)
| 0-4 | ||||||||||||||||||||||||
504 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||||||||||||||
505 | } executed 4 times by 1 test: end of block Executed by:
| 4 | ||||||||||||||||||||||||
506 | - | |||||||||||||||||||||||||
507 | if (!(flags & 0x40)
| 9-20 | ||||||||||||||||||||||||
508 | CMS_set_detached(cms, 0); executed 20 times by 1 test: CMS_set_detached(cms, 0); Executed by:
| 20 | ||||||||||||||||||||||||
509 | - | |||||||||||||||||||||||||
510 | if ((
| 0-29 | ||||||||||||||||||||||||
511 | || CMS_final(cms, data,
| 0 | ||||||||||||||||||||||||
512 | ((void *)0)
| 0 | ||||||||||||||||||||||||
513 | , flags)
| 0 | ||||||||||||||||||||||||
514 | return executed 29 times by 1 test: cms;return cms; Executed by:
executed 29 times by 1 test: return cms; Executed by:
| 29 | ||||||||||||||||||||||||
515 | else | - | ||||||||||||||||||||||||
516 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
517 | - | |||||||||||||||||||||||||
518 | merr: | - | ||||||||||||||||||||||||
519 | ERR_put_error(46,(148),((1|64)),__FILE__,471); | - | ||||||||||||||||||||||||
520 | - | |||||||||||||||||||||||||
521 | err: code before this statement never executed: err: | 0 | ||||||||||||||||||||||||
522 | CMS_ContentInfo_free(cms); | - | ||||||||||||||||||||||||
523 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
524 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
525 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
526 | } | - | ||||||||||||||||||||||||
527 | - | |||||||||||||||||||||||||
528 | CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, | - | ||||||||||||||||||||||||
529 | X509 *signcert, EVP_PKEY *pkey, | - | ||||||||||||||||||||||||
530 | struct stack_st_X509 *certs, unsigned int flags) | - | ||||||||||||||||||||||||
531 | { | - | ||||||||||||||||||||||||
532 | CMS_SignerInfo *rct_si; | - | ||||||||||||||||||||||||
533 | CMS_ContentInfo *cms = | - | ||||||||||||||||||||||||
534 | ((void *)0) | - | ||||||||||||||||||||||||
535 | ; | - | ||||||||||||||||||||||||
536 | ASN1_OCTET_STRING **pos, *os; | - | ||||||||||||||||||||||||
537 | BIO *rct_cont = | - | ||||||||||||||||||||||||
538 | ((void *)0) | - | ||||||||||||||||||||||||
539 | ; | - | ||||||||||||||||||||||||
540 | int r = 0; | - | ||||||||||||||||||||||||
541 | - | |||||||||||||||||||||||||
542 | flags &= ~(0x1000 | 0x1); | - | ||||||||||||||||||||||||
543 | - | |||||||||||||||||||||||||
544 | flags |= 0x4000 | 0x80 | 0x40; | - | ||||||||||||||||||||||||
545 | if (!pkey
| 0-1 | ||||||||||||||||||||||||
546 | ERR_put_error(46,(163),(174),__FILE__,492); | - | ||||||||||||||||||||||||
547 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
548 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
549 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
550 | } | - | ||||||||||||||||||||||||
551 | - | |||||||||||||||||||||||||
552 | - | |||||||||||||||||||||||||
553 | - | |||||||||||||||||||||||||
554 | cms = CMS_sign( | - | ||||||||||||||||||||||||
555 | ((void *)0) | - | ||||||||||||||||||||||||
556 | , | - | ||||||||||||||||||||||||
557 | ((void *)0) | - | ||||||||||||||||||||||||
558 | , certs, | - | ||||||||||||||||||||||||
559 | ((void *)0) | - | ||||||||||||||||||||||||
560 | , flags); | - | ||||||||||||||||||||||||
561 | if (!cms
| 0-1 | ||||||||||||||||||||||||
562 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
563 | - | |||||||||||||||||||||||||
564 | - | |||||||||||||||||||||||||
565 | if (!CMS_set1_eContentType(cms, OBJ_nid2obj(204))
| 0-1 | ||||||||||||||||||||||||
566 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
567 | - | |||||||||||||||||||||||||
568 | rct_si = CMS_add1_signer(cms, signcert, pkey, | - | ||||||||||||||||||||||||
569 | ((void *)0) | - | ||||||||||||||||||||||||
570 | , flags); | - | ||||||||||||||||||||||||
571 | if (!rct_si
| 0-1 | ||||||||||||||||||||||||
572 | ERR_put_error(46,(163),(99),__FILE__,508); | - | ||||||||||||||||||||||||
573 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
574 | } | - | ||||||||||||||||||||||||
575 | - | |||||||||||||||||||||||||
576 | os = cms_encode_Receipt(si); | - | ||||||||||||||||||||||||
577 | - | |||||||||||||||||||||||||
578 | if (!os
| 0-1 | ||||||||||||||||||||||||
579 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
580 | - | |||||||||||||||||||||||||
581 | - | |||||||||||||||||||||||||
582 | rct_cont = BIO_new_mem_buf(os->data, os->length); | - | ||||||||||||||||||||||||
583 | if (!rct_cont
| 0-1 | ||||||||||||||||||||||||
584 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
585 | - | |||||||||||||||||||||||||
586 | - | |||||||||||||||||||||||||
587 | - | |||||||||||||||||||||||||
588 | if (!cms_msgSigDigest_add1(rct_si, si)
| 0-1 | ||||||||||||||||||||||||
589 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
590 | - | |||||||||||||||||||||||||
591 | - | |||||||||||||||||||||||||
592 | if (!CMS_final(cms, rct_cont,
| 0-1 | ||||||||||||||||||||||||
593 | ((void *)0)
| 0-1 | ||||||||||||||||||||||||
594 | , flags)
| 0-1 | ||||||||||||||||||||||||
595 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
596 | - | |||||||||||||||||||||||||
597 | - | |||||||||||||||||||||||||
598 | pos = CMS_get0_content(cms); | - | ||||||||||||||||||||||||
599 | *pos = os; | - | ||||||||||||||||||||||||
600 | - | |||||||||||||||||||||||||
601 | r = 1; | - | ||||||||||||||||||||||||
602 | - | |||||||||||||||||||||||||
603 | err: code before this statement executed 1 time by 1 test: err: Executed by:
| 1 | ||||||||||||||||||||||||
604 | BIO_free(rct_cont); | - | ||||||||||||||||||||||||
605 | if (r
| 0-1 | ||||||||||||||||||||||||
606 | return executed 1 time by 1 test: cms;return cms; Executed by:
executed 1 time by 1 test: return cms; Executed by:
| 1 | ||||||||||||||||||||||||
607 | CMS_ContentInfo_free(cms); | - | ||||||||||||||||||||||||
608 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
609 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
610 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
611 | - | |||||||||||||||||||||||||
612 | } | - | ||||||||||||||||||||||||
613 | - | |||||||||||||||||||||||||
614 | CMS_ContentInfo *CMS_encrypt(struct stack_st_X509 *certs, BIO *data, | - | ||||||||||||||||||||||||
615 | const EVP_CIPHER *cipher, unsigned int flags) | - | ||||||||||||||||||||||||
616 | { | - | ||||||||||||||||||||||||
617 | CMS_ContentInfo *cms; | - | ||||||||||||||||||||||||
618 | int i; | - | ||||||||||||||||||||||||
619 | X509 *recip; | - | ||||||||||||||||||||||||
620 | cms = CMS_EnvelopedData_create(cipher); | - | ||||||||||||||||||||||||
621 | if (!cms
| 0-20 | ||||||||||||||||||||||||
622 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||||||||||||||
623 | for (i = 0; i < sk_X509_num(certs)
| 1-20 | ||||||||||||||||||||||||
624 | recip = sk_X509_value(certs, i); | - | ||||||||||||||||||||||||
625 | if (!CMS_add1_recipient_cert(cms, recip, flags)
| 0-1 | ||||||||||||||||||||||||
626 | ERR_put_error(46,(119),(137),__FILE__,558); | - | ||||||||||||||||||||||||
627 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
628 | } | - | ||||||||||||||||||||||||
629 | } executed 1 time by 1 test: end of block Executed by:
| 1 | ||||||||||||||||||||||||
630 | - | |||||||||||||||||||||||||
631 | if (!(flags & 0x40)
| 0-20 | ||||||||||||||||||||||||
632 | CMS_set_detached(cms, 0); executed 20 times by 1 test: CMS_set_detached(cms, 0); Executed by:
| 20 | ||||||||||||||||||||||||
633 | - | |||||||||||||||||||||||||
634 | if ((
| 1-19 | ||||||||||||||||||||||||
635 | || CMS_final(cms, data,
| 0-1 | ||||||||||||||||||||||||
636 | ((void *)0)
| 0-1 | ||||||||||||||||||||||||
637 | , flags)
| 0-1 | ||||||||||||||||||||||||
638 | return executed 20 times by 1 test: cms;return cms; Executed by:
executed 20 times by 1 test: return cms; Executed by:
| 20 | ||||||||||||||||||||||||
639 | else | - | ||||||||||||||||||||||||
640 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
641 | - | |||||||||||||||||||||||||
642 | merr: | - | ||||||||||||||||||||||||
643 | ERR_put_error(46,(119),((1|64)),__FILE__,573); | - | ||||||||||||||||||||||||
644 | err: code before this statement never executed: err: | 0 | ||||||||||||||||||||||||
645 | CMS_ContentInfo_free(cms); | - | ||||||||||||||||||||||||
646 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
647 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
648 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
649 | } | - | ||||||||||||||||||||||||
650 | - | |||||||||||||||||||||||||
651 | static int cms_kari_set1_pkey(CMS_ContentInfo *cms, CMS_RecipientInfo *ri, | - | ||||||||||||||||||||||||
652 | EVP_PKEY *pk, X509 *cert) | - | ||||||||||||||||||||||||
653 | { | - | ||||||||||||||||||||||||
654 | int i; | - | ||||||||||||||||||||||||
655 | struct stack_st_CMS_RecipientEncryptedKey *reks; | - | ||||||||||||||||||||||||
656 | CMS_RecipientEncryptedKey *rek; | - | ||||||||||||||||||||||||
657 | reks = CMS_RecipientInfo_kari_get0_reks(ri); | - | ||||||||||||||||||||||||
658 | for (i = 0; i < sk_CMS_RecipientEncryptedKey_num(reks)
| 0-6 | ||||||||||||||||||||||||
659 | int rv; | - | ||||||||||||||||||||||||
660 | rek = sk_CMS_RecipientEncryptedKey_value(reks, i); | - | ||||||||||||||||||||||||
661 | if (cert !=
| 1-5 | ||||||||||||||||||||||||
662 | ((void *)0)
| 1-5 | ||||||||||||||||||||||||
663 | && CMS_RecipientEncryptedKey_cert_cmp(rek, cert)
| 0-5 | ||||||||||||||||||||||||
664 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
665 | CMS_RecipientInfo_kari_set0_pkey(ri, pk); | - | ||||||||||||||||||||||||
666 | rv = CMS_RecipientInfo_kari_decrypt(cms, ri, rek); | - | ||||||||||||||||||||||||
667 | CMS_RecipientInfo_kari_set0_pkey(ri, | - | ||||||||||||||||||||||||
668 | ((void *)0) | - | ||||||||||||||||||||||||
669 | ); | - | ||||||||||||||||||||||||
670 | if (rv > 0
| 0-6 | ||||||||||||||||||||||||
671 | return executed 6 times by 1 test: 1;return 1; Executed by:
executed 6 times by 1 test: return 1; Executed by:
| 6 | ||||||||||||||||||||||||
672 | return never executed: cert == return cert == ((void *)0) ? 0 : -1;
never executed: return cert == ((void *)0) ? 0 : -1; | 0 | ||||||||||||||||||||||||
673 | ((void *)0)
never executed: return cert == ((void *)0) ? 0 : -1; | 0 | ||||||||||||||||||||||||
674 | ? 0 : -1; never executed: return cert == ((void *)0) ? 0 : -1; | 0 | ||||||||||||||||||||||||
675 | } | - | ||||||||||||||||||||||||
676 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
677 | } | - | ||||||||||||||||||||||||
678 | - | |||||||||||||||||||||||||
679 | int CMS_decrypt_set1_pkey(CMS_ContentInfo *cms, EVP_PKEY *pk, X509 *cert) | - | ||||||||||||||||||||||||
680 | { | - | ||||||||||||||||||||||||
681 | struct stack_st_CMS_RecipientInfo *ris; | - | ||||||||||||||||||||||||
682 | CMS_RecipientInfo *ri; | - | ||||||||||||||||||||||||
683 | int i, r, ri_type; | - | ||||||||||||||||||||||||
684 | int debug = 0, match_ri = 0; | - | ||||||||||||||||||||||||
685 | ris = CMS_get0_RecipientInfos(cms); | - | ||||||||||||||||||||||||
686 | if (ris
| 0-18 | ||||||||||||||||||||||||
687 | debug = cms->d.envelopedData->encryptedContentInfo->debug; executed 18 times by 1 test: debug = cms->d.envelopedData->encryptedContentInfo->debug; Executed by:
| 18 | ||||||||||||||||||||||||
688 | ri_type = cms_pkey_get_ri_type(pk); | - | ||||||||||||||||||||||||
689 | if (ri_type == -1
| 0-18 | ||||||||||||||||||||||||
690 | ERR_put_error(46,(114),(125),__FILE__,613) | - | ||||||||||||||||||||||||
691 | ; | - | ||||||||||||||||||||||||
692 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
693 | } | - | ||||||||||||||||||||||||
694 | - | |||||||||||||||||||||||||
695 | for (i = 0; i < sk_CMS_RecipientInfo_num(ris)
| 2-27 | ||||||||||||||||||||||||
696 | ri = sk_CMS_RecipientInfo_value(ris, i); | - | ||||||||||||||||||||||||
697 | if (CMS_RecipientInfo_type(ri) != ri_type
| 0-27 | ||||||||||||||||||||||||
698 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
699 | match_ri = 1; | - | ||||||||||||||||||||||||
700 | if (ri_type == 1
| 6-21 | ||||||||||||||||||||||||
701 | r = cms_kari_set1_pkey(cms, ri, pk, cert); | - | ||||||||||||||||||||||||
702 | if (r > 0
| 0-6 | ||||||||||||||||||||||||
703 | return executed 6 times by 1 test: 1;return 1; Executed by:
executed 6 times by 1 test: return 1; Executed by:
| 6 | ||||||||||||||||||||||||
704 | if (r < 0
| 0 | ||||||||||||||||||||||||
705 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
706 | } never executed: end of block | 0 | ||||||||||||||||||||||||
707 | - | |||||||||||||||||||||||||
708 | - | |||||||||||||||||||||||||
709 | - | |||||||||||||||||||||||||
710 | - | |||||||||||||||||||||||||
711 | else if (!cert
| 5-15 | ||||||||||||||||||||||||
712 | EVP_PKEY_up_ref(pk); | - | ||||||||||||||||||||||||
713 | CMS_RecipientInfo_set0_pkey(ri, pk); | - | ||||||||||||||||||||||||
714 | r = CMS_RecipientInfo_decrypt(cms, ri); | - | ||||||||||||||||||||||||
715 | CMS_RecipientInfo_set0_pkey(ri, | - | ||||||||||||||||||||||||
716 | ((void *)0) | - | ||||||||||||||||||||||||
717 | ); | - | ||||||||||||||||||||||||
718 | if (cert
| 6-10 | ||||||||||||||||||||||||
719 | - | |||||||||||||||||||||||||
720 | - | |||||||||||||||||||||||||
721 | - | |||||||||||||||||||||||||
722 | - | |||||||||||||||||||||||||
723 | if (!debug
| 0-10 | ||||||||||||||||||||||||
724 | ERR_clear_error(); | - | ||||||||||||||||||||||||
725 | return executed 10 times by 1 test: 1;return 1; Executed by:
executed 10 times by 1 test: return 1; Executed by:
| 10 | ||||||||||||||||||||||||
726 | } | - | ||||||||||||||||||||||||
727 | if (r > 0
| 0 | ||||||||||||||||||||||||
728 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
729 | ERR_put_error(46,(114),(112),__FILE__,649); | - | ||||||||||||||||||||||||
730 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
731 | } | - | ||||||||||||||||||||||||
732 | - | |||||||||||||||||||||||||
733 | - | |||||||||||||||||||||||||
734 | - | |||||||||||||||||||||||||
735 | - | |||||||||||||||||||||||||
736 | - | |||||||||||||||||||||||||
737 | else if (r > 0
| 0-4 | ||||||||||||||||||||||||
738 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
739 | } executed 6 times by 1 test: end of block Executed by:
| 6 | ||||||||||||||||||||||||
740 | } executed 11 times by 1 test: end of block Executed by:
| 11 | ||||||||||||||||||||||||
741 | - | |||||||||||||||||||||||||
742 | if (cert ==
| 0-2 | ||||||||||||||||||||||||
743 | ((void *)0)
| 0-2 | ||||||||||||||||||||||||
744 | && ri_type == 0
| 0-2 | ||||||||||||||||||||||||
745 | ERR_clear_error(); | - | ||||||||||||||||||||||||
746 | return executed 2 times by 1 test: 1;return 1; Executed by:
executed 2 times by 1 test: return 1; Executed by:
| 2 | ||||||||||||||||||||||||
747 | } | - | ||||||||||||||||||||||||
748 | - | |||||||||||||||||||||||||
749 | ERR_put_error(46,(114),(132),__FILE__,667); | - | ||||||||||||||||||||||||
750 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
751 | - | |||||||||||||||||||||||||
752 | } | - | ||||||||||||||||||||||||
753 | - | |||||||||||||||||||||||||
754 | int CMS_decrypt_set1_key(CMS_ContentInfo *cms, | - | ||||||||||||||||||||||||
755 | unsigned char *key, size_t keylen, | - | ||||||||||||||||||||||||
756 | const unsigned char *id, size_t idlen) | - | ||||||||||||||||||||||||
757 | { | - | ||||||||||||||||||||||||
758 | struct stack_st_CMS_RecipientInfo *ris; | - | ||||||||||||||||||||||||
759 | CMS_RecipientInfo *ri; | - | ||||||||||||||||||||||||
760 | int i, r; | - | ||||||||||||||||||||||||
761 | ris = CMS_get0_RecipientInfos(cms); | - | ||||||||||||||||||||||||
762 | for (i = 0; i < sk_CMS_RecipientInfo_num(ris)
| 0-2 | ||||||||||||||||||||||||
763 | ri = sk_CMS_RecipientInfo_value(ris, i); | - | ||||||||||||||||||||||||
764 | if (CMS_RecipientInfo_type(ri) != 2
| 0-2 | ||||||||||||||||||||||||
765 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
766 | - | |||||||||||||||||||||||||
767 | - | |||||||||||||||||||||||||
768 | - | |||||||||||||||||||||||||
769 | - | |||||||||||||||||||||||||
770 | - | |||||||||||||||||||||||||
771 | if (!id
| 0-1 | ||||||||||||||||||||||||
772 | CMS_RecipientInfo_set0_key(ri, key, keylen); | - | ||||||||||||||||||||||||
773 | r = CMS_RecipientInfo_decrypt(cms, ri); | - | ||||||||||||||||||||||||
774 | CMS_RecipientInfo_set0_key(ri, | - | ||||||||||||||||||||||||
775 | ((void *)0) | - | ||||||||||||||||||||||||
776 | , 0); | - | ||||||||||||||||||||||||
777 | if (r > 0
| 0-2 | ||||||||||||||||||||||||
778 | return executed 2 times by 1 test: 1;return 1; Executed by:
executed 2 times by 1 test: return 1; Executed by:
| 2 | ||||||||||||||||||||||||
779 | if (id
| 0 | ||||||||||||||||||||||||
780 | ERR_put_error(46,(113),(112),__FILE__,696); | - | ||||||||||||||||||||||||
781 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
782 | } | - | ||||||||||||||||||||||||
783 | ERR_clear_error(); | - | ||||||||||||||||||||||||
784 | } never executed: end of block | 0 | ||||||||||||||||||||||||
785 | } never executed: end of block | 0 | ||||||||||||||||||||||||
786 | - | |||||||||||||||||||||||||
787 | ERR_put_error(46,(113),(132),__FILE__,703); | - | ||||||||||||||||||||||||
788 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
789 | - | |||||||||||||||||||||||||
790 | } | - | ||||||||||||||||||||||||
791 | - | |||||||||||||||||||||||||
792 | int CMS_decrypt_set1_password(CMS_ContentInfo *cms, | - | ||||||||||||||||||||||||
793 | unsigned char *pass, ssize_t passlen) | - | ||||||||||||||||||||||||
794 | { | - | ||||||||||||||||||||||||
795 | struct stack_st_CMS_RecipientInfo *ris; | - | ||||||||||||||||||||||||
796 | CMS_RecipientInfo *ri; | - | ||||||||||||||||||||||||
797 | int i, r; | - | ||||||||||||||||||||||||
798 | ris = CMS_get0_RecipientInfos(cms); | - | ||||||||||||||||||||||||
799 | for (i = 0; i < sk_CMS_RecipientInfo_num(ris)
| 0 | ||||||||||||||||||||||||
800 | ri = sk_CMS_RecipientInfo_value(ris, i); | - | ||||||||||||||||||||||||
801 | if (CMS_RecipientInfo_type(ri) != 3
| 0 | ||||||||||||||||||||||||
802 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
803 | CMS_RecipientInfo_set0_password(ri, pass, passlen); | - | ||||||||||||||||||||||||
804 | r = CMS_RecipientInfo_decrypt(cms, ri); | - | ||||||||||||||||||||||||
805 | CMS_RecipientInfo_set0_password(ri, | - | ||||||||||||||||||||||||
806 | ((void *)0) | - | ||||||||||||||||||||||||
807 | , 0); | - | ||||||||||||||||||||||||
808 | if (r > 0
| 0 | ||||||||||||||||||||||||
809 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
810 | } never executed: end of block | 0 | ||||||||||||||||||||||||
811 | - | |||||||||||||||||||||||||
812 | ERR_put_error(46,(166),(132),__FILE__,726); | - | ||||||||||||||||||||||||
813 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
814 | - | |||||||||||||||||||||||||
815 | } | - | ||||||||||||||||||||||||
816 | - | |||||||||||||||||||||||||
817 | int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pk, X509 *cert, | - | ||||||||||||||||||||||||
818 | BIO *dcont, BIO *out, unsigned int flags) | - | ||||||||||||||||||||||||
819 | { | - | ||||||||||||||||||||||||
820 | int r; | - | ||||||||||||||||||||||||
821 | BIO *cont; | - | ||||||||||||||||||||||||
822 | if (OBJ_obj2nid(CMS_get0_type(cms)) != 23
| 0-20 | ||||||||||||||||||||||||
823 | ERR_put_error(46,(112),(146),__FILE__,737); | - | ||||||||||||||||||||||||
824 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
825 | } | - | ||||||||||||||||||||||||
826 | if (!dcont
| 0-20 | ||||||||||||||||||||||||
827 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
828 | if (flags & 0x20000
| 0-20 | ||||||||||||||||||||||||
829 | cms->d.envelopedData->encryptedContentInfo->debug = 1; never executed: cms->d.envelopedData->encryptedContentInfo->debug = 1; | 0 | ||||||||||||||||||||||||
830 | else | - | ||||||||||||||||||||||||
831 | cms->d.envelopedData->encryptedContentInfo->debug = 0; executed 20 times by 1 test: cms->d.envelopedData->encryptedContentInfo->debug = 0; Executed by:
| 20 | ||||||||||||||||||||||||
832 | if (!pk
| 0-19 | ||||||||||||||||||||||||
833 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
834 | if (pk
| 0-19 | ||||||||||||||||||||||||
835 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
836 | cont = CMS_dataInit(cms, dcont); | - | ||||||||||||||||||||||||
837 | if (!cont
| 0-20 | ||||||||||||||||||||||||
838 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
839 | r = cms_copy_content(out, cont, flags); | - | ||||||||||||||||||||||||
840 | do_free_upto(cont, dcont); | - | ||||||||||||||||||||||||
841 | return executed 20 times by 1 test: r;return r; Executed by:
executed 20 times by 1 test: return r; Executed by:
| 20 | ||||||||||||||||||||||||
842 | } | - | ||||||||||||||||||||||||
843 | - | |||||||||||||||||||||||||
844 | int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags) | - | ||||||||||||||||||||||||
845 | { | - | ||||||||||||||||||||||||
846 | BIO *cmsbio; | - | ||||||||||||||||||||||||
847 | int ret = 0; | - | ||||||||||||||||||||||||
848 | - | |||||||||||||||||||||||||
849 | if ((
| 0-14 | ||||||||||||||||||||||||
850 | ((void *)0)
| 0-14 | ||||||||||||||||||||||||
851 | ) { | - | ||||||||||||||||||||||||
852 | ERR_put_error(46,(127),(104),__FILE__,764); | - | ||||||||||||||||||||||||
853 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
854 | } | - | ||||||||||||||||||||||||
855 | - | |||||||||||||||||||||||||
856 | SMIME_crlf_copy(data, cmsbio, flags); | - | ||||||||||||||||||||||||
857 | - | |||||||||||||||||||||||||
858 | (void)(int)BIO_ctrl(cmsbio,11,0, | - | ||||||||||||||||||||||||
859 | ((void *)0) | - | ||||||||||||||||||||||||
860 | ); | - | ||||||||||||||||||||||||
861 | - | |||||||||||||||||||||||||
862 | if (!CMS_dataFinal(cms, cmsbio)
| 0-14 | ||||||||||||||||||||||||
863 | ERR_put_error(46,(127),(103),__FILE__,773); | - | ||||||||||||||||||||||||
864 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
865 | } | - | ||||||||||||||||||||||||
866 | - | |||||||||||||||||||||||||
867 | ret = 1; | - | ||||||||||||||||||||||||
868 | - | |||||||||||||||||||||||||
869 | err: code before this statement executed 14 times by 1 test: err: Executed by:
| 14 | ||||||||||||||||||||||||
870 | do_free_upto(cmsbio, dcont); | - | ||||||||||||||||||||||||
871 | - | |||||||||||||||||||||||||
872 | return executed 14 times by 1 test: ret;return ret; Executed by:
executed 14 times by 1 test: return ret; Executed by:
| 14 | ||||||||||||||||||||||||
873 | - | |||||||||||||||||||||||||
874 | } | - | ||||||||||||||||||||||||
875 | int CMS_uncompress(CMS_ContentInfo *cms, BIO *dcont, BIO *out, | - | ||||||||||||||||||||||||
876 | unsigned int flags) | - | ||||||||||||||||||||||||
877 | { | - | ||||||||||||||||||||||||
878 | ERR_put_error(46,(156),(151),__FILE__,833); | - | ||||||||||||||||||||||||
879 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
880 | } | - | ||||||||||||||||||||||||
881 | - | |||||||||||||||||||||||||
882 | CMS_ContentInfo *CMS_compress(BIO *in, int comp_nid, unsigned int flags) | - | ||||||||||||||||||||||||
883 | { | - | ||||||||||||||||||||||||
884 | ERR_put_error(46,(104),(151),__FILE__,839); | - | ||||||||||||||||||||||||
885 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
886 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
887 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
888 | } | - | ||||||||||||||||||||||||
Switch to Source code | Preprocessed file |