OpenCoverage

tls_bio_cb.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/tls/tls_bio_cb.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4static int bio_cb_write(BIO *bio, const char *buf, int num);-
5static int bio_cb_read(BIO *bio, char *buf, int size);-
6static int bio_cb_puts(BIO *bio, const char *str);-
7static long bio_cb_ctrl(BIO *bio, int cmd, long num, void *ptr);-
8-
9static BIO_METHOD bio_cb_method = {-
10 .type = (1|0x0400),-
11 .name = "libtls_callbacks",-
12 .bwrite = bio_cb_write,-
13 .bread = bio_cb_read,-
14 .bputs = bio_cb_puts,-
15 .ctrl = bio_cb_ctrl,-
16};-
17-
18static BIO_METHOD *-
19bio_s_cb(void)-
20{-
21 return
executed 4 times by 1 test: return (&bio_cb_method);
Executed by:
  • tlstest
(&bio_cb_method);
executed 4 times by 1 test: return (&bio_cb_method);
Executed by:
  • tlstest
4
22}-
23-
24static int-
25bio_cb_puts(BIO *bio, const char *str)-
26{-
27 return
never executed: return (bio_cb_write(bio, str, strlen(str)));
(bio_cb_write(bio, str, strlen(str)));
never executed: return (bio_cb_write(bio, str, strlen(str)));
0
28}-
29-
30static long-
31bio_cb_ctrl(BIO *bio, int cmd, long num, void *ptr)-
32{-
33 long ret = 1;-
34-
35 switch (cmd) {-
36 case
never executed: case 8:
8:
never executed: case 8:
0
37 ret = (long)bio->shutdown;-
38 break;
never executed: break;
0
39 case
never executed: case 9:
9:
never executed: case 9:
0
40 bio->shutdown = (int)num;-
41 break;
never executed: break;
0
42 case
never executed: case 12:
12:
never executed: case 12:
0
43 case
executed 6 times by 1 test: case 11:
Executed by:
  • tlstest
11:
executed 6 times by 1 test: case 11:
Executed by:
  • tlstest
6
44 break;
executed 6 times by 1 test: break;
Executed by:
  • tlstest
6
45 case
never executed: case 3:
3:
never executed: case 3:
0
46 case
never executed: case 5:
5:
never executed: case 5:
0
47 case
never executed: case 4:
4:
never executed: case 4:
0
48 default
executed 8 times by 1 test: default:
Executed by:
  • tlstest
:
executed 8 times by 1 test: default:
Executed by:
  • tlstest
8
49 ret = BIO_ctrl(bio->next_bio, cmd, num, ptr);-
50 }
executed 8 times by 1 test: end of block
Executed by:
  • tlstest
8
51-
52 return
executed 14 times by 1 test: return (ret);
Executed by:
  • tlstest
(ret);
executed 14 times by 1 test: return (ret);
Executed by:
  • tlstest
14
53}-
54-
55static int-
56bio_cb_write(BIO *bio, const char *buf, int num)-
57{-
58 struct tls *ctx = bio->ptr;-
59 int rv;-
60-
61 BIO_clear_flags(bio, ((0x01|0x02|0x04)|0x08));-
62 rv = (ctx->write_cb)(ctx, buf, num, ctx->cb_arg);-
63 if (rv == -2
rv == -2Description
TRUEnever evaluated
FALSEevaluated 20 times by 1 test
Evaluated by:
  • tlstest
) {
0-20
64 BIO_set_flags(bio, (0x01|0x08));-
65 rv = -1;-
66 }
never executed: end of block
else if (rv == -3
rv == -3Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
FALSEevaluated 16 times by 1 test
Evaluated by:
  • tlstest
) {
0-16
67 BIO_set_flags(bio, (0x02|0x08));-
68 rv = -1;-
69 }
executed 4 times by 1 test: end of block
Executed by:
  • tlstest
4
70 return
executed 20 times by 1 test: return (rv);
Executed by:
  • tlstest
(rv);
executed 20 times by 1 test: return (rv);
Executed by:
  • tlstest
20
71}-
72-
73static int-
74bio_cb_read(BIO *bio, char *buf, int size)-
75{-
76 struct tls *ctx = bio->ptr;-
77 int rv;-
78-
79 BIO_clear_flags(bio, ((0x01|0x02|0x04)|0x08));-
80 rv = (ctx->read_cb)(ctx, buf, size, ctx->cb_arg);-
81 if (rv == -2
rv == -2Description
TRUEevaluated 10 times by 1 test
Evaluated by:
  • tlstest
FALSEevaluated 44 times by 1 test
Evaluated by:
  • tlstest
) {
10-44
82 BIO_set_flags(bio, (0x01|0x08));-
83 rv = -1;-
84 }
executed 10 times by 1 test: end of block
Executed by:
  • tlstest
else if (rv == -3
rv == -3Description
TRUEnever evaluated
FALSEevaluated 44 times by 1 test
Evaluated by:
  • tlstest
) {
0-44
85 BIO_set_flags(bio, (0x02|0x08));-
86 rv = -1;-
87 }
never executed: end of block
0
88 return
executed 54 times by 1 test: return (rv);
Executed by:
  • tlstest
(rv);
executed 54 times by 1 test: return (rv);
Executed by:
  • tlstest
54
89}-
90-
91int-
92tls_set_cbs(struct tls *ctx, tls_read_cb read_cb, tls_write_cb write_cb,-
93 void *cb_arg)-
94{-
95 int rv = -1;-
96 BIO *bio;-
97-
98 if (read_cb ==
read_cb == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
99 ((void *)0)
read_cb == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
100 || write_cb ==
write_cb == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
101 ((void *)0)
write_cb == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
102 ) {-
103 tls_set_errorx(ctx, "no callbacks provided");-
104 goto
never executed: goto err;
err;
never executed: goto err;
0
105 }-
106-
107 ctx->read_cb = read_cb;-
108 ctx->write_cb = write_cb;-
109 ctx->cb_arg = cb_arg;-
110-
111 if ((
(bio = BIO_new...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
bio = BIO_new(bio_s_cb())) ==
(bio = BIO_new...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
112 ((void *)0)
(bio = BIO_new...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
113 ) {-
114 tls_set_errorx(ctx, "failed to create callback i/o");-
115 goto
never executed: goto err;
err;
never executed: goto err;
0
116 }-
117 bio->ptr = ctx;-
118 bio->init = 1;-
119-
120 SSL_set_bio(ctx->ssl_conn, bio, bio);-
121-
122 rv = 0;-
123-
124 err:
code before this statement executed 4 times by 1 test: err:
Executed by:
  • tlstest
4
125 return
executed 4 times by 1 test: return (rv);
Executed by:
  • tlstest
(rv);
executed 4 times by 1 test: return (rv);
Executed by:
  • tlstest
4
126}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2