Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/ocsp/ocsp_ht.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||||||||
2 | - | |||||||||||||||||||||||||
3 | - | |||||||||||||||||||||||||
4 | - | |||||||||||||||||||||||||
5 | - | |||||||||||||||||||||||||
6 | - | |||||||||||||||||||||||||
7 | - | |||||||||||||||||||||||||
8 | - | |||||||||||||||||||||||||
9 | struct 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 | }; | - | ||||||||||||||||||||||||
18 | static int parse_http_line1(char *line); | - | ||||||||||||||||||||||||
19 | - | |||||||||||||||||||||||||
20 | OCSP_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 ==
| 0 | ||||||||||||||||||||||||
25 | ((void *)0)
| 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
| 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 ==
| 0 | ||||||||||||||||||||||||
40 | ((void *)0)
| 0 | ||||||||||||||||||||||||
41 | || rctx->mem ==
| 0 | ||||||||||||||||||||||||
42 | ((void *)0)
| 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: rctx;return rctx; never executed: return rctx; | 0 | ||||||||||||||||||||||||
50 | } | - | ||||||||||||||||||||||||
51 | - | |||||||||||||||||||||||||
52 | void OCSP_REQ_CTX_free(OCSP_REQ_CTX *rctx) | - | ||||||||||||||||||||||||
53 | { | - | ||||||||||||||||||||||||
54 | if (!rctx
| 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 | - | |||||||||||||||||||||||||
61 | BIO *OCSP_REQ_CTX_get0_mem_bio(OCSP_REQ_CTX *rctx) | - | ||||||||||||||||||||||||
62 | { | - | ||||||||||||||||||||||||
63 | return never executed: rctx->mem;return rctx->mem; never executed: return rctx->mem; | 0 | ||||||||||||||||||||||||
64 | } | - | ||||||||||||||||||||||||
65 | - | |||||||||||||||||||||||||
66 | void OCSP_set_max_response_length(OCSP_REQ_CTX *rctx, unsigned long len) | - | ||||||||||||||||||||||||
67 | { | - | ||||||||||||||||||||||||
68 | if (len == 0
| 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 | - | |||||||||||||||||||||||||
74 | int 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
| 0 | ||||||||||||||||||||||||
83 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
84 | if (ASN1_item_i2d_bio(it, rctx->mem, val) <= 0
| 0 | ||||||||||||||||||||||||
85 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
86 | rctx->state = (5 | 0x1000); | - | ||||||||||||||||||||||||
87 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
88 | } | - | ||||||||||||||||||||||||
89 | - | |||||||||||||||||||||||||
90 | int 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
| 0 | ||||||||||||||||||||||||
98 | return never executed: rv;return 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 (*
| 0 | ||||||||||||||||||||||||
105 | ((void *)0)
| 0 | ||||||||||||||||||||||||
106 | ) { | - | ||||||||||||||||||||||||
107 | rctx->state = (0 | 0x1000); | - | ||||||||||||||||||||||||
108 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
109 | } | - | ||||||||||||||||||||||||
110 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
111 | } | - | ||||||||||||||||||||||||
112 | - | |||||||||||||||||||||||||
113 | int 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
| 0 | ||||||||||||||||||||||||
118 | path = "/"; never executed: path = "/"; | 0 | ||||||||||||||||||||||||
119 | - | |||||||||||||||||||||||||
120 | if (BIO_printf(rctx->mem, http_hdr, op, path) <= 0
| 0 | ||||||||||||||||||||||||
121 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
122 | rctx->state = (9 | 0x1000); | - | ||||||||||||||||||||||||
123 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
124 | } | - | ||||||||||||||||||||||||
125 | - | |||||||||||||||||||||||||
126 | int OCSP_REQ_CTX_set1_req(OCSP_REQ_CTX *rctx, OCSP_REQUEST *req) | - | ||||||||||||||||||||||||
127 | { | - | ||||||||||||||||||||||||
128 | return never executed: OCSP_REQ_CTX_i2d(rctx, (&(OCSP_REQUEST_it)),return OCSP_REQ_CTX_i2d(rctx, (&(OCSP_REQUEST_it)), (ASN1_VALUE *)req); 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 | - | |||||||||||||||||||||||||
132 | int OCSP_REQ_CTX_add1_header(OCSP_REQ_CTX *rctx, | - | ||||||||||||||||||||||||
133 | const char *name, const char *value) | - | ||||||||||||||||||||||||
134 | { | - | ||||||||||||||||||||||||
135 | if (!name
| 0 | ||||||||||||||||||||||||
136 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
137 | if (BIO_puts(rctx->mem, name) <= 0
| 0 | ||||||||||||||||||||||||
138 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
139 | if (value
| 0 | ||||||||||||||||||||||||
140 | if (BIO_write(rctx->mem, ": ", 2) != 2
| 0 | ||||||||||||||||||||||||
141 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
142 | if (BIO_puts(rctx->mem, value) <= 0
| 0 | ||||||||||||||||||||||||
143 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
144 | } never executed: end of block | 0 | ||||||||||||||||||||||||
145 | if (BIO_write(rctx->mem, "\r\n", 2) != 2
| 0 | ||||||||||||||||||||||||
146 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
147 | rctx->state = (9 | 0x1000); | - | ||||||||||||||||||||||||
148 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
149 | } | - | ||||||||||||||||||||||||
150 | - | |||||||||||||||||||||||||
151 | OCSP_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 ==
| 0 | ||||||||||||||||||||||||
160 | ((void *)0)
| 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)
| 0 | ||||||||||||||||||||||||
167 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
168 | - | |||||||||||||||||||||||||
169 | if (req
| 0 | ||||||||||||||||||||||||
170 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
171 | - | |||||||||||||||||||||||||
172 | return never executed: rctx;return 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 | - | |||||||||||||||||||||||||
186 | static int parse_http_line1(char *line) | - | ||||||||||||||||||||||||
187 | { | - | ||||||||||||||||||||||||
188 | int retcode; | - | ||||||||||||||||||||||||
189 | char *p, *q, *r; | - | ||||||||||||||||||||||||
190 | - | |||||||||||||||||||||||||
191 | - | |||||||||||||||||||||||||
192 | for (p = line; *
| 0 | ||||||||||||||||||||||||
193 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
194 | if (!*p
| 0 | ||||||||||||||||||||||||
195 | ERR_put_error(39,(118),(115),__FILE__,215); | - | ||||||||||||||||||||||||
196 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
197 | } | - | ||||||||||||||||||||||||
198 | - | |||||||||||||||||||||||||
199 | - | |||||||||||||||||||||||||
200 | while (*
| 0 | ||||||||||||||||||||||||
201 | p++; never executed: p++; | 0 | ||||||||||||||||||||||||
202 | - | |||||||||||||||||||||||||
203 | if (!*p
| 0 | ||||||||||||||||||||||||
204 | ERR_put_error(39,(118),(115),__FILE__,224); | - | ||||||||||||||||||||||||
205 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
206 | } | - | ||||||||||||||||||||||||
207 | - | |||||||||||||||||||||||||
208 | - | |||||||||||||||||||||||||
209 | for (q = p; *
| 0 | ||||||||||||||||||||||||
210 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
211 | - | |||||||||||||||||||||||||
212 | if (!*q
| 0 | ||||||||||||||||||||||||
213 | ERR_put_error(39,(118),(115),__FILE__,233); | - | ||||||||||||||||||||||||
214 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
215 | } | - | ||||||||||||||||||||||||
216 | - | |||||||||||||||||||||||||
217 | - | |||||||||||||||||||||||||
218 | *q++ = 0; | - | ||||||||||||||||||||||||
219 | - | |||||||||||||||||||||||||
220 | - | |||||||||||||||||||||||||
221 | retcode = strtoul(p, &r, 10); | - | ||||||||||||||||||||||||
222 | - | |||||||||||||||||||||||||
223 | if (*
| 0 | ||||||||||||||||||||||||
224 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
225 | - | |||||||||||||||||||||||||
226 | - | |||||||||||||||||||||||||
227 | while (*
| 0 | ||||||||||||||||||||||||
228 | q++; never executed: q++; | 0 | ||||||||||||||||||||||||
229 | - | |||||||||||||||||||||||||
230 | if (*
| 0 | ||||||||||||||||||||||||
231 | - | |||||||||||||||||||||||||
232 | - | |||||||||||||||||||||||||
233 | - | |||||||||||||||||||||||||
234 | - | |||||||||||||||||||||||||
235 | - | |||||||||||||||||||||||||
236 | for (r = q + strlen(q) - 1; (
| 0 | ||||||||||||||||||||||||
237 | * never executed: r = 0;*r = 0; never executed: *r = 0; | 0 | ||||||||||||||||||||||||
238 | } never executed: end of block | 0 | ||||||||||||||||||||||||
239 | if (retcode != 200
| 0 | ||||||||||||||||||||||||
240 | ERR_put_error(39,(118),(114),__FILE__,260); | - | ||||||||||||||||||||||||
241 | if (!*q
| 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: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
246 | } | - | ||||||||||||||||||||||||
247 | - | |||||||||||||||||||||||||
248 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
249 | - | |||||||||||||||||||||||||
250 | } | - | ||||||||||||||||||||||||
251 | - | |||||||||||||||||||||||||
252 | int 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)
| 0 | ||||||||||||||||||||||||
258 | n = BIO_read(rctx->io, rctx->iobuf, rctx->iobuflen); | - | ||||||||||||||||||||||||
259 | - | |||||||||||||||||||||||||
260 | if (n <= 0
| 0 | ||||||||||||||||||||||||
261 | if (BIO_test_flags(rctx->io, 0x08)
| 0 | ||||||||||||||||||||||||
262 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
263 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
264 | } | - | ||||||||||||||||||||||||
265 | - | |||||||||||||||||||||||||
266 | - | |||||||||||||||||||||||||
267 | - | |||||||||||||||||||||||||
268 | if (BIO_write(rctx->mem, rctx->iobuf, n) != n
| 0 | ||||||||||||||||||||||||
269 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
270 | } never executed: end of block | 0 | ||||||||||||||||||||||||
271 | - | |||||||||||||||||||||||||
272 | switch (rctx->state) { | - | ||||||||||||||||||||||||
273 | case never executed: (9 | 0x1000):case (9 | 0x1000): never executed: case (9 | 0x1000): | 0 | ||||||||||||||||||||||||
274 | - | |||||||||||||||||||||||||
275 | if (BIO_write(rctx->mem, "\r\n", 2) != 2
| 0 | ||||||||||||||||||||||||
276 | rctx->state = (0 | 0x1000); | - | ||||||||||||||||||||||||
277 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
278 | } | - | ||||||||||||||||||||||||
279 | rctx->state = (5 | 0x1000); | - | ||||||||||||||||||||||||
280 | - | |||||||||||||||||||||||||
281 | - | |||||||||||||||||||||||||
282 | case never executed: (5 | 0x1000):case (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: (6 | 0x1000):case (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
| 0 | ||||||||||||||||||||||||
295 | if (BIO_test_flags(rctx->io, 0x08)
| 0 | ||||||||||||||||||||||||
296 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
297 | rctx->state = (0 | 0x1000); | - | ||||||||||||||||||||||||
298 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
299 | } | - | ||||||||||||||||||||||||
300 | - | |||||||||||||||||||||||||
301 | rctx->asn1_len -= i; | - | ||||||||||||||||||||||||
302 | - | |||||||||||||||||||||||||
303 | if (rctx->asn1_len > 0
| 0 | ||||||||||||||||||||||||
304 | goto never executed: next_io;goto 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: (7 | 0x1000):case (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
| 0 | ||||||||||||||||||||||||
320 | rctx->state = 1; | - | ||||||||||||||||||||||||
321 | goto never executed: next_io;goto next_io; never executed: goto next_io; | 0 | ||||||||||||||||||||||||
322 | } | - | ||||||||||||||||||||||||
323 | - | |||||||||||||||||||||||||
324 | if (BIO_test_flags(rctx->io, 0x08)
| 0 | ||||||||||||||||||||||||
325 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
326 | - | |||||||||||||||||||||||||
327 | rctx->state = (0 | 0x1000); | - | ||||||||||||||||||||||||
328 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
329 | - | |||||||||||||||||||||||||
330 | case never executed: (0 | 0x1000):case (0 | 0x1000): never executed: case (0 | 0x1000): | 0 | ||||||||||||||||||||||||
331 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
332 | - | |||||||||||||||||||||||||
333 | case never executed: 1:case 1: never executed: case 1: | 0 | ||||||||||||||||||||||||
334 | case never executed: 2:case 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 ((
| 0 | ||||||||||||||||||||||||
346 | if (n >= rctx->iobuflen
| 0 | ||||||||||||||||||||||||
347 | rctx->state = (0 | 0x1000); | - | ||||||||||||||||||||||||
348 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
349 | } | - | ||||||||||||||||||||||||
350 | goto never executed: next_io;goto 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
| 0 | ||||||||||||||||||||||||
355 | if (BIO_test_flags(rctx->mem, 0x08)
| 0 | ||||||||||||||||||||||||
356 | goto never executed: next_io;goto next_io; never executed: goto next_io; | 0 | ||||||||||||||||||||||||
357 | rctx->state = (0 | 0x1000); | - | ||||||||||||||||||||||||
358 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
359 | } | - | ||||||||||||||||||||||||
360 | - | |||||||||||||||||||||||||
361 | - | |||||||||||||||||||||||||
362 | if (n == rctx->iobuflen
| 0 | ||||||||||||||||||||||||
363 | rctx->state = (0 | 0x1000); | - | ||||||||||||||||||||||||
364 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
365 | } | - | ||||||||||||||||||||||||
366 | - | |||||||||||||||||||||||||
367 | - | |||||||||||||||||||||||||
368 | if (rctx->state == 1
| 0 | ||||||||||||||||||||||||
369 | if (parse_http_line1((char *)rctx->iobuf)
| 0 | ||||||||||||||||||||||||
370 | rctx->state = 2; | - | ||||||||||||||||||||||||
371 | goto never executed: next_line;goto next_line; never executed: goto next_line; | 0 | ||||||||||||||||||||||||
372 | } else { | - | ||||||||||||||||||||||||
373 | rctx->state = (0 | 0x1000); | - | ||||||||||||||||||||||||
374 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
375 | } | - | ||||||||||||||||||||||||
376 | } else { | - | ||||||||||||||||||||||||
377 | - | |||||||||||||||||||||||||
378 | for (p = rctx->iobuf; *
| 0 | ||||||||||||||||||||||||
379 | if ((*
| 0 | ||||||||||||||||||||||||
380 | break; never executed: break; | 0 | ||||||||||||||||||||||||
381 | } never executed: end of block | 0 | ||||||||||||||||||||||||
382 | if (*
| 0 | ||||||||||||||||||||||||
383 | goto never executed: next_line;goto 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: 3:case 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
| 0 | ||||||||||||||||||||||||
399 | goto never executed: next_io;goto next_io; never executed: goto next_io; | 0 | ||||||||||||||||||||||||
400 | - | |||||||||||||||||||||||||
401 | - | |||||||||||||||||||||||||
402 | if (*
| 0 | ||||||||||||||||||||||||
403 | rctx->state = (0 | 0x1000); | - | ||||||||||||||||||||||||
404 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
405 | } | - | ||||||||||||||||||||||||
406 | - | |||||||||||||||||||||||||
407 | - | |||||||||||||||||||||||||
408 | if (*
| 0 | ||||||||||||||||||||||||
409 | - | |||||||||||||||||||||||||
410 | - | |||||||||||||||||||||||||
411 | - | |||||||||||||||||||||||||
412 | - | |||||||||||||||||||||||||
413 | if (n < 6
| 0 | ||||||||||||||||||||||||
414 | goto never executed: next_io;goto next_io; never executed: goto next_io; | 0 | ||||||||||||||||||||||||
415 | n = *p & 0x7F; | - | ||||||||||||||||||||||||
416 | - | |||||||||||||||||||||||||
417 | if (!n
| 0 | ||||||||||||||||||||||||
418 | rctx->state = (0 | 0x1000); | - | ||||||||||||||||||||||||
419 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
420 | } | - | ||||||||||||||||||||||||
421 | p++; | - | ||||||||||||||||||||||||
422 | rctx->asn1_len = 0; | - | ||||||||||||||||||||||||
423 | for (i = 0; i < n
| 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
| 0 | ||||||||||||||||||||||||
429 | rctx->state = (0 | 0x1000); | - | ||||||||||||||||||||||||
430 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
431 | } | - | ||||||||||||||||||||||||
432 | - | |||||||||||||||||||||||||
433 | rctx->asn1_len += n + 2; | - | ||||||||||||||||||||||||
434 | } never executed: elseend of block | 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: 4:case 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
| 0 | ||||||||||||||||||||||||
446 | goto never executed: next_io;goto next_io; never executed: goto next_io; | 0 | ||||||||||||||||||||||||
447 | - | |||||||||||||||||||||||||
448 | rctx->state = (8 | 0x1000); | - | ||||||||||||||||||||||||
449 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
450 | - | |||||||||||||||||||||||||
451 | case never executed: (8 | 0x1000):case (8 | 0x1000): never executed: case (8 | 0x1000): | 0 | ||||||||||||||||||||||||
452 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
453 | - | |||||||||||||||||||||||||
454 | } | - | ||||||||||||||||||||||||
455 | - | |||||||||||||||||||||||||
456 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
457 | - | |||||||||||||||||||||||||
458 | } | - | ||||||||||||||||||||||||
459 | - | |||||||||||||||||||||||||
460 | int OCSP_sendreq_nbio(OCSP_RESPONSE **presp, OCSP_REQ_CTX *rctx) | - | ||||||||||||||||||||||||
461 | { | - | ||||||||||||||||||||||||
462 | return never executed: OCSP_REQ_CTX_nbio_d2i(rctx,return OCSP_REQ_CTX_nbio_d2i(rctx, (ASN1_VALUE **)presp, (&(OCSP_RESPONSE_it))); 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 | - | |||||||||||||||||||||||||
469 | OCSP_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 ==
| 0 | ||||||||||||||||||||||||
480 | ((void *)0)
| 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: while ((end of block
| 0 | ||||||||||||||||||||||||
489 | - | |||||||||||||||||||||||||
490 | OCSP_REQ_CTX_free(ctx); | - | ||||||||||||||||||||||||
491 | - | |||||||||||||||||||||||||
492 | if (rv
| 0 | ||||||||||||||||||||||||
493 | return never executed: resp;return 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 code | Preprocessed file |