Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/asn1/a_d2i_fp.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||||||||||||||
2 | - | |||||||||||||||||||||||||||||||
3 | static int asn1_d2i_read_bio(BIO *in, BUF_MEM **pb); | - | ||||||||||||||||||||||||||||||
4 | - | |||||||||||||||||||||||||||||||
5 | - | |||||||||||||||||||||||||||||||
6 | - | |||||||||||||||||||||||||||||||
7 | void * | - | ||||||||||||||||||||||||||||||
8 | ASN1_d2i_fp(void *(*xnew)(void), d2i_of_void *d2i, FILE *in, void **x) | - | ||||||||||||||||||||||||||||||
9 | { | - | ||||||||||||||||||||||||||||||
10 | BIO *b; | - | ||||||||||||||||||||||||||||||
11 | void *ret; | - | ||||||||||||||||||||||||||||||
12 | - | |||||||||||||||||||||||||||||||
13 | if ((
| 0 | ||||||||||||||||||||||||||||||
14 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
15 | ) { | - | ||||||||||||||||||||||||||||||
16 | ERR_put_error(13,(0xfff),(7),__FILE__,77); | - | ||||||||||||||||||||||||||||||
17 | return never executed: (return ( ((void *)0) ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||||||||
18 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||||||||
19 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||||||||
20 | } | - | ||||||||||||||||||||||||||||||
21 | BIO_ctrl(b,106,0x00,(char *)in); | - | ||||||||||||||||||||||||||||||
22 | ret = ASN1_d2i_bio(xnew, d2i, b, x); | - | ||||||||||||||||||||||||||||||
23 | BIO_free(b); | - | ||||||||||||||||||||||||||||||
24 | return never executed: (ret);return (ret); never executed: return (ret); | 0 | ||||||||||||||||||||||||||||||
25 | } | - | ||||||||||||||||||||||||||||||
26 | - | |||||||||||||||||||||||||||||||
27 | void * | - | ||||||||||||||||||||||||||||||
28 | ASN1_d2i_bio(void *(*xnew)(void), d2i_of_void *d2i, BIO *in, void **x) | - | ||||||||||||||||||||||||||||||
29 | { | - | ||||||||||||||||||||||||||||||
30 | BUF_MEM *b = | - | ||||||||||||||||||||||||||||||
31 | ((void *)0) | - | ||||||||||||||||||||||||||||||
32 | ; | - | ||||||||||||||||||||||||||||||
33 | const unsigned char *p; | - | ||||||||||||||||||||||||||||||
34 | void *ret = | - | ||||||||||||||||||||||||||||||
35 | ((void *)0) | - | ||||||||||||||||||||||||||||||
36 | ; | - | ||||||||||||||||||||||||||||||
37 | int len; | - | ||||||||||||||||||||||||||||||
38 | - | |||||||||||||||||||||||||||||||
39 | len = asn1_d2i_read_bio(in, &b); | - | ||||||||||||||||||||||||||||||
40 | if (len < 0
| 0 | ||||||||||||||||||||||||||||||
41 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
42 | - | |||||||||||||||||||||||||||||||
43 | p = (unsigned char *)b->data; | - | ||||||||||||||||||||||||||||||
44 | ret = d2i(x, &p, len); | - | ||||||||||||||||||||||||||||||
45 | - | |||||||||||||||||||||||||||||||
46 | err: code before this statement never executed: err: | 0 | ||||||||||||||||||||||||||||||
47 | if (b !=
| 0 | ||||||||||||||||||||||||||||||
48 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
49 | ) | - | ||||||||||||||||||||||||||||||
50 | BUF_MEM_free(b); never executed: BUF_MEM_free(b); | 0 | ||||||||||||||||||||||||||||||
51 | return never executed: (ret);return (ret); never executed: return (ret); | 0 | ||||||||||||||||||||||||||||||
52 | } | - | ||||||||||||||||||||||||||||||
53 | - | |||||||||||||||||||||||||||||||
54 | - | |||||||||||||||||||||||||||||||
55 | - | |||||||||||||||||||||||||||||||
56 | void * | - | ||||||||||||||||||||||||||||||
57 | ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x) | - | ||||||||||||||||||||||||||||||
58 | { | - | ||||||||||||||||||||||||||||||
59 | BUF_MEM *b = | - | ||||||||||||||||||||||||||||||
60 | ((void *)0) | - | ||||||||||||||||||||||||||||||
61 | ; | - | ||||||||||||||||||||||||||||||
62 | const unsigned char *p; | - | ||||||||||||||||||||||||||||||
63 | void *ret = | - | ||||||||||||||||||||||||||||||
64 | ((void *)0) | - | ||||||||||||||||||||||||||||||
65 | ; | - | ||||||||||||||||||||||||||||||
66 | int len; | - | ||||||||||||||||||||||||||||||
67 | - | |||||||||||||||||||||||||||||||
68 | len = asn1_d2i_read_bio(in, &b); | - | ||||||||||||||||||||||||||||||
69 | if (len < 0
| 0 | ||||||||||||||||||||||||||||||
70 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
71 | - | |||||||||||||||||||||||||||||||
72 | p = (const unsigned char *)b->data; | - | ||||||||||||||||||||||||||||||
73 | ret = ASN1_item_d2i(x, &p, len, it); | - | ||||||||||||||||||||||||||||||
74 | - | |||||||||||||||||||||||||||||||
75 | err: code before this statement never executed: err: | 0 | ||||||||||||||||||||||||||||||
76 | if (b !=
| 0 | ||||||||||||||||||||||||||||||
77 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
78 | ) | - | ||||||||||||||||||||||||||||||
79 | BUF_MEM_free(b); never executed: BUF_MEM_free(b); | 0 | ||||||||||||||||||||||||||||||
80 | return never executed: (ret);return (ret); never executed: return (ret); | 0 | ||||||||||||||||||||||||||||||
81 | } | - | ||||||||||||||||||||||||||||||
82 | - | |||||||||||||||||||||||||||||||
83 | void * | - | ||||||||||||||||||||||||||||||
84 | ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x) | - | ||||||||||||||||||||||||||||||
85 | { | - | ||||||||||||||||||||||||||||||
86 | BIO *b; | - | ||||||||||||||||||||||||||||||
87 | char *ret; | - | ||||||||||||||||||||||||||||||
88 | - | |||||||||||||||||||||||||||||||
89 | if ((
| 0 | ||||||||||||||||||||||||||||||
90 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
91 | ) { | - | ||||||||||||||||||||||||||||||
92 | ERR_put_error(13,(0xfff),(7),__FILE__,137); | - | ||||||||||||||||||||||||||||||
93 | return never executed: (return ( ((void *)0) ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||||||||
94 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||||||||
95 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||||||||
96 | } | - | ||||||||||||||||||||||||||||||
97 | BIO_ctrl(b,106,0x00,(char *)in); | - | ||||||||||||||||||||||||||||||
98 | ret = ASN1_item_d2i_bio(it, b, x); | - | ||||||||||||||||||||||||||||||
99 | BIO_free(b); | - | ||||||||||||||||||||||||||||||
100 | return never executed: (ret);return (ret); never executed: return (ret); | 0 | ||||||||||||||||||||||||||||||
101 | } | - | ||||||||||||||||||||||||||||||
102 | - | |||||||||||||||||||||||||||||||
103 | - | |||||||||||||||||||||||||||||||
104 | - | |||||||||||||||||||||||||||||||
105 | static int | - | ||||||||||||||||||||||||||||||
106 | asn1_d2i_read_bio(BIO *in, BUF_MEM **pb) | - | ||||||||||||||||||||||||||||||
107 | { | - | ||||||||||||||||||||||||||||||
108 | BUF_MEM *b; | - | ||||||||||||||||||||||||||||||
109 | unsigned char *p; | - | ||||||||||||||||||||||||||||||
110 | int i; | - | ||||||||||||||||||||||||||||||
111 | ASN1_const_CTX c; | - | ||||||||||||||||||||||||||||||
112 | size_t want = 8; | - | ||||||||||||||||||||||||||||||
113 | int eos = 0; | - | ||||||||||||||||||||||||||||||
114 | size_t off = 0; | - | ||||||||||||||||||||||||||||||
115 | size_t len = 0; | - | ||||||||||||||||||||||||||||||
116 | - | |||||||||||||||||||||||||||||||
117 | b = BUF_MEM_new(); | - | ||||||||||||||||||||||||||||||
118 | if (b ==
| 0 | ||||||||||||||||||||||||||||||
119 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
120 | ) { | - | ||||||||||||||||||||||||||||||
121 | ERR_put_error(13,(0xfff),((1|64)),__FILE__,162); | - | ||||||||||||||||||||||||||||||
122 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
123 | } | - | ||||||||||||||||||||||||||||||
124 | - | |||||||||||||||||||||||||||||||
125 | ERR_clear_error(); | - | ||||||||||||||||||||||||||||||
126 | for (;;) { | - | ||||||||||||||||||||||||||||||
127 | if (want >= (len - off)
| 0 | ||||||||||||||||||||||||||||||
128 | want -= (len - off); | - | ||||||||||||||||||||||||||||||
129 | - | |||||||||||||||||||||||||||||||
130 | if (len + want < len
| 0 | ||||||||||||||||||||||||||||||
131 | !BUF_MEM_grow_clean(b, len + want)
| 0 | ||||||||||||||||||||||||||||||
132 | ERR_put_error(13,(0xfff),((1|64)),__FILE__,173); | - | ||||||||||||||||||||||||||||||
133 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
134 | } | - | ||||||||||||||||||||||||||||||
135 | i = BIO_read(in, &(b->data[len]), want); | - | ||||||||||||||||||||||||||||||
136 | if ((
| 0 | ||||||||||||||||||||||||||||||
137 | ERR_put_error(13,(0xfff),(142),__FILE__,178); | - | ||||||||||||||||||||||||||||||
138 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
139 | } | - | ||||||||||||||||||||||||||||||
140 | if (i > 0
| 0 | ||||||||||||||||||||||||||||||
141 | if (len + i < len
| 0 | ||||||||||||||||||||||||||||||
142 | ERR_put_error(13,(0xfff),(155),__FILE__,183); | - | ||||||||||||||||||||||||||||||
143 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
144 | } | - | ||||||||||||||||||||||||||||||
145 | len += i; | - | ||||||||||||||||||||||||||||||
146 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
147 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
148 | - | |||||||||||||||||||||||||||||||
149 | - | |||||||||||||||||||||||||||||||
150 | p = (unsigned char *) & (b->data[off]); | - | ||||||||||||||||||||||||||||||
151 | c.p = p; | - | ||||||||||||||||||||||||||||||
152 | c.inf = ASN1_get_object(&(c.p), &(c.slen), &(c.tag), | - | ||||||||||||||||||||||||||||||
153 | &(c.xclass), len - off); | - | ||||||||||||||||||||||||||||||
154 | if (c.inf & 0x80
| 0 | ||||||||||||||||||||||||||||||
155 | unsigned long e; | - | ||||||||||||||||||||||||||||||
156 | - | |||||||||||||||||||||||||||||||
157 | e = (int)((ERR_peek_error())&0xfffL); | - | ||||||||||||||||||||||||||||||
158 | if (e != 155
| 0 | ||||||||||||||||||||||||||||||
159 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
160 | else | - | ||||||||||||||||||||||||||||||
161 | ERR_clear_error(); never executed: ERR_clear_error(); | 0 | ||||||||||||||||||||||||||||||
162 | } | - | ||||||||||||||||||||||||||||||
163 | i = c.p - p; | - | ||||||||||||||||||||||||||||||
164 | off += i; | - | ||||||||||||||||||||||||||||||
165 | - | |||||||||||||||||||||||||||||||
166 | if (c.inf & 1
| 0 | ||||||||||||||||||||||||||||||
167 | - | |||||||||||||||||||||||||||||||
168 | eos++; | - | ||||||||||||||||||||||||||||||
169 | if (eos < 0
| 0 | ||||||||||||||||||||||||||||||
170 | ERR_put_error(13,(0xfff),(123),__FILE__,211); | - | ||||||||||||||||||||||||||||||
171 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
172 | } | - | ||||||||||||||||||||||||||||||
173 | want = 8; | - | ||||||||||||||||||||||||||||||
174 | } never executed: else if (eosend of block
| 0 | ||||||||||||||||||||||||||||||
175 | - | |||||||||||||||||||||||||||||||
176 | eos--; | - | ||||||||||||||||||||||||||||||
177 | if (eos <= 0
| 0 | ||||||||||||||||||||||||||||||
178 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
179 | else | - | ||||||||||||||||||||||||||||||
180 | want = 8; never executed: want = 8; | 0 | ||||||||||||||||||||||||||||||
181 | } else { | - | ||||||||||||||||||||||||||||||
182 | - | |||||||||||||||||||||||||||||||
183 | want = c.slen; | - | ||||||||||||||||||||||||||||||
184 | if (want > (len - off)
| 0 | ||||||||||||||||||||||||||||||
185 | size_t chunk_max = (16 * 1024); | - | ||||||||||||||||||||||||||||||
186 | - | |||||||||||||||||||||||||||||||
187 | want -= (len - off); | - | ||||||||||||||||||||||||||||||
188 | if (want > 0x7fffffff
| 0 | ||||||||||||||||||||||||||||||
189 | len+want < len
| 0 | ||||||||||||||||||||||||||||||
190 | ERR_put_error(13,(0xfff),(155),__FILE__,231); | - | ||||||||||||||||||||||||||||||
191 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
192 | } | - | ||||||||||||||||||||||||||||||
193 | while (want > 0
| 0 | ||||||||||||||||||||||||||||||
194 | - | |||||||||||||||||||||||||||||||
195 | - | |||||||||||||||||||||||||||||||
196 | - | |||||||||||||||||||||||||||||||
197 | - | |||||||||||||||||||||||||||||||
198 | - | |||||||||||||||||||||||||||||||
199 | - | |||||||||||||||||||||||||||||||
200 | size_t chunk = want > chunk_max
| 0 | ||||||||||||||||||||||||||||||
201 | - | |||||||||||||||||||||||||||||||
202 | if (!BUF_MEM_grow_clean(b, len + chunk)
| 0 | ||||||||||||||||||||||||||||||
203 | ERR_put_error(13,(0xfff),((1|64)),__FILE__,244); | - | ||||||||||||||||||||||||||||||
204 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
205 | } | - | ||||||||||||||||||||||||||||||
206 | want -= chunk; | - | ||||||||||||||||||||||||||||||
207 | while (chunk > 0
| 0 | ||||||||||||||||||||||||||||||
208 | i = BIO_read(in, &(b->data[len]), chunk); | - | ||||||||||||||||||||||||||||||
209 | if (i <= 0
| 0 | ||||||||||||||||||||||||||||||
210 | ERR_put_error(13,(0xfff),(142),__FILE__,251); | - | ||||||||||||||||||||||||||||||
211 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
212 | } | - | ||||||||||||||||||||||||||||||
213 | - | |||||||||||||||||||||||||||||||
214 | - | |||||||||||||||||||||||||||||||
215 | - | |||||||||||||||||||||||||||||||
216 | - | |||||||||||||||||||||||||||||||
217 | len += i; | - | ||||||||||||||||||||||||||||||
218 | chunk -= i; | - | ||||||||||||||||||||||||||||||
219 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
220 | if (chunk_max < 0x7fffffff/2
| 0 | ||||||||||||||||||||||||||||||
221 | chunk_max *= 2; never executed: chunk_max *= 2; | 0 | ||||||||||||||||||||||||||||||
222 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
223 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
224 | if (off + c.slen < off
| 0 | ||||||||||||||||||||||||||||||
225 | ERR_put_error(13,(0xfff),(155),__FILE__,266); | - | ||||||||||||||||||||||||||||||
226 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
227 | } | - | ||||||||||||||||||||||||||||||
228 | off += c.slen; | - | ||||||||||||||||||||||||||||||
229 | if (eos <= 0
| 0 | ||||||||||||||||||||||||||||||
230 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
231 | } else | - | ||||||||||||||||||||||||||||||
232 | want = 8; never executed: want = 8; | 0 | ||||||||||||||||||||||||||||||
233 | } | - | ||||||||||||||||||||||||||||||
234 | } | - | ||||||||||||||||||||||||||||||
235 | - | |||||||||||||||||||||||||||||||
236 | if (off > 0x7fffffff
| 0 | ||||||||||||||||||||||||||||||
237 | ERR_put_error(13,(0xfff),(155),__FILE__,278); | - | ||||||||||||||||||||||||||||||
238 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
239 | } | - | ||||||||||||||||||||||||||||||
240 | - | |||||||||||||||||||||||||||||||
241 | *pb = b; | - | ||||||||||||||||||||||||||||||
242 | return never executed: off;return off; never executed: return off; | 0 | ||||||||||||||||||||||||||||||
243 | - | |||||||||||||||||||||||||||||||
244 | err: | - | ||||||||||||||||||||||||||||||
245 | if (b !=
| 0 | ||||||||||||||||||||||||||||||
246 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
247 | ) | - | ||||||||||||||||||||||||||||||
248 | BUF_MEM_free(b); never executed: BUF_MEM_free(b); | 0 | ||||||||||||||||||||||||||||||
249 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
250 | } | - | ||||||||||||||||||||||||||||||
Switch to Source code | Preprocessed file |