OpenCoverage

ocsp_ht.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/ocsp/ocsp_ht.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8-
9struct ocsp_req_ctx_st {-
10 int state;-
11 unsigned char *iobuf;-
12 int iobuflen;-
13 BIO *io;-
14 BIO *mem;-
15 unsigned long asn1_len;-
16 unsigned long max_resp_len;-
17};-
18static int parse_http_line1(char *line);-
19-
20OCSP_REQ_CTX *OCSP_REQ_CTX_new(BIO *io, int maxline)-
21{-
22 OCSP_REQ_CTX *rctx = CRYPTO_zalloc(sizeof(*rctx), __FILE__, 66);-
23-
24 if (rctx ==
rctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
25 ((void *)0)
rctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
26 )-
27 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
28 ((void *)0)
never executed: return ((void *)0) ;
0
29 ;
never executed: return ((void *)0) ;
0
30 rctx->state = (0 | 0x1000);-
31 rctx->max_resp_len = (100 * 1024);-
32 rctx->mem = BIO_new(BIO_s_mem());-
33 rctx->io = io;-
34 if (maxline > 0
maxline > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
35 rctx->iobuflen = maxline;
never executed: rctx->iobuflen = maxline;
0
36 else-
37 rctx->iobuflen = 4096;
never executed: rctx->iobuflen = 4096;
;
0
38 rctx->iobuf = CRYPTO_malloc(rctx->iobuflen, __FILE__, 78);-
39 if (rctx->iobuf ==
rctx->iobuf == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
40 ((void *)0)
rctx->iobuf == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
41 || rctx->mem ==
rctx->mem == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
42 ((void *)0)
rctx->mem == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
43 ) {-
44 OCSP_REQ_CTX_free(rctx);-
45 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
46 ((void *)0)
never executed: return ((void *)0) ;
0
47 ;
never executed: return ((void *)0) ;
0
48 }-
49 return
never executed: return rctx;
rctx;
never executed: return rctx;
0
50}-
51-
52void OCSP_REQ_CTX_free(OCSP_REQ_CTX *rctx)-
53{-
54 if (!rctx
!rctxDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
55 return;
never executed: return;
0
56 BIO_free(rctx->mem);-
57 CRYPTO_free(rctx->iobuf, __FILE__, 91);-
58 CRYPTO_free(rctx, __FILE__, 92);-
59}
never executed: end of block
0
60-
61BIO *OCSP_REQ_CTX_get0_mem_bio(OCSP_REQ_CTX *rctx)-
62{-
63 return
never executed: return rctx->mem;
rctx->mem;
never executed: return rctx->mem;
0
64}-
65-
66void OCSP_set_max_response_length(OCSP_REQ_CTX *rctx, unsigned long len)-
67{-
68 if (len == 0
len == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
69 rctx->max_resp_len = (100 * 1024);
never executed: rctx->max_resp_len = (100 * 1024);
0
70 else-
71 rctx->max_resp_len = len;
never executed: rctx->max_resp_len = len;
0
72}-
73-
74int OCSP_REQ_CTX_i2d(OCSP_REQ_CTX *rctx, const ASN1_ITEM *it, ASN1_VALUE *val)-
75{-
76 static const char req_hdr[] =-
77 "Content-Type: application/ocsp-request\r\n"-
78 "Content-Length: %d\r\n\r\n";-
79 int reqlen = ASN1_item_i2d(val, -
80 ((void *)0)-
81 , it);-
82 if (BIO_printf(rctx->mem, req_hdr, reqlen) <= 0
BIO_printf(rct..., reqlen) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
83 return
never executed: return 0;
0;
never executed: return 0;
0
84 if (ASN1_item_i2d_bio(it, rctx->mem, val) <= 0
ASN1_item_i2d_...mem, val) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
85 return
never executed: return 0;
0;
never executed: return 0;
0
86 rctx->state = (5 | 0x1000);-
87 return
never executed: return 1;
1;
never executed: return 1;
0
88}-
89-
90int OCSP_REQ_CTX_nbio_d2i(OCSP_REQ_CTX *rctx,-
91 ASN1_VALUE **pval, const ASN1_ITEM *it)-
92{-
93 int rv, len;-
94 const unsigned char *p;-
95-
96 rv = OCSP_REQ_CTX_nbio(rctx);-
97 if (rv != 1
rv != 1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
98 return
never executed: return rv;
rv;
never executed: return rv;
0
99-
100 len = BIO_ctrl(rctx->mem,3,0,(char *)(&p));-
101 *pval = ASN1_item_d2i(-
102 ((void *)0)-
103 , &p, len, it);-
104 if (*
*pval == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
pval ==
*pval == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
105 ((void *)0)
*pval == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
106 ) {-
107 rctx->state = (0 | 0x1000);-
108 return
never executed: return 0;
0;
never executed: return 0;
0
109 }-
110 return
never executed: return 1;
1;
never executed: return 1;
0
111}-
112-
113int OCSP_REQ_CTX_http(OCSP_REQ_CTX *rctx, const char *op, const char *path)-
114{-
115 static const char http_hdr[] = "%s %s HTTP/1.0\r\n";-
116-
117 if (!path
!pathDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
118 path = "/";
never executed: path = "/";
0
119-
120 if (BIO_printf(rctx->mem, http_hdr, op, path) <= 0
BIO_printf(rct...op, path) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
121 return
never executed: return 0;
0;
never executed: return 0;
0
122 rctx->state = (9 | 0x1000);-
123 return
never executed: return 1;
1;
never executed: return 1;
0
124}-
125-
126int OCSP_REQ_CTX_set1_req(OCSP_REQ_CTX *rctx, OCSP_REQUEST *req)-
127{-
128 return
never executed: return OCSP_REQ_CTX_i2d(rctx, (&(OCSP_REQUEST_it)), (ASN1_VALUE *)req);
OCSP_REQ_CTX_i2d(rctx, (&(OCSP_REQUEST_it)),
never executed: return OCSP_REQ_CTX_i2d(rctx, (&(OCSP_REQUEST_it)), (ASN1_VALUE *)req);
0
129 (ASN1_VALUE *)req);
never executed: return OCSP_REQ_CTX_i2d(rctx, (&(OCSP_REQUEST_it)), (ASN1_VALUE *)req);
0
130}-
131-
132int OCSP_REQ_CTX_add1_header(OCSP_REQ_CTX *rctx,-
133 const char *name, const char *value)-
134{-
135 if (!name
!nameDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
136 return
never executed: return 0;
0;
never executed: return 0;
0
137 if (BIO_puts(rctx->mem, name) <= 0
BIO_puts(rctx->mem, name) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
138 return
never executed: return 0;
0;
never executed: return 0;
0
139 if (value
valueDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
140 if (BIO_write(rctx->mem, ": ", 2) != 2
BIO_write(rctx... ": ", 2) != 2Description
TRUEnever evaluated
FALSEnever evaluated
)
0
141 return
never executed: return 0;
0;
never executed: return 0;
0
142 if (BIO_puts(rctx->mem, value) <= 0
BIO_puts(rctx-...m, value) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
143 return
never executed: return 0;
0;
never executed: return 0;
0
144 }
never executed: end of block
0
145 if (BIO_write(rctx->mem, "\r\n", 2) != 2
BIO_write(rctx...\r\n", 2) != 2Description
TRUEnever evaluated
FALSEnever evaluated
)
0
146 return
never executed: return 0;
0;
never executed: return 0;
0
147 rctx->state = (9 | 0x1000);-
148 return
never executed: return 1;
1;
never executed: return 1;
0
149}-
150-
151OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path, OCSP_REQUEST *req,-
152 int maxline)-
153{-
154-
155 OCSP_REQ_CTX *rctx = -
156 ((void *)0)-
157 ;-
158 rctx = OCSP_REQ_CTX_new(io, maxline);-
159 if (rctx ==
rctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
160 ((void *)0)
rctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
161 )-
162 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
163 ((void *)0)
never executed: return ((void *)0) ;
0
164 ;
never executed: return ((void *)0) ;
0
165-
166 if (!OCSP_REQ_CTX_http(rctx, "POST", path)
!OCSP_REQ_CTX_... "POST", path)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
167 goto
never executed: goto err;
err;
never executed: goto err;
0
168-
169 if (req
reqDescription
TRUEnever evaluated
FALSEnever evaluated
&& !OCSP_REQ_CTX_set1_req(rctx, req)
!OCSP_REQ_CTX_...req(rctx, req)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
170 goto
never executed: goto err;
err;
never executed: goto err;
0
171-
172 return
never executed: return rctx;
rctx;
never executed: return rctx;
0
173-
174 err:-
175 OCSP_REQ_CTX_free(rctx);-
176 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
177 ((void *)0)
never executed: return ((void *)0) ;
0
178 ;
never executed: return ((void *)0) ;
0
179}-
180-
181-
182-
183-
184-
185-
186static int parse_http_line1(char *line)-
187{-
188 int retcode;-
189 char *p, *q, *r;-
190-
191-
192 for (p = line; *
*pDescription
TRUEnever evaluated
FALSEnever evaluated
p
*pDescription
TRUEnever evaluated
FALSEnever evaluated
&& !(ossl_ctype_check((*p), 0x8))
!(ossl_ctype_check((*p), 0x8))Description
TRUEnever evaluated
FALSEnever evaluated
; p++)
0
193 continue;
never executed: continue;
0
194 if (!*p
!*pDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
195 ERR_put_error(39,(118),(115),__FILE__,215);-
196 return
never executed: return 0;
0;
never executed: return 0;
0
197 }-
198-
199-
200 while (*
*pDescription
TRUEnever evaluated
FALSEnever evaluated
p
*pDescription
TRUEnever evaluated
FALSEnever evaluated
&& (
(ossl_ctype_check((*p), 0x8))Description
TRUEnever evaluated
FALSEnever evaluated
ossl_ctype_check((*p), 0x8))
(ossl_ctype_check((*p), 0x8))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
201 p++;
never executed: p++;
0
202-
203 if (!*p
!*pDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
204 ERR_put_error(39,(118),(115),__FILE__,224);-
205 return
never executed: return 0;
0;
never executed: return 0;
0
206 }-
207-
208-
209 for (q = p; *
*qDescription
TRUEnever evaluated
FALSEnever evaluated
q
*qDescription
TRUEnever evaluated
FALSEnever evaluated
&& !(ossl_ctype_check((*q), 0x8))
!(ossl_ctype_check((*q), 0x8))Description
TRUEnever evaluated
FALSEnever evaluated
; q++)
0
210 continue;
never executed: continue;
0
211-
212 if (!*q
!*qDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
213 ERR_put_error(39,(118),(115),__FILE__,233);-
214 return
never executed: return 0;
0;
never executed: return 0;
0
215 }-
216-
217-
218 *q++ = 0;-
219-
220-
221 retcode = strtoul(p, &r, 10);-
222-
223 if (*
*rDescription
TRUEnever evaluated
FALSEnever evaluated
r
*rDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
224 return
never executed: return 0;
0;
never executed: return 0;
0
225-
226-
227 while (*
*qDescription
TRUEnever evaluated
FALSEnever evaluated
q
*qDescription
TRUEnever evaluated
FALSEnever evaluated
&& (
(ossl_ctype_check((*q), 0x8))Description
TRUEnever evaluated
FALSEnever evaluated
ossl_ctype_check((*q), 0x8))
(ossl_ctype_check((*q), 0x8))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
228 q++;
never executed: q++;
0
229-
230 if (*
*qDescription
TRUEnever evaluated
FALSEnever evaluated
q
*qDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
231-
232-
233-
234-
235-
236 for (r = q + strlen(q) - 1; (
(ossl_ctype_check((*r), 0x8))Description
TRUEnever evaluated
FALSEnever evaluated
ossl_ctype_check((*r), 0x8))
(ossl_ctype_check((*r), 0x8))Description
TRUEnever evaluated
FALSEnever evaluated
; r--)
0
237 *
never executed: *r = 0;
r = 0;
never executed: *r = 0;
0
238 }
never executed: end of block
0
239 if (retcode != 200
retcode != 200Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
240 ERR_put_error(39,(118),(114),__FILE__,260);-
241 if (!*q
!*qDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
242 ERR_add_error_data(2, "Code=", p);
never executed: ERR_add_error_data(2, "Code=", p);
0
243 else-
244 ERR_add_error_data(4, "Code=", p, ",Reason=", q);
never executed: ERR_add_error_data(4, "Code=", p, ",Reason=", q);
0
245 return
never executed: return 0;
0;
never executed: return 0;
0
246 }-
247-
248 return
never executed: return 1;
1;
never executed: return 1;
0
249-
250}-
251-
252int OCSP_REQ_CTX_nbio(OCSP_REQ_CTX *rctx)-
253{-
254 int i, n;-
255 const unsigned char *p;-
256 next_io:
code before this statement never executed: next_io:
0
257 if (!(rctx->state & 0x1000)
!(rctx->state & 0x1000)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
258 n = BIO_read(rctx->io, rctx->iobuf, rctx->iobuflen);-
259-
260 if (n <= 0
n <= 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
261 if (BIO_test_flags(rctx->io, 0x08)
BIO_test_flags(rctx->io, 0x08)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
262 return
never executed: return -1;
-1;
never executed: return -1;
0
263 return
never executed: return 0;
0;
never executed: return 0;
0
264 }-
265-
266-
267-
268 if (BIO_write(rctx->mem, rctx->iobuf, n) != n
BIO_write(rctx...iobuf, n) != nDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
269 return
never executed: return 0;
0;
never executed: return 0;
0
270 }
never executed: end of block
0
271-
272 switch (rctx->state) {-
273 case
never executed: case (9 | 0x1000):
(9 | 0x1000):
never executed: case (9 | 0x1000):
0
274-
275 if (BIO_write(rctx->mem, "\r\n", 2) != 2
BIO_write(rctx...\r\n", 2) != 2Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
276 rctx->state = (0 | 0x1000);-
277 return
never executed: return 0;
0;
never executed: return 0;
0
278 }-
279 rctx->state = (5 | 0x1000);-
280-
281-
282 case
never executed: case (5 | 0x1000):
(5 | 0x1000):
never executed: case (5 | 0x1000):
code before this statement never executed: case (5 | 0x1000):
0
283 rctx->asn1_len = BIO_ctrl(rctx->mem,3,0,(char *)(-
284 ((void *)0)-
285 ));-
286 rctx->state = (6 | 0x1000);-
287-
288-
289 case
never executed: case (6 | 0x1000):
(6 | 0x1000):
never executed: case (6 | 0x1000):
code before this statement never executed: case (6 | 0x1000):
0
290 n = BIO_ctrl(rctx->mem,3,0,(char *)(&p));-
291-
292 i = BIO_write(rctx->io, p + (n - rctx->asn1_len), rctx->asn1_len);-
293-
294 if (i <= 0
i <= 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
295 if (BIO_test_flags(rctx->io, 0x08)
BIO_test_flags(rctx->io, 0x08)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
296 return
never executed: return -1;
-1;
never executed: return -1;
0
297 rctx->state = (0 | 0x1000);-
298 return
never executed: return 0;
0;
never executed: return 0;
0
299 }-
300-
301 rctx->asn1_len -= i;-
302-
303 if (rctx->asn1_len > 0
rctx->asn1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
304 goto
never executed: goto next_io;
next_io;
never executed: goto next_io;
0
305-
306 rctx->state = (7 | 0x1000);-
307-
308 (void)(int)BIO_ctrl(rctx->mem,1,0,-
309 ((void *)0)-
310 );-
311-
312-
313 case
never executed: case (7 | 0x1000):
(7 | 0x1000):
never executed: case (7 | 0x1000):
code before this statement never executed: case (7 | 0x1000):
0
314-
315 i = (int)BIO_ctrl(rctx->io,11,0,-
316 ((void *)0)-
317 );-
318-
319 if (i > 0
i > 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
320 rctx->state = 1;-
321 goto
never executed: goto next_io;
next_io;
never executed: goto next_io;
0
322 }-
323-
324 if (BIO_test_flags(rctx->io, 0x08)
BIO_test_flags(rctx->io, 0x08)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
325 return
never executed: return -1;
-1;
never executed: return -1;
0
326-
327 rctx->state = (0 | 0x1000);-
328 return
never executed: return 0;
0;
never executed: return 0;
0
329-
330 case
never executed: case (0 | 0x1000):
(0 | 0x1000):
never executed: case (0 | 0x1000):
0
331 return
never executed: return 0;
0;
never executed: return 0;
0
332-
333 case
never executed: case 1:
1:
never executed: case 1:
0
334 case
never executed: case 2:
2:
never executed: case 2:
0
335-
336-
337-
338 next_line:-
339-
340-
341-
342-
343-
344 n = BIO_ctrl(rctx->mem,3,0,(char *)(&p));-
345 if ((
(n <= 0)Description
TRUEnever evaluated
FALSEnever evaluated
n <= 0)
(n <= 0)Description
TRUEnever evaluated
FALSEnever evaluated
|| !memchr(p, '\n', n)
!memchr(p, '\n', n)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
346 if (n >= rctx->iobuflen
n >= rctx->iobuflenDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
347 rctx->state = (0 | 0x1000);-
348 return
never executed: return 0;
0;
never executed: return 0;
0
349 }-
350 goto
never executed: goto next_io;
next_io;
never executed: goto next_io;
0
351 }-
352 n = BIO_gets(rctx->mem, (char *)rctx->iobuf, rctx->iobuflen);-
353-
354 if (n <= 0
n <= 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
355 if (BIO_test_flags(rctx->mem, 0x08)
BIO_test_flags...tx->mem, 0x08)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
356 goto
never executed: goto next_io;
next_io;
never executed: goto next_io;
0
357 rctx->state = (0 | 0x1000);-
358 return
never executed: return 0;
0;
never executed: return 0;
0
359 }-
360-
361-
362 if (n == rctx->iobuflen
n == rctx->iobuflenDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
363 rctx->state = (0 | 0x1000);-
364 return
never executed: return 0;
0;
never executed: return 0;
0
365 }-
366-
367-
368 if (rctx->state == 1
rctx->state == 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
369 if (parse_http_line1((char *)rctx->iobuf)
parse_http_lin...*)rctx->iobuf)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
370 rctx->state = 2;-
371 goto
never executed: goto next_line;
next_line;
never executed: goto next_line;
0
372 } else {-
373 rctx->state = (0 | 0x1000);-
374 return
never executed: return 0;
0;
never executed: return 0;
0
375 }-
376 } else {-
377-
378 for (p = rctx->iobuf; *
*pDescription
TRUEnever evaluated
FALSEnever evaluated
p
*pDescription
TRUEnever evaluated
FALSEnever evaluated
; p++) {
0
379 if ((*
(*p != '\r')Description
TRUEnever evaluated
FALSEnever evaluated
p != '\r')
(*p != '\r')Description
TRUEnever evaluated
FALSEnever evaluated
&& (*
(*p != '\n')Description
TRUEnever evaluated
FALSEnever evaluated
p != '\n')
(*p != '\n')Description
TRUEnever evaluated
FALSEnever evaluated
)
0
380 break;
never executed: break;
0
381 }
never executed: end of block
0
382 if (*
*pDescription
TRUEnever evaluated
FALSEnever evaluated
p
*pDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
383 goto
never executed: goto next_line;
next_line;
never executed: goto next_line;
0
384-
385 rctx->state = 3;-
386-
387 }
never executed: end of block
0
388-
389-
390-
391 case
never executed: case 3:
3:
never executed: case 3:
code before this statement never executed: case 3:
0
392-
393-
394-
395-
396-
397 n = BIO_ctrl(rctx->mem,3,0,(char *)(&p));-
398 if (n < 2
n < 2Description
TRUEnever evaluated
FALSEnever evaluated
)
0
399 goto
never executed: goto next_io;
next_io;
never executed: goto next_io;
0
400-
401-
402 if (*
*p++ != (16 | 0x20)Description
TRUEnever evaluated
FALSEnever evaluated
p++ != (16 | 0x20)
*p++ != (16 | 0x20)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
403 rctx->state = (0 | 0x1000);-
404 return
never executed: return 0;
0;
never executed: return 0;
0
405 }-
406-
407-
408 if (*
*p & 0x80Description
TRUEnever evaluated
FALSEnever evaluated
p & 0x80
*p & 0x80Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
409-
410-
411-
412-
413 if (n < 6
n < 6Description
TRUEnever evaluated
FALSEnever evaluated
)
0
414 goto
never executed: goto next_io;
next_io;
never executed: goto next_io;
0
415 n = *p & 0x7F;-
416-
417 if (!n
!nDescription
TRUEnever evaluated
FALSEnever evaluated
|| (
(n > 4)Description
TRUEnever evaluated
FALSEnever evaluated
n > 4)
(n > 4)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
418 rctx->state = (0 | 0x1000);-
419 return
never executed: return 0;
0;
never executed: return 0;
0
420 }-
421 p++;-
422 rctx->asn1_len = 0;-
423 for (i = 0; i < n
i < nDescription
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
424 rctx->asn1_len <<= 8;-
425 rctx->asn1_len |= *p++;-
426 }
never executed: end of block
0
427-
428 if (rctx->asn1_len > rctx->max_resp_len
rctx->asn1_len...->max_resp_lenDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
429 rctx->state = (0 | 0x1000);-
430 return
never executed: return 0;
0;
never executed: return 0;
0
431 }-
432-
433 rctx->asn1_len += n + 2;-
434 }
never executed: end of block
else
0
435 rctx->asn1_len = *p + 2;
never executed: rctx->asn1_len = *p + 2;
0
436-
437 rctx->state = 4;-
438-
439-
440-
441 case
never executed: case 4:
4:
never executed: case 4:
code before this statement never executed: case 4:
0
442 n = BIO_ctrl(rctx->mem,3,0,(char *)(-
443 ((void *)0)-
444 ));-
445 if (n < (int)rctx->asn1_len
n < (int)rctx->asn1_lenDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
446 goto
never executed: goto next_io;
next_io;
never executed: goto next_io;
0
447-
448 rctx->state = (8 | 0x1000);-
449 return
never executed: return 1;
1;
never executed: return 1;
0
450-
451 case
never executed: case (8 | 0x1000):
(8 | 0x1000):
never executed: case (8 | 0x1000):
0
452 return
never executed: return 1;
1;
never executed: return 1;
0
453-
454 }-
455-
456 return
never executed: return 0;
0;
never executed: return 0;
0
457-
458}-
459-
460int OCSP_sendreq_nbio(OCSP_RESPONSE **presp, OCSP_REQ_CTX *rctx)-
461{-
462 return
never executed: return OCSP_REQ_CTX_nbio_d2i(rctx, (ASN1_VALUE **)presp, (&(OCSP_RESPONSE_it)));
OCSP_REQ_CTX_nbio_d2i(rctx,
never executed: return OCSP_REQ_CTX_nbio_d2i(rctx, (ASN1_VALUE **)presp, (&(OCSP_RESPONSE_it)));
0
463 (ASN1_VALUE **)presp,
never executed: return OCSP_REQ_CTX_nbio_d2i(rctx, (ASN1_VALUE **)presp, (&(OCSP_RESPONSE_it)));
0
464 (&(OCSP_RESPONSE_it)));
never executed: return OCSP_REQ_CTX_nbio_d2i(rctx, (ASN1_VALUE **)presp, (&(OCSP_RESPONSE_it)));
0
465}-
466-
467-
468-
469OCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, const char *path, OCSP_REQUEST *req)-
470{-
471 OCSP_RESPONSE *resp = -
472 ((void *)0)-
473 ;-
474 OCSP_REQ_CTX *ctx;-
475 int rv;-
476-
477 ctx = OCSP_sendreq_new(b, path, req, -1);-
478-
479 if (ctx ==
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
480 ((void *)0)
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
481 )-
482 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
483 ((void *)0)
never executed: return ((void *)0) ;
0
484 ;
never executed: return ((void *)0) ;
0
485-
486 do {-
487 rv = OCSP_sendreq_nbio(&resp, ctx);-
488 }
never executed: end of block
while ((
(rv == -1)Description
TRUEnever evaluated
FALSEnever evaluated
rv == -1)
(rv == -1)Description
TRUEnever evaluated
FALSEnever evaluated
&& BIO_test_flags(b, 0x08)
BIO_test_flags(b, 0x08)Description
TRUEnever evaluated
FALSEnever evaluated
);
0
489-
490 OCSP_REQ_CTX_free(ctx);-
491-
492 if (rv
rvDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
493 return
never executed: return resp;
resp;
never executed: return resp;
0
494-
495 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
496 ((void *)0)
never executed: return ((void *)0) ;
0
497 ;
never executed: return ((void *)0) ;
0
498}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2