OpenCoverage

a_d2i_fp.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/asn1/a_d2i_fp.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3static int asn1_d2i_read_bio(BIO *in, BUF_MEM **pb);-
4-
5-
6-
7void *-
8ASN1_d2i_fp(void *(*xnew)(void), d2i_of_void *d2i, FILE *in, void **x)-
9{-
10 BIO *b;-
11 void *ret;-
12-
13 if ((
(b = BIO_new(B...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
b = BIO_new(BIO_s_file())) ==
(b = BIO_new(B...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
14 ((void *)0)
(b = BIO_new(B...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
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: return (ret);
(ret);
never executed: return (ret);
0
25}-
26-
27void *-
28ASN1_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
len < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
41 goto
never executed: goto err;
err;
never executed: goto err;
0
42-
43 p = (unsigned char *)b->data;-
44 ret = d2i(x, &p, len);-
45-
46err:
code before this statement never executed: err:
0
47 if (b !=
b != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
48 ((void *)0)
b != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
49 )-
50 BUF_MEM_free(b);
never executed: BUF_MEM_free(b);
0
51 return
never executed: return (ret);
(ret);
never executed: return (ret);
0
52}-
53-
54-
55-
56void *-
57ASN1_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
len < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
70 goto
never executed: goto err;
err;
never executed: goto err;
0
71-
72 p = (const unsigned char *)b->data;-
73 ret = ASN1_item_d2i(x, &p, len, it);-
74-
75err:
code before this statement never executed: err:
0
76 if (b !=
b != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
77 ((void *)0)
b != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
78 )-
79 BUF_MEM_free(b);
never executed: BUF_MEM_free(b);
0
80 return
never executed: return (ret);
(ret);
never executed: return (ret);
0
81}-
82-
83void *-
84ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x)-
85{-
86 BIO *b;-
87 char *ret;-
88-
89 if ((
(b = BIO_new(B...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
b = BIO_new(BIO_s_file())) ==
(b = BIO_new(B...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
90 ((void *)0)
(b = BIO_new(B...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
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: return (ret);
(ret);
never executed: return (ret);
0
101}-
102-
103-
104-
105static int-
106asn1_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 ==
b == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
119 ((void *)0)
b == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
120 ) {-
121 ERR_put_error(13,(0xfff),((1|64)),__FILE__,162);-
122 return
never executed: return -1;
-1;
never executed: return -1;
0
123 }-
124-
125 ERR_clear_error();-
126 for (;;) {-
127 if (want >= (len - off)
want >= (len - off)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
128 want -= (len - off);-
129-
130 if (len + want < len
len + want < lenDescription
TRUEnever evaluated
FALSEnever evaluated
||
0
131 !BUF_MEM_grow_clean(b, len + want)
!BUF_MEM_grow_...b, len + want)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
132 ERR_put_error(13,(0xfff),((1|64)),__FILE__,173);-
133 goto
never executed: goto err;
err;
never executed: goto err;
0
134 }-
135 i = BIO_read(in, &(b->data[len]), want);-
136 if ((
(i < 0)Description
TRUEnever evaluated
FALSEnever evaluated
i < 0)
(i < 0)Description
TRUEnever evaluated
FALSEnever evaluated
&& ((
((len - off) == 0)Description
TRUEnever evaluated
FALSEnever evaluated
len - off) == 0)
((len - off) == 0)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
137 ERR_put_error(13,(0xfff),(142),__FILE__,178);-
138 goto
never executed: goto err;
err;
never executed: goto err;
0
139 }-
140 if (i > 0
i > 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
141 if (len + i < len
len + i < lenDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
142 ERR_put_error(13,(0xfff),(155),__FILE__,183);-
143 goto
never executed: goto err;
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
c.inf & 0x80Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
155 unsigned long e;-
156-
157 e = (int)((ERR_peek_error())&0xfffL);-
158 if (e != 155
e != 155Description
TRUEnever evaluated
FALSEnever evaluated
)
0
159 goto
never executed: goto err;
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
c.inf & 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
167-
168 eos++;-
169 if (eos < 0
eos < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
170 ERR_put_error(13,(0xfff),(123),__FILE__,211);-
171 goto
never executed: goto err;
err;
never executed: goto err;
0
172 }-
173 want = 8;-
174 }
never executed: end of block
else if (eos
eosDescription
TRUEnever evaluated
FALSEnever evaluated
&& (
(c.slen == 0)Description
TRUEnever evaluated
FALSEnever evaluated
c.slen == 0)
(c.slen == 0)Description
TRUEnever evaluated
FALSEnever evaluated
&& (
(c.tag == 0)Description
TRUEnever evaluated
FALSEnever evaluated
c.tag == 0)
(c.tag == 0)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
175-
176 eos--;-
177 if (eos <= 0
eos <= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
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)
want > (len - off)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
185 size_t chunk_max = (16 * 1024);-
186-
187 want -= (len - off);-
188 if (want > 0x7fffffff
want > 0x7fffffffDescription
TRUEnever evaluated
FALSEnever evaluated
||
0
189 len+want < len
len+want < lenDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
190 ERR_put_error(13,(0xfff),(155),__FILE__,231);-
191 goto
never executed: goto err;
err;
never executed: goto err;
0
192 }-
193 while (want > 0
want > 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
194-
195-
196-
197-
198-
199-
200 size_t chunk = want > chunk_max
want > chunk_maxDescription
TRUEnever evaluated
FALSEnever evaluated
? chunk_max : want;
0
201-
202 if (!BUF_MEM_grow_clean(b, len + chunk)
!BUF_MEM_grow_..., len + chunk)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
203 ERR_put_error(13,(0xfff),((1|64)),__FILE__,244);-
204 goto
never executed: goto err;
err;
never executed: goto err;
0
205 }-
206 want -= chunk;-
207 while (chunk > 0
chunk > 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
208 i = BIO_read(in, &(b->data[len]), chunk);-
209 if (i <= 0
i <= 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
210 ERR_put_error(13,(0xfff),(142),__FILE__,251);-
211 goto
never executed: goto err;
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
chunk_max < 0x7fffffff/2Description
TRUEnever evaluated
FALSEnever evaluated
)
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
off + c.slen < offDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
225 ERR_put_error(13,(0xfff),(155),__FILE__,266);-
226 goto
never executed: goto err;
err;
never executed: goto err;
0
227 }-
228 off += c.slen;-
229 if (eos <= 0
eos <= 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
230 break;
never executed: break;
0
231 } else-
232 want = 8;
never executed: want = 8;
0
233 }-
234 }-
235-
236 if (off > 0x7fffffff
off > 0x7fffffffDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
237 ERR_put_error(13,(0xfff),(155),__FILE__,278);-
238 goto
never executed: goto err;
err;
never executed: goto err;
0
239 }-
240-
241 *pb = b;-
242 return
never executed: return off;
off;
never executed: return off;
0
243-
244err:-
245 if (b !=
b != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
246 ((void *)0)
b != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
247 )-
248 BUF_MEM_free(b);
never executed: BUF_MEM_free(b);
0
249 return
never executed: return -1;
-1;
never executed: return -1;
0
250}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2