Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/asn1/a_bytes.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||||||||
2 | - | |||||||||||||||||||||||||
3 | static int asn1_collate_primitive(ASN1_STRING *a, ASN1_const_CTX *c); | - | ||||||||||||||||||||||||
4 | - | |||||||||||||||||||||||||
5 | - | |||||||||||||||||||||||||
6 | ASN1_STRING * | - | ||||||||||||||||||||||||
7 | d2i_ASN1_type_bytes(ASN1_STRING **a, const unsigned char **pp, | - | ||||||||||||||||||||||||
8 | long length, int type) | - | ||||||||||||||||||||||||
9 | { | - | ||||||||||||||||||||||||
10 | ASN1_STRING *ret = | - | ||||||||||||||||||||||||
11 | ((void *)0) | - | ||||||||||||||||||||||||
12 | ; | - | ||||||||||||||||||||||||
13 | const unsigned char *p; | - | ||||||||||||||||||||||||
14 | unsigned char *s; | - | ||||||||||||||||||||||||
15 | long len; | - | ||||||||||||||||||||||||
16 | int inf, tag, xclass; | - | ||||||||||||||||||||||||
17 | int i = 0; | - | ||||||||||||||||||||||||
18 | - | |||||||||||||||||||||||||
19 | p = *pp; | - | ||||||||||||||||||||||||
20 | inf = ASN1_get_object(&p, &len, &tag, &xclass, length); | - | ||||||||||||||||||||||||
21 | if (inf & 0x80
| 0 | ||||||||||||||||||||||||
22 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
23 | - | |||||||||||||||||||||||||
24 | if (tag >= 32
| 0 | ||||||||||||||||||||||||
25 | i = 153; | - | ||||||||||||||||||||||||
26 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
27 | } | - | ||||||||||||||||||||||||
28 | if (!(ASN1_tag2bit(tag) & type)
| 0 | ||||||||||||||||||||||||
29 | i = 169; | - | ||||||||||||||||||||||||
30 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
31 | } | - | ||||||||||||||||||||||||
32 | - | |||||||||||||||||||||||||
33 | - | |||||||||||||||||||||||||
34 | if (tag == 3
| 0 | ||||||||||||||||||||||||
35 | return never executed: (d2i_ASN1_BIT_STRING(a, pp, length));return (d2i_ASN1_BIT_STRING(a, pp, length)); never executed: return (d2i_ASN1_BIT_STRING(a, pp, length)); | 0 | ||||||||||||||||||||||||
36 | - | |||||||||||||||||||||||||
37 | if ((
| 0 | ||||||||||||||||||||||||
38 | ((void *)0)
| 0 | ||||||||||||||||||||||||
39 | )
| 0 | ||||||||||||||||||||||||
40 | ((void *)0)
| 0 | ||||||||||||||||||||||||
41 | )
| 0 | ||||||||||||||||||||||||
42 | if ((
| 0 | ||||||||||||||||||||||||
43 | ((void *)0)
| 0 | ||||||||||||||||||||||||
44 | ) | - | ||||||||||||||||||||||||
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 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
49 | ret = (*a); never executed: ret = (*a); | 0 | ||||||||||||||||||||||||
50 | - | |||||||||||||||||||||||||
51 | if (len != 0
| 0 | ||||||||||||||||||||||||
52 | s = malloc(len + 1); | - | ||||||||||||||||||||||||
53 | if (s ==
| 0 | ||||||||||||||||||||||||
54 | ((void *)0)
| 0 | ||||||||||||||||||||||||
55 | ) { | - | ||||||||||||||||||||||||
56 | i = (1|64); | - | ||||||||||||||||||||||||
57 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
58 | } | - | ||||||||||||||||||||||||
59 | memcpy(s, p, len); | - | ||||||||||||||||||||||||
60 | s[len]='\0'; | - | ||||||||||||||||||||||||
61 | p += len; | - | ||||||||||||||||||||||||
62 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
63 | s = never executed: s = ((void *)0) ; | 0 | ||||||||||||||||||||||||
64 | ((void *)0) never executed: s = ((void *)0) ; | 0 | ||||||||||||||||||||||||
65 | ; never executed: s = ((void *)0) ; | 0 | ||||||||||||||||||||||||
66 | - | |||||||||||||||||||||||||
67 | free(ret->data); | - | ||||||||||||||||||||||||
68 | ret->length = (int)len; | - | ||||||||||||||||||||||||
69 | ret->data = s; | - | ||||||||||||||||||||||||
70 | ret->type = tag; | - | ||||||||||||||||||||||||
71 | if (a !=
| 0 | ||||||||||||||||||||||||
72 | ((void *)0)
| 0 | ||||||||||||||||||||||||
73 | ) | - | ||||||||||||||||||||||||
74 | (* never executed: a) = ret;(*a) = ret; never executed: (*a) = ret; | 0 | ||||||||||||||||||||||||
75 | *pp = p; | - | ||||||||||||||||||||||||
76 | return never executed: (ret);return (ret); never executed: return (ret); | 0 | ||||||||||||||||||||||||
77 | - | |||||||||||||||||||||||||
78 | err: | - | ||||||||||||||||||||||||
79 | ERR_put_error(13,(0xfff),(i),__FILE__,126); | - | ||||||||||||||||||||||||
80 | if (a ==
| 0 | ||||||||||||||||||||||||
81 | ((void *)0)
| 0 | ||||||||||||||||||||||||
82 | || *
| 0 | ||||||||||||||||||||||||
83 | ASN1_STRING_free(ret); never executed: ASN1_STRING_free(ret); | 0 | ||||||||||||||||||||||||
84 | return never executed: (return ( ((void *)0) ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
85 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
86 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
87 | } | - | ||||||||||||||||||||||||
88 | - | |||||||||||||||||||||||||
89 | int | - | ||||||||||||||||||||||||
90 | i2d_ASN1_bytes(ASN1_STRING *a, unsigned char **pp, int tag, int xclass) | - | ||||||||||||||||||||||||
91 | { | - | ||||||||||||||||||||||||
92 | int ret, r, constructed; | - | ||||||||||||||||||||||||
93 | unsigned char *p; | - | ||||||||||||||||||||||||
94 | - | |||||||||||||||||||||||||
95 | if (a ==
| 0 | ||||||||||||||||||||||||
96 | ((void *)0)
| 0 | ||||||||||||||||||||||||
97 | ) | - | ||||||||||||||||||||||||
98 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
99 | - | |||||||||||||||||||||||||
100 | if (tag == 3
| 0 | ||||||||||||||||||||||||
101 | return never executed: (i2d_ASN1_BIT_STRING(a, pp));return (i2d_ASN1_BIT_STRING(a, pp)); never executed: return (i2d_ASN1_BIT_STRING(a, pp)); | 0 | ||||||||||||||||||||||||
102 | - | |||||||||||||||||||||||||
103 | ret = a->length; | - | ||||||||||||||||||||||||
104 | r = ASN1_object_size(0, ret, tag); | - | ||||||||||||||||||||||||
105 | if (pp ==
| 0 | ||||||||||||||||||||||||
106 | ((void *)0)
| 0 | ||||||||||||||||||||||||
107 | ) | - | ||||||||||||||||||||||||
108 | return never executed: (r);return (r); never executed: return (r); | 0 | ||||||||||||||||||||||||
109 | p = *pp; | - | ||||||||||||||||||||||||
110 | - | |||||||||||||||||||||||||
111 | if ((
| 0 | ||||||||||||||||||||||||
112 | constructed = 1; never executed: constructed = 1; | 0 | ||||||||||||||||||||||||
113 | else | - | ||||||||||||||||||||||||
114 | constructed = 0; never executed: constructed = 0; | 0 | ||||||||||||||||||||||||
115 | ASN1_put_object(&p, constructed, ret, tag, xclass); | - | ||||||||||||||||||||||||
116 | memcpy(p, a->data, a->length); | - | ||||||||||||||||||||||||
117 | p += a->length; | - | ||||||||||||||||||||||||
118 | *pp = p; | - | ||||||||||||||||||||||||
119 | return never executed: (r);return (r); never executed: return (r); | 0 | ||||||||||||||||||||||||
120 | } | - | ||||||||||||||||||||||||
121 | - | |||||||||||||||||||||||||
122 | ASN1_STRING * | - | ||||||||||||||||||||||||
123 | d2i_ASN1_bytes(ASN1_STRING **a, const unsigned char **pp, | - | ||||||||||||||||||||||||
124 | long length, int Ptag, int Pclass) | - | ||||||||||||||||||||||||
125 | { | - | ||||||||||||||||||||||||
126 | ASN1_STRING *ret = | - | ||||||||||||||||||||||||
127 | ((void *)0) | - | ||||||||||||||||||||||||
128 | ; | - | ||||||||||||||||||||||||
129 | const unsigned char *p; | - | ||||||||||||||||||||||||
130 | unsigned char *s; | - | ||||||||||||||||||||||||
131 | long len; | - | ||||||||||||||||||||||||
132 | int inf, tag, xclass; | - | ||||||||||||||||||||||||
133 | int i = 0; | - | ||||||||||||||||||||||||
134 | - | |||||||||||||||||||||||||
135 | if ((
| 0 | ||||||||||||||||||||||||
136 | ((void *)0)
| 0 | ||||||||||||||||||||||||
137 | )
| 0 | ||||||||||||||||||||||||
138 | ((void *)0)
| 0 | ||||||||||||||||||||||||
139 | )
| 0 | ||||||||||||||||||||||||
140 | if ((
| 0 | ||||||||||||||||||||||||
141 | ((void *)0)
| 0 | ||||||||||||||||||||||||
142 | ) | - | ||||||||||||||||||||||||
143 | return never executed: (return ( ((void *)0) ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
144 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
145 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
146 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
147 | ret = (*a); never executed: ret = (*a); | 0 | ||||||||||||||||||||||||
148 | - | |||||||||||||||||||||||||
149 | p= *pp; | - | ||||||||||||||||||||||||
150 | inf = ASN1_get_object(&p, &len, &tag, &xclass, length); | - | ||||||||||||||||||||||||
151 | if (inf & 0x80
| 0 | ||||||||||||||||||||||||
152 | i = 102; | - | ||||||||||||||||||||||||
153 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
154 | } | - | ||||||||||||||||||||||||
155 | - | |||||||||||||||||||||||||
156 | if (tag != Ptag
| 0 | ||||||||||||||||||||||||
157 | i = 168; | - | ||||||||||||||||||||||||
158 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
159 | } | - | ||||||||||||||||||||||||
160 | - | |||||||||||||||||||||||||
161 | if (inf & 0x20
| 0 | ||||||||||||||||||||||||
162 | ASN1_const_CTX c; | - | ||||||||||||||||||||||||
163 | - | |||||||||||||||||||||||||
164 | c.pp = pp; | - | ||||||||||||||||||||||||
165 | c.p = p; | - | ||||||||||||||||||||||||
166 | c.inf = inf; | - | ||||||||||||||||||||||||
167 | c.slen = len; | - | ||||||||||||||||||||||||
168 | c.tag = Ptag; | - | ||||||||||||||||||||||||
169 | c.xclass = Pclass; | - | ||||||||||||||||||||||||
170 | c.max = (
| 0 | ||||||||||||||||||||||||
171 | if (!asn1_collate_primitive(ret, &c)
| 0 | ||||||||||||||||||||||||
172 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
173 | else { | - | ||||||||||||||||||||||||
174 | p = c.p; | - | ||||||||||||||||||||||||
175 | } never executed: end of block | 0 | ||||||||||||||||||||||||
176 | } else { | - | ||||||||||||||||||||||||
177 | if (len != 0
| 0 | ||||||||||||||||||||||||
178 | if ((
| 0 | ||||||||||||||||||||||||
179 | ((void *)0)
| 0 | ||||||||||||||||||||||||
180 | )
| 0 | ||||||||||||||||||||||||
181 | free(ret->data); | - | ||||||||||||||||||||||||
182 | ret->data = | - | ||||||||||||||||||||||||
183 | ((void *)0) | - | ||||||||||||||||||||||||
184 | ; | - | ||||||||||||||||||||||||
185 | s = malloc(len + 1); | - | ||||||||||||||||||||||||
186 | if (s ==
| 0 | ||||||||||||||||||||||||
187 | ((void *)0)
| 0 | ||||||||||||||||||||||||
188 | ) { | - | ||||||||||||||||||||||||
189 | i = (1|64); | - | ||||||||||||||||||||||||
190 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
191 | } | - | ||||||||||||||||||||||||
192 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
193 | s = ret->data; never executed: s = ret->data; | 0 | ||||||||||||||||||||||||
194 | memcpy(s, p, len); | - | ||||||||||||||||||||||||
195 | s[len] = '\0'; | - | ||||||||||||||||||||||||
196 | p += len; | - | ||||||||||||||||||||||||
197 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
198 | s = | - | ||||||||||||||||||||||||
199 | ((void *)0) | - | ||||||||||||||||||||||||
200 | ; | - | ||||||||||||||||||||||||
201 | free(ret->data); | - | ||||||||||||||||||||||||
202 | } never executed: end of block | 0 | ||||||||||||||||||||||||
203 | - | |||||||||||||||||||||||||
204 | ret->length = (int)len; | - | ||||||||||||||||||||||||
205 | ret->data = s; | - | ||||||||||||||||||||||||
206 | ret->type = Ptag; | - | ||||||||||||||||||||||||
207 | } never executed: end of block | 0 | ||||||||||||||||||||||||
208 | - | |||||||||||||||||||||||||
209 | if (a !=
| 0 | ||||||||||||||||||||||||
210 | ((void *)0)
| 0 | ||||||||||||||||||||||||
211 | ) | - | ||||||||||||||||||||||||
212 | (* never executed: a) = ret;(*a) = ret; never executed: (*a) = ret; | 0 | ||||||||||||||||||||||||
213 | *pp = p; | - | ||||||||||||||||||||||||
214 | return never executed: (ret);return (ret); never executed: return (ret); | 0 | ||||||||||||||||||||||||
215 | - | |||||||||||||||||||||||||
216 | err: | - | ||||||||||||||||||||||||
217 | if (a ==
| 0 | ||||||||||||||||||||||||
218 | ((void *)0)
| 0 | ||||||||||||||||||||||||
219 | || *
| 0 | ||||||||||||||||||||||||
220 | ASN1_STRING_free(ret); never executed: ASN1_STRING_free(ret); | 0 | ||||||||||||||||||||||||
221 | ERR_put_error(13,(0xfff),(i),__FILE__,238); | - | ||||||||||||||||||||||||
222 | return never executed: (return ( ((void *)0) ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
223 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
224 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
225 | } | - | ||||||||||||||||||||||||
226 | - | |||||||||||||||||||||||||
227 | - | |||||||||||||||||||||||||
228 | - | |||||||||||||||||||||||||
229 | - | |||||||||||||||||||||||||
230 | - | |||||||||||||||||||||||||
231 | - | |||||||||||||||||||||||||
232 | static int | - | ||||||||||||||||||||||||
233 | asn1_collate_primitive(ASN1_STRING *a, ASN1_const_CTX *c) | - | ||||||||||||||||||||||||
234 | { | - | ||||||||||||||||||||||||
235 | ASN1_STRING *os = | - | ||||||||||||||||||||||||
236 | ((void *)0) | - | ||||||||||||||||||||||||
237 | ; | - | ||||||||||||||||||||||||
238 | BUF_MEM b; | - | ||||||||||||||||||||||||
239 | int num; | - | ||||||||||||||||||||||||
240 | - | |||||||||||||||||||||||||
241 | b.length = 0; | - | ||||||||||||||||||||||||
242 | b.max = 0; | - | ||||||||||||||||||||||||
243 | b.data = | - | ||||||||||||||||||||||||
244 | ((void *)0) | - | ||||||||||||||||||||||||
245 | ; | - | ||||||||||||||||||||||||
246 | - | |||||||||||||||||||||||||
247 | if (a ==
| 0 | ||||||||||||||||||||||||
248 | ((void *)0)
| 0 | ||||||||||||||||||||||||
249 | ) { | - | ||||||||||||||||||||||||
250 | c->error = (3|64); | - | ||||||||||||||||||||||||
251 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
252 | } | - | ||||||||||||||||||||||||
253 | - | |||||||||||||||||||||||||
254 | num = 0; | - | ||||||||||||||||||||||||
255 | for (;;) { | - | ||||||||||||||||||||||||
256 | if (c->inf & 1
| 0 | ||||||||||||||||||||||||
257 | c->eos = ASN1_const_check_infinite_end(&c->p, | - | ||||||||||||||||||||||||
258 | (long)(c->max - c->p)); | - | ||||||||||||||||||||||||
259 | if (c->eos
| 0 | ||||||||||||||||||||||||
260 | break; never executed: break; | 0 | ||||||||||||||||||||||||
261 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
262 | if (c->slen <= 0
| 0 | ||||||||||||||||||||||||
263 | break; never executed: break; | 0 | ||||||||||||||||||||||||
264 | } never executed: end of block | 0 | ||||||||||||||||||||||||
265 | - | |||||||||||||||||||||||||
266 | c->q = c->p; | - | ||||||||||||||||||||||||
267 | if (d2i_ASN1_bytes(&os, &c->p, c->max - c->p, c->tag,
| 0 | ||||||||||||||||||||||||
268 | c->xclass) ==
| 0 | ||||||||||||||||||||||||
269 | ((void *)0)
| 0 | ||||||||||||||||||||||||
270 | ) { | - | ||||||||||||||||||||||||
271 | c->error = 13; | - | ||||||||||||||||||||||||
272 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
273 | } | - | ||||||||||||||||||||||||
274 | - | |||||||||||||||||||||||||
275 | if (!BUF_MEM_grow_clean(&b, num + os->length)
| 0 | ||||||||||||||||||||||||
276 | c->error = 7; | - | ||||||||||||||||||||||||
277 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
278 | } | - | ||||||||||||||||||||||||
279 | memcpy(&(b.data[num]), os->data, os->length); | - | ||||||||||||||||||||||||
280 | if (!(c->inf & 1)
| 0 | ||||||||||||||||||||||||
281 | c->slen -= (c->p - c->q); never executed: c->slen -= (c->p - c->q); | 0 | ||||||||||||||||||||||||
282 | num += os->length; | - | ||||||||||||||||||||||||
283 | } never executed: end of block | 0 | ||||||||||||||||||||||||
284 | - | |||||||||||||||||||||||||
285 | if (!asn1_const_Finish(c)
| 0 | ||||||||||||||||||||||||
286 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
287 | - | |||||||||||||||||||||||||
288 | a->length = num; | - | ||||||||||||||||||||||||
289 | free(a->data); | - | ||||||||||||||||||||||||
290 | a->data = (unsigned char *)b.data; | - | ||||||||||||||||||||||||
291 | ASN1_STRING_free(os); | - | ||||||||||||||||||||||||
292 | return never executed: (1);return (1); never executed: return (1); | 0 | ||||||||||||||||||||||||
293 | - | |||||||||||||||||||||||||
294 | err: | - | ||||||||||||||||||||||||
295 | ERR_put_error(13,(0xfff),(c->error),__FILE__,302); | - | ||||||||||||||||||||||||
296 | ASN1_STRING_free(os); | - | ||||||||||||||||||||||||
297 | free(b.data); | - | ||||||||||||||||||||||||
298 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
299 | } | - | ||||||||||||||||||||||||
Switch to Source code | Preprocessed file |