OpenCoverage

a_bytes.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/asn1/a_bytes.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3static int asn1_collate_primitive(ASN1_STRING *a, ASN1_const_CTX *c);-
4-
5-
6ASN1_STRING *-
7d2i_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
inf & 0x80Description
TRUEnever evaluated
FALSEnever evaluated
)
0
22 goto
never executed: goto err;
err;
never executed: goto err;
0
23-
24 if (tag >= 32
tag >= 32Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
25 i = 153;-
26 goto
never executed: goto err;
err;
never executed: goto err;
0
27 }-
28 if (!(ASN1_tag2bit(tag) & type)
!(ASN1_tag2bit(tag) & type)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
29 i = 169;-
30 goto
never executed: goto err;
err;
never executed: goto err;
0
31 }-
32-
33-
34 if (tag == 3
tag == 3Description
TRUEnever evaluated
FALSEnever evaluated
)
0
35 return
never executed: return (d2i_ASN1_BIT_STRING(a, pp, length));
(d2i_ASN1_BIT_STRING(a, pp, length));
never executed: return (d2i_ASN1_BIT_STRING(a, pp, length));
0
36-
37 if ((
(a == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
a ==
(a == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
38 ((void *)0)
(a == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
39 )
(a == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
|| ((*
((*a) == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
a) ==
((*a) == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
40 ((void *)0)
((*a) == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
41 )
((*a) == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
42 if ((
(ret = ASN1_ST...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ret = ASN1_STRING_new()) ==
(ret = ASN1_ST...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
43 ((void *)0)
(ret = ASN1_ST...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
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: end of block
else
0
49 ret = (*a);
never executed: ret = (*a);
0
50-
51 if (len != 0
len != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
52 s = malloc(len + 1);-
53 if (s ==
s == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
54 ((void *)0)
s == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
55 ) {-
56 i = (1|64);-
57 goto
never executed: goto err;
err;
never executed: goto err;
0
58 }-
59 memcpy(s, p, len);-
60 s[len]='\0';-
61 p += len;-
62 }
never executed: end of block
else
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 !=
a != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
72 ((void *)0)
a != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
73 )-
74 (*
never executed: (*a) = ret;
a) = ret;
never executed: (*a) = ret;
0
75 *pp = p;-
76 return
never executed: return (ret);
(ret);
never executed: return (ret);
0
77-
78err:-
79 ERR_put_error(13,(0xfff),(i),__FILE__,126);-
80 if (a ==
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
81 ((void *)0)
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
82 || *
*a != retDescription
TRUEnever evaluated
FALSEnever evaluated
a != ret
*a != retDescription
TRUEnever evaluated
FALSEnever evaluated
)
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-
89int-
90i2d_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 ==
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
96 ((void *)0)
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
97 )-
98 return
never executed: return (0);
(0);
never executed: return (0);
0
99-
100 if (tag == 3
tag == 3Description
TRUEnever evaluated
FALSEnever evaluated
)
0
101 return
never executed: return (i2d_ASN1_BIT_STRING(a, pp));
(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 ==
pp == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
106 ((void *)0)
pp == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
107 )-
108 return
never executed: return (r);
(r);
never executed: return (r);
0
109 p = *pp;-
110-
111 if ((
(tag == 16)Description
TRUEnever evaluated
FALSEnever evaluated
tag == 16)
(tag == 16)Description
TRUEnever evaluated
FALSEnever evaluated
|| (
(tag == 17)Description
TRUEnever evaluated
FALSEnever evaluated
tag == 17)
(tag == 17)Description
TRUEnever evaluated
FALSEnever evaluated
)
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: return (r);
(r);
never executed: return (r);
0
120}-
121-
122ASN1_STRING *-
123d2i_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 ((
(a == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
a ==
(a == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
136 ((void *)0)
(a == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
137 )
(a == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
|| ((*
((*a) == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
a) ==
((*a) == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
138 ((void *)0)
((*a) == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
139 )
((*a) == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
140 if ((
(ret = ASN1_ST...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ret = ASN1_STRING_new()) ==
(ret = ASN1_ST...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
141 ((void *)0)
(ret = ASN1_ST...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
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: end of block
else
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
inf & 0x80Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
152 i = 102;-
153 goto
never executed: goto err;
err;
never executed: goto err;
0
154 }-
155-
156 if (tag != Ptag
tag != PtagDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
157 i = 168;-
158 goto
never executed: goto err;
err;
never executed: goto err;
0
159 }-
160-
161 if (inf & 0x20
inf & 0x20Description
TRUEnever evaluated
FALSEnever evaluated
) {
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 = (
(length == 0)Description
TRUEnever evaluated
FALSEnever evaluated
length == 0)
(length == 0)Description
TRUEnever evaluated
FALSEnever evaluated
? 0 : (p + length);
0
171 if (!asn1_collate_primitive(ret, &c)
!asn1_collate_...itive(ret, &c)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
172 goto
never executed: goto err;
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
len != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
178 if ((
(ret->length < len)Description
TRUEnever evaluated
FALSEnever evaluated
ret->length < len)
(ret->length < len)Description
TRUEnever evaluated
FALSEnever evaluated
|| (
(ret->data == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
ret->data ==
(ret->data == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
179 ((void *)0)
(ret->data == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
180 )
(ret->data == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
181 free(ret->data);-
182 ret->data = -
183 ((void *)0)-
184 ;-
185 s = malloc(len + 1);-
186 if (s ==
s == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
187 ((void *)0)
s == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
188 ) {-
189 i = (1|64);-
190 goto
never executed: goto err;
err;
never executed: goto err;
0
191 }-
192 }
never executed: end of block
else
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: end of block
else {
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 !=
a != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
210 ((void *)0)
a != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
211 )-
212 (*
never executed: (*a) = ret;
a) = ret;
never executed: (*a) = ret;
0
213 *pp = p;-
214 return
never executed: return (ret);
(ret);
never executed: return (ret);
0
215-
216err:-
217 if (a ==
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
218 ((void *)0)
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
219 || *
*a != retDescription
TRUEnever evaluated
FALSEnever evaluated
a != ret
*a != retDescription
TRUEnever evaluated
FALSEnever evaluated
)
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-
232static int-
233asn1_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 ==
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
248 ((void *)0)
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
249 ) {-
250 c->error = (3|64);-
251 goto
never executed: goto err;
err;
never executed: goto err;
0
252 }-
253-
254 num = 0;-
255 for (;;) {-
256 if (c->inf & 1
c->inf & 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
257 c->eos = ASN1_const_check_infinite_end(&c->p,-
258 (long)(c->max - c->p));-
259 if (c->eos
c->eosDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
260 break;
never executed: break;
0
261 }
never executed: end of block
else {
0
262 if (c->slen <= 0
c->slen <= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
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,
d2i_ASN1_bytes...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
268 c->xclass) ==
d2i_ASN1_bytes...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
269 ((void *)0)
d2i_ASN1_bytes...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
270 ) {-
271 c->error = 13;-
272 goto
never executed: goto err;
err;
never executed: goto err;
0
273 }-
274-
275 if (!BUF_MEM_grow_clean(&b, num + os->length)
!BUF_MEM_grow_... + os->length)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
276 c->error = 7;-
277 goto
never executed: goto err;
err;
never executed: goto err;
0
278 }-
279 memcpy(&(b.data[num]), os->data, os->length);-
280 if (!(c->inf & 1)
!(c->inf & 1)Description
TRUEnever evaluated
FALSEnever evaluated
)
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)
!asn1_const_Finish(c)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
286 goto
never executed: goto err;
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: return (1);
(1);
never executed: return (1);
0
293-
294err:-
295 ERR_put_error(13,(0xfff),(c->error),__FILE__,302);-
296 ASN1_STRING_free(os);-
297 free(b.data);-
298 return
never executed: return (0);
(0);
never executed: return (0);
0
299}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2