OpenCoverage

bf_lbuf.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/bio/bf_lbuf.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3static int linebuffer_write(BIO *h, const char *buf, int num);-
4static int linebuffer_read(BIO *h, char *buf, int size);-
5static int linebuffer_puts(BIO *h, const char *str);-
6static int linebuffer_gets(BIO *h, char *str, int size);-
7static long linebuffer_ctrl(BIO *h, int cmd, long arg1, void *arg2);-
8static int linebuffer_new(BIO *h);-
9static int linebuffer_free(BIO *data);-
10static long linebuffer_callback_ctrl(BIO *h, int cmd, BIO_info_cb *fp);-
11-
12-
13-
14-
15-
16-
17static const BIO_METHOD methods_linebuffer = {-
18 (20|0x0200),-
19 "linebuffer",-
20-
21 bwrite_conv,-
22 linebuffer_write,-
23-
24 bread_conv,-
25 linebuffer_read,-
26 linebuffer_puts,-
27 linebuffer_gets,-
28 linebuffer_ctrl,-
29 linebuffer_new,-
30 linebuffer_free,-
31 linebuffer_callback_ctrl,-
32};-
33-
34const BIO_METHOD *BIO_f_linebuffer(void)-
35{-
36 return
never executed: return &methods_linebuffer;
&methods_linebuffer;
never executed: return &methods_linebuffer;
0
37}-
38-
39typedef struct bio_linebuffer_ctx_struct {-
40 char *obuf;-
41 int obuf_size;-
42 int obuf_len;-
43} BIO_LINEBUFFER_CTX;-
44-
45static int linebuffer_new(BIO *bi)-
46{-
47 BIO_LINEBUFFER_CTX *ctx;-
48-
49 if ((
(ctx = CRYPTO_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ctx = CRYPTO_malloc(sizeof(*ctx), __FILE__, 62)) ==
(ctx = CRYPTO_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
50 ((void *)0)
(ctx = CRYPTO_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
51 ) {-
52 ERR_put_error(32,(151),((1|64)),__FILE__,63);-
53 return
never executed: return 0;
0;
never executed: return 0;
0
54 }-
55 ctx->obuf = CRYPTO_malloc(1024*10, __FILE__, 66);-
56 if (ctx->obuf ==
ctx->obuf == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
57 ((void *)0)
ctx->obuf == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
58 ) {-
59 ERR_put_error(32,(151),((1|64)),__FILE__,68);-
60 CRYPTO_free(ctx, __FILE__, 69);-
61 return
never executed: return 0;
0;
never executed: return 0;
0
62 }-
63 ctx->obuf_size = 1024*10;-
64 ctx->obuf_len = 0;-
65-
66 bi->init = 1;-
67 bi->ptr = (char *)ctx;-
68 bi->flags = 0;-
69 return
never executed: return 1;
1;
never executed: return 1;
0
70}-
71-
72static int linebuffer_free(BIO *a)-
73{-
74 BIO_LINEBUFFER_CTX *b;-
75-
76 if (a ==
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
77 ((void *)0)
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
78 )-
79 return
never executed: return 0;
0;
never executed: return 0;
0
80 b = (BIO_LINEBUFFER_CTX *)a->ptr;-
81 CRYPTO_free(b->obuf, __FILE__, 88);-
82 CRYPTO_free(a->ptr, __FILE__, 89);-
83 a->ptr = -
84 ((void *)0)-
85 ;-
86 a->init = 0;-
87 a->flags = 0;-
88 return
never executed: return 1;
1;
never executed: return 1;
0
89}-
90-
91static int linebuffer_read(BIO *b, char *out, int outl)-
92{-
93 int ret = 0;-
94-
95 if (out ==
out == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
96 ((void *)0)
out == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
97 )-
98 return
never executed: return 0;
0;
never executed: return 0;
0
99 if (b->next_bio ==
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
100 ((void *)0)
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
101 )-
102 return
never executed: return 0;
0;
never executed: return 0;
0
103 ret = BIO_read(b->next_bio, out, outl);-
104 BIO_clear_flags(b, ((0x01|0x02|0x04)|0x08));-
105 BIO_copy_next_retry(b);-
106 return
never executed: return ret;
ret;
never executed: return ret;
0
107}-
108-
109static int linebuffer_write(BIO *b, const char *in, int inl)-
110{-
111 int i, num = 0, foundnl;-
112 BIO_LINEBUFFER_CTX *ctx;-
113-
114 if ((
(in == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
in ==
(in == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
115 ((void *)0)
(in == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
116 )
(in == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
|| (
(inl <= 0)Description
TRUEnever evaluated
FALSEnever evaluated
inl <= 0)
(inl <= 0)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
117 return
never executed: return 0;
0;
never executed: return 0;
0
118 ctx = (BIO_LINEBUFFER_CTX *)b->ptr;-
119 if ((
(ctx == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
ctx ==
(ctx == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
120 ((void *)0)
(ctx == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
121 )
(ctx == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
|| (
(b->next_bio == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
b->next_bio ==
(b->next_bio == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
122 ((void *)0)
(b->next_bio == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
123 )
(b->next_bio == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
)
0
124 return
never executed: return 0;
0;
never executed: return 0;
0
125-
126 BIO_clear_flags(b, ((0x01|0x02|0x04)|0x08));-
127-
128 do {-
129 const char *p;-
130 char c;-
131-
132 for (p = in, c = '\0'; p < in + inl
p < in + inlDescription
TRUEnever evaluated
FALSEnever evaluated
&& (
(c = *p) != '\n'Description
TRUEnever evaluated
FALSEnever evaluated
c = *p) != '\n'
(c = *p) != '\n'Description
TRUEnever evaluated
FALSEnever evaluated
; p++) ;
never executed: ;
0
133 if (c == '\n'
c == '\n'Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
134 p++;-
135 foundnl = 1;-
136 }
never executed: end of block
else
0
137 foundnl = 0;
never executed: foundnl = 0;
0
138-
139-
140-
141-
142-
143 while ((foundnl
foundnlDescription
TRUEnever evaluated
FALSEnever evaluated
|| p - in > ctx->obuf_size - ctx->obuf_len
p - in > ctx->... ctx->obuf_lenDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
144 && ctx->obuf_len > 0
ctx->obuf_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
145 int orig_olen = ctx->obuf_len;-
146-
147 i = ctx->obuf_size - ctx->obuf_len;-
148 if (p - in > 0
p - in > 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
149 if (i >= p - in
i >= p - inDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
150 memcpy(&(ctx->obuf[ctx->obuf_len]), in, p - in);-
151 ctx->obuf_len += p - in;-
152 inl -= p - in;-
153 num += p - in;-
154 in = p;-
155 }
never executed: end of block
else {
0
156 memcpy(&(ctx->obuf[ctx->obuf_len]), in, i);-
157 ctx->obuf_len += i;-
158 inl -= i;-
159 in += i;-
160 num += i;-
161 }
never executed: end of block
0
162 }-
163 i = BIO_write(b->next_bio, ctx->obuf, ctx->obuf_len);-
164 if (i <= 0
i <= 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
165 ctx->obuf_len = orig_olen;-
166 BIO_copy_next_retry(b);-
167-
168 if (i < 0
i < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
169 return
never executed: return ((num > 0) ? num : i);
((
(num > 0)Description
TRUEnever evaluated
FALSEnever evaluated
num > 0)
(num > 0)Description
TRUEnever evaluated
FALSEnever evaluated
? num : i);
never executed: return ((num > 0) ? num : i);
0
170 if (i == 0
i == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
171 return
never executed: return num;
num;
never executed: return num;
0
172 }
never executed: end of block
0
173 if (i < ctx->obuf_len
i < ctx->obuf_lenDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
174 memmove(ctx->obuf, ctx->obuf + i, ctx->obuf_len - i);
never executed: memmove(ctx->obuf, ctx->obuf + i, ctx->obuf_len - i);
0
175 ctx->obuf_len -= i;-
176 }
never executed: end of block
0
177-
178-
179-
180-
181-
182 if ((foundnl
foundnlDescription
TRUEnever evaluated
FALSEnever evaluated
|| p - in > ctx->obuf_size
p - in > ctx->obuf_sizeDescription
TRUEnever evaluated
FALSEnever evaluated
) && p - in > 0
p - in > 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
183 i = BIO_write(b->next_bio, in, p - in);-
184 if (i <= 0
i <= 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
185 BIO_copy_next_retry(b);-
186 if (i < 0
i < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
187 return
never executed: return ((num > 0) ? num : i);
((
(num > 0)Description
TRUEnever evaluated
FALSEnever evaluated
num > 0)
(num > 0)Description
TRUEnever evaluated
FALSEnever evaluated
? num : i);
never executed: return ((num > 0) ? num : i);
0
188 if (i == 0
i == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
189 return
never executed: return num;
num;
never executed: return num;
0
190 }
never executed: end of block
0
191 num += i;-
192 in += i;-
193 inl -= i;-
194 }
never executed: end of block
0
195 }
never executed: end of block
0
196 while (foundnl
foundnlDescription
TRUEnever evaluated
FALSEnever evaluated
&& inl > 0
inl > 0Description
TRUEnever evaluated
FALSEnever evaluated
);
0
197-
198-
199-
200-
201-
202 if (inl > 0
inl > 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
203 memcpy(&(ctx->obuf[ctx->obuf_len]), in, inl);-
204 ctx->obuf_len += inl;-
205 num += inl;-
206 }
never executed: end of block
0
207 return
never executed: return num;
num;
never executed: return num;
0
208}-
209-
210static long linebuffer_ctrl(BIO *b, int cmd, long num, void *ptr)-
211{-
212 BIO *dbio;-
213 BIO_LINEBUFFER_CTX *ctx;-
214 long ret = 1;-
215 char *p;-
216 int r;-
217 int obs;-
218-
219 ctx = (BIO_LINEBUFFER_CTX *)b->ptr;-
220-
221 switch (cmd) {-
222 case
never executed: case 1:
1:
never executed: case 1:
0
223 ctx->obuf_len = 0;-
224 if (b->next_bio ==
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
225 ((void *)0)
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
226 )-
227 return
never executed: return 0;
0;
never executed: return 0;
0
228 ret = BIO_ctrl(b->next_bio, cmd, num, ptr);-
229 break;
never executed: break;
0
230 case
never executed: case 3:
3:
never executed: case 3:
0
231 ret = (long)ctx->obuf_len;-
232 break;
never executed: break;
0
233 case
never executed: case 13:
13:
never executed: case 13:
0
234 ret = (long)ctx->obuf_len;-
235 if (ret == 0
ret == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
236 if (b->next_bio ==
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
237 ((void *)0)
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
238 )-
239 return
never executed: return 0;
0;
never executed: return 0;
0
240 ret = BIO_ctrl(b->next_bio, cmd, num, ptr);-
241 }
never executed: end of block
0
242 break;
never executed: break;
0
243 case
never executed: case 117:
117:
never executed: case 117:
0
244 obs = (int)num;-
245 p = ctx->obuf;-
246 if ((
(obs > 1024*10)Description
TRUEnever evaluated
FALSEnever evaluated
obs > 1024*10)
(obs > 1024*10)Description
TRUEnever evaluated
FALSEnever evaluated
&& (
(obs != ctx->obuf_size)Description
TRUEnever evaluated
FALSEnever evaluated
obs != ctx->obuf_size)
(obs != ctx->obuf_size)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
247 p = CRYPTO_malloc((int)num, __FILE__, 238);-
248 if (p ==
p == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
249 ((void *)0)
p == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
250 )-
251 goto
never executed: goto malloc_error;
malloc_error;
never executed: goto malloc_error;
0
252 }
never executed: end of block
0
253 if (ctx->obuf != p
ctx->obuf != pDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
254 if (ctx->obuf_len > obs
ctx->obuf_len > obsDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
255 ctx->obuf_len = obs;-
256 }
never executed: end of block
0
257 memcpy(p, ctx->obuf, ctx->obuf_len);-
258 CRYPTO_free(ctx->obuf, __FILE__, 247);-
259 ctx->obuf = p;-
260 ctx->obuf_size = obs;-
261 }
never executed: end of block
0
262 break;
never executed: break;
0
263 case
never executed: case 101:
101:
never executed: case 101:
0
264 if (b->next_bio ==
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
265 ((void *)0)
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
266 )-
267 return
never executed: return 0;
0;
never executed: return 0;
0
268 BIO_clear_flags(b, ((0x01|0x02|0x04)|0x08));-
269 ret = BIO_ctrl(b->next_bio, cmd, num, ptr);-
270 BIO_copy_next_retry(b);-
271 break;
never executed: break;
0
272-
273 case
never executed: case 11:
11:
never executed: case 11:
0
274 if (b->next_bio ==
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
275 ((void *)0)
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
276 )-
277 return
never executed: return 0;
0;
never executed: return 0;
0
278 if (ctx->obuf_len <= 0
ctx->obuf_len <= 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
279 ret = BIO_ctrl(b->next_bio, cmd, num, ptr);-
280 break;
never executed: break;
0
281 }-
282-
283 for (;;) {-
284 BIO_clear_flags(b, ((0x01|0x02|0x04)|0x08));-
285 if (ctx->obuf_len > 0
ctx->obuf_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
286 r = BIO_write(b->next_bio, ctx->obuf, ctx->obuf_len);-
287 BIO_copy_next_retry(b);-
288 if (r <= 0
r <= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
289 return
never executed: return (long)r;
(long)r;
never executed: return (long)r;
0
290 if (r < ctx->obuf_len
r < ctx->obuf_lenDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
291 memmove(ctx->obuf, ctx->obuf + r, ctx->obuf_len - r);
never executed: memmove(ctx->obuf, ctx->obuf + r, ctx->obuf_len - r);
0
292 ctx->obuf_len -= r;-
293 }
never executed: end of block
else {
0
294 ctx->obuf_len = 0;-
295 break;
never executed: break;
0
296 }-
297 }-
298 ret = BIO_ctrl(b->next_bio, cmd, num, ptr);-
299 break;
never executed: break;
0
300 case
never executed: case 12:
12:
never executed: case 12:
0
301 dbio = (BIO *)ptr;-
302 if (!BIO_int_ctrl(dbio,117,ctx->obuf_size,1)
!BIO_int_ctrl(...->obuf_size,1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
303 ret = 0;
never executed: ret = 0;
0
304 break;
never executed: break;
0
305 default
never executed: default:
:
never executed: default:
0
306 if (b->next_bio ==
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
307 ((void *)0)
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
308 )-
309 return
never executed: return 0;
0;
never executed: return 0;
0
310 ret = BIO_ctrl(b->next_bio, cmd, num, ptr);-
311 break;
never executed: break;
0
312 }-
313 return
never executed: return ret;
ret;
never executed: return ret;
0
314 malloc_error:-
315 ERR_put_error(32,(129),((1|64)),__FILE__,298);-
316 return
never executed: return 0;
0;
never executed: return 0;
0
317}-
318-
319static long linebuffer_callback_ctrl(BIO *b, int cmd, BIO_info_cb *fp)-
320{-
321 long ret = 1;-
322-
323 if (b->next_bio ==
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
324 ((void *)0)
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
325 )-
326 return
never executed: return 0;
0;
never executed: return 0;
0
327 switch (cmd) {-
328 default
never executed: default:
:
never executed: default:
0
329 ret = BIO_callback_ctrl(b->next_bio, cmd, fp);-
330 break;
never executed: break;
0
331 }-
332 return
never executed: return ret;
ret;
never executed: return ret;
0
333}-
334-
335static int linebuffer_gets(BIO *b, char *buf, int size)-
336{-
337 if (b->next_bio ==
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
338 ((void *)0)
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
339 )-
340 return
never executed: return 0;
0;
never executed: return 0;
0
341 return
never executed: return BIO_gets(b->next_bio, buf, size);
BIO_gets(b->next_bio, buf, size);
never executed: return BIO_gets(b->next_bio, buf, size);
0
342}-
343-
344static int linebuffer_puts(BIO *b, const char *str)-
345{-
346 return
never executed: return linebuffer_write(b, str, strlen(str));
linebuffer_write(b, str, strlen(str));
never executed: return linebuffer_write(b, str, strlen(str));
0
347}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2