OpenCoverage

tls_client.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/tls/tls_client.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6struct tls *-
7tls_client(void)-
8{-
9 struct tls *ctx;-
10-
11 if (tls_init() == -1
tls_init() == -1Description
TRUEnever evaluated
FALSEevaluated 30 times by 2 tests
Evaluated by:
  • tlstest
  • verifytest
)
0-30
12 return
never executed: return ( ((void *)0) );
(
never executed: return ( ((void *)0) );
0
13 ((void *)0)
never executed: return ( ((void *)0) );
0
14 );
never executed: return ( ((void *)0) );
0
15-
16 if ((
(ctx = tls_new...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 30 times by 2 tests
Evaluated by:
  • tlstest
  • verifytest
ctx = tls_new()) ==
(ctx = tls_new...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 30 times by 2 tests
Evaluated by:
  • tlstest
  • verifytest
0-30
17 ((void *)0)
(ctx = tls_new...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 30 times by 2 tests
Evaluated by:
  • tlstest
  • verifytest
0-30
18 )-
19 return
never executed: return ( ((void *)0) );
(
never executed: return ( ((void *)0) );
0
20 ((void *)0)
never executed: return ( ((void *)0) );
0
21 );
never executed: return ( ((void *)0) );
0
22-
23 ctx->flags |= (1 << 0);-
24-
25 return
executed 30 times by 2 tests: return (ctx);
Executed by:
  • tlstest
  • verifytest
(ctx);
executed 30 times by 2 tests: return (ctx);
Executed by:
  • tlstest
  • verifytest
30
26}-
27-
28int-
29tls_connect(struct tls *ctx, const char *host, const char *port)-
30{-
31 return
never executed: return tls_connect_servername(ctx, host, port, ((void *)0) );
tls_connect_servername(ctx, host, port,
never executed: return tls_connect_servername(ctx, host, port, ((void *)0) );
0
32 ((void *)0)
never executed: return tls_connect_servername(ctx, host, port, ((void *)0) );
0
33 );
never executed: return tls_connect_servername(ctx, host, port, ((void *)0) );
0
34}-
35-
36int-
37tls_connect_servername(struct tls *ctx, const char *host, const char *port,-
38 const char *servername)-
39{-
40 struct addrinfo hints, *res, *res0;-
41 const char *h = -
42 ((void *)0)-
43 , *p = -
44 ((void *)0)-
45 ;-
46 char *hs = -
47 ((void *)0)-
48 , *ps = -
49 ((void *)0)-
50 ;-
51 int rv = -1, s = -1, ret;-
52-
53 if ((
(ctx->flags & (1 << 0)) == 0Description
TRUEnever evaluated
FALSEnever evaluated
ctx->flags & (1 << 0)) == 0
(ctx->flags & (1 << 0)) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
54 tls_set_errorx(ctx, "not a client context");-
55 goto
never executed: goto err;
err;
never executed: goto err;
0
56 }-
57-
58 if (host ==
host == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
59 ((void *)0)
host == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
60 ) {-
61 tls_set_errorx(ctx, "host not specified");-
62 goto
never executed: goto err;
err;
never executed: goto err;
0
63 }-
64-
65-
66-
67-
68-
69 if ((
(p = (char *)p...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
p = (char *)port) ==
(p = (char *)p...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
70 ((void *)0)
(p = (char *)p...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
71 ) {-
72 ret = tls_host_port(host, &hs, &ps);-
73 if (ret == -1
ret == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
74 tls_set_errorx(ctx, "memory allocation failure");-
75 goto
never executed: goto err;
err;
never executed: goto err;
0
76 }-
77 if (ret != 0
ret != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
78 tls_set_errorx(ctx, "no port provided");-
79 goto
never executed: goto err;
err;
never executed: goto err;
0
80 }-
81 }
never executed: end of block
0
82-
83 h = (
(hs != ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
hs !=
(hs != ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
84 ((void *)0)
(hs != ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
85 )
(hs != ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
? hs : host;
0
86 p = (
(ps != ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
ps !=
(ps != ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
87 ((void *)0)
(ps != ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
88 )
(ps != ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
? ps : port;
0
89 memset(&hints, 0, sizeof(hints));-
90 hints.ai_socktype = -
91 SOCK_STREAM-
92 ;-
93-
94-
95 hints.ai_family = -
96 2-
97 ;-
98 hints.ai_flags = -
99 0x0004-
100 ;-
101 if (getaddrinfo(h, p, &hints, &res0) != 0
getaddrinfo(h,...s, &res0) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
102-
103 hints.ai_family = -
104 10-
105 ;-
106 if (getaddrinfo(h, p, &hints, &res0) != 0
getaddrinfo(h,...s, &res0) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
107-
108 hints.ai_family = -
109 0-
110 ;-
111 hints.ai_flags = -
112 0x0020-
113 ;-
114 if ((
(s = getaddrin..., &res0)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
s = getaddrinfo(h, p, &hints, &res0)) != 0
(s = getaddrin..., &res0)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
115 tls_set_error(ctx, "%s", gai_strerror(s));-
116 goto
never executed: goto err;
err;
never executed: goto err;
0
117 }-
118 }
never executed: end of block
0
119 }
never executed: end of block
0
120-
121-
122 s = -1;-
123 for (res = res0; res
resDescription
TRUEnever evaluated
FALSEnever evaluated
; res = res->ai_next) {
0
124 s = socket(res->ai_family, res->ai_socktype, res->ai_protocol);-
125 if (s == -1
s == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
126 tls_set_error(ctx, "socket");-
127 continue;
never executed: continue;
0
128 }-
129 if (connect(s, res->ai_addr, res->ai_addrlen) == -1
connect(s, res...addrlen) == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
130 tls_set_error(ctx, "connect");-
131 close(s);-
132 s = -1;-
133 continue;
never executed: continue;
0
134 }-
135-
136 break;
never executed: break;
0
137 }-
138 freeaddrinfo(res0);-
139-
140 if (s == -1
s == -1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
141 goto
never executed: goto err;
err;
never executed: goto err;
0
142-
143 if (servername ==
servername == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
144 ((void *)0)
servername == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
145 )-
146 servername = h;
never executed: servername = h;
0
147-
148 if (tls_connect_socket(ctx, s, servername) != 0
tls_connect_so...rvername) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
149 close(s);-
150 goto
never executed: goto err;
err;
never executed: goto err;
0
151 }-
152-
153 ctx->socket = s;-
154-
155 rv = 0;-
156-
157 err:
code before this statement never executed: err:
0
158 free(hs);-
159 free(ps);-
160-
161 return
never executed: return (rv);
(rv);
never executed: return (rv);
0
162}-
163-
164static int-
165tls_client_read_session(struct tls *ctx)-
166{-
167 int sfd = ctx->config->session_fd;-
168 uint8_t *session = -
169 ((void *)0)-
170 ;-
171 size_t session_len = 0;-
172 SSL_SESSION *ss = -
173 ((void *)0)-
174 ;-
175 BIO *bio = -
176 ((void *)0)-
177 ;-
178 struct stat sb;-
179 ssize_t n;-
180 int rv = -1;-
181-
182 if (fstat(sfd, &sb) == -1
fstat(sfd, &sb) == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
183 tls_set_error(ctx, "failed to stat session file");-
184 goto
never executed: goto err;
err;
never executed: goto err;
0
185 }-
186 if (sb.st_size < 0
sb.st_size < 0Description
TRUEnever evaluated
FALSEnever evaluated
|| sb.st_size > 0x7fffffff
sb.st_size > 0x7fffffffDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
187 tls_set_errorx(ctx, "invalid session file size");-
188 goto
never executed: goto err;
err;
never executed: goto err;
0
189 }-
190 session_len = (size_t)sb.st_size;-
191-
192-
193 if (session_len == 0
session_len == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
194 goto
never executed: goto done;
done;
never executed: goto done;
0
195-
196 if ((
(session = mal...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
session = malloc(session_len)) ==
(session = mal...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
197 ((void *)0)
(session = mal...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
198 )-
199 goto
never executed: goto err;
err;
never executed: goto err;
0
200-
201 n = pread(sfd, session, session_len, 0);-
202 if (n < 0
n < 0Description
TRUEnever evaluated
FALSEnever evaluated
|| (
(size_t)n != session_lenDescription
TRUEnever evaluated
FALSEnever evaluated
size_t)n != session_len
(size_t)n != session_lenDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
203 tls_set_error(ctx, "failed to read session file");-
204 goto
never executed: goto err;
err;
never executed: goto err;
0
205 }-
206 if ((
(bio = BIO_new...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
bio = BIO_new_mem_buf(session, session_len)) ==
(bio = BIO_new...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
207 ((void *)0)
(bio = BIO_new...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
208 )-
209 goto
never executed: goto err;
err;
never executed: goto err;
0
210 if ((
(ss = PEM_read...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ss = PEM_read_bio_SSL_SESSION(bio,
(ss = PEM_read...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
211 ((void *)0)
(ss = PEM_read...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
212 , tls_password_cb,
(ss = PEM_read...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
213
(ss = PEM_read...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
214 ((void *)0)
(ss = PEM_read...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
215 )) ==
(ss = PEM_read...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
216 ((void *)0)
(ss = PEM_read...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
217 ) {-
218 tls_set_errorx(ctx, "failed to parse session");-
219 goto
never executed: goto err;
err;
never executed: goto err;
0
220 }-
221-
222 if (SSL_set_session(ctx->ssl_conn, ss) != 1
SSL_set_sessio...conn, ss) != 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
223 tls_set_errorx(ctx, "failed to set session");-
224 goto
never executed: goto err;
err;
never executed: goto err;
0
225 }-
226-
227 done:
code before this statement never executed: done:
0
228 rv = 0;-
229-
230 err:
code before this statement never executed: err:
0
231 freezero(session, session_len);-
232 SSL_SESSION_free(ss);-
233 BIO_free(bio);-
234-
235 return
never executed: return rv;
rv;
never executed: return rv;
0
236}-
237-
238static int-
239tls_client_write_session(struct tls *ctx)-
240{-
241 int sfd = ctx->config->session_fd;-
242 SSL_SESSION *ss = -
243 ((void *)0)-
244 ;-
245 BIO *bio = -
246 ((void *)0)-
247 ;-
248 long data_len;-
249 char *data;-
250 off_t offset;-
251 size_t len;-
252 ssize_t n;-
253 int rv = -1;-
254-
255 if ((
(ss = SSL_get1...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ss = SSL_get1_session(ctx->ssl_conn)) ==
(ss = SSL_get1...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
256 ((void *)0)
(ss = SSL_get1...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
257 ) {-
258 if (ftruncate(sfd, 0) == -1
ftruncate(sfd, 0) == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
259 tls_set_error(ctx, "failed to truncate session file");-
260 goto
never executed: goto err;
err;
never executed: goto err;
0
261 }-
262 goto
never executed: goto done;
done;
never executed: goto done;
0
263 }-
264-
265 if ((
(bio = BIO_new...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
bio = BIO_new(BIO_s_mem())) ==
(bio = BIO_new...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
266 ((void *)0)
(bio = BIO_new...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
267 )-
268 goto
never executed: goto err;
err;
never executed: goto err;
0
269 if (PEM_write_bio_SSL_SESSION(bio, ss) == 0
PEM_write_bio_...(bio, ss) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
270 goto
never executed: goto err;
err;
never executed: goto err;
0
271 if ((
(data_len = BI...*)&data)) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
data_len = BIO_ctrl(bio,3,0,(char *)&data)) <= 0
(data_len = BI...*)&data)) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
272 goto
never executed: goto err;
err;
never executed: goto err;
0
273-
274 len = (size_t)data_len;-
275 offset = 0;-
276-
277 if (ftruncate(sfd, len) == -1
ftruncate(sfd, len) == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
278 tls_set_error(ctx, "failed to truncate session file");-
279 goto
never executed: goto err;
err;
never executed: goto err;
0
280 }-
281 while (len > 0
len > 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
282 if ((
(n = pwrite(sf...offset)) == -1Description
TRUEnever evaluated
FALSEnever evaluated
n = pwrite(sfd, data + offset, len, offset)) == -1
(n = pwrite(sf...offset)) == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
283 tls_set_error(ctx, "failed to write session file");-
284 goto
never executed: goto err;
err;
never executed: goto err;
0
285 }-
286 offset += n;-
287 len -= n;-
288 }
never executed: end of block
0
289-
290 done:
code before this statement never executed: done:
0
291 rv = 0;-
292-
293 err:
code before this statement never executed: err:
0
294 SSL_SESSION_free(ss);-
295 BIO_free_all(bio);-
296-
297 return
never executed: return (rv);
(rv);
never executed: return (rv);
0
298}-
299-
300static int-
301tls_connect_common(struct tls *ctx, const char *servername)-
302{-
303 union tls_addr addrbuf;-
304 int rv = -1;-
305-
306 if ((
(ctx->flags & (1 << 0)) == 0Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
ctx->flags & (1 << 0)) == 0
(ctx->flags & (1 << 0)) == 0Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
) {
0-4
307 tls_set_errorx(ctx, "not a client context");-
308 goto
never executed: goto err;
err;
never executed: goto err;
0
309 }-
310-
311 if (servername !=
servername != ((void *)0)Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
FALSEnever evaluated
0-4
312 ((void *)0)
servername != ((void *)0)Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
FALSEnever evaluated
0-4
313 ) {-
314 if ((
(ctx->serverna...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
ctx->servername =
(ctx->serverna...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
315 (__extension__ (__builtin_constant_p (
__builtin_cons...( servername )Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
(ctx->serverna...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
316 servername
__builtin_cons...( servername )Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
(ctx->serverna...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
317 )
__builtin_cons...( servername )Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
&& ((
((size_t)(cons...ername ) == 1)Description
TRUEnever evaluated
FALSEnever evaluated
size_t)(const void *)((
((size_t)(cons...ername ) == 1)Description
TRUEnever evaluated
FALSEnever evaluated
(ctx->serverna...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
318 servername
((size_t)(cons...ername ) == 1)Description
TRUEnever evaluated
FALSEnever evaluated
(ctx->serverna...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
319 ) + 1) - (size_t)(const void *)(
((size_t)(cons...ername ) == 1)Description
TRUEnever evaluated
FALSEnever evaluated
(ctx->serverna...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
320 servername
((size_t)(cons...ername ) == 1)Description
TRUEnever evaluated
FALSEnever evaluated
(ctx->serverna...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
321 ) == 1)
((size_t)(cons...ername ) == 1)Description
TRUEnever evaluated
FALSEnever evaluated
? (((const
((const char *... ))[0] == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
char *) (
((const char *... ))[0] == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
(ctx->serverna...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
322 servername
((const char *... ))[0] == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
(ctx->serverna...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
323 ))[0] == '\0'
((const char *... ))[0] == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
? (char *) calloc ((size_t) 1, (size_t) 1) : ({ size_t __len = strlen (
(ctx->serverna...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
324 servername
(ctx->serverna...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
325 ) + 1; char *__retval = (char *) malloc (__len); if (__retval != ((void *)0)
__retval != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
) __retval = (char *) memcpy (__retval,
never executed: __retval = (char *) memcpy (__retval, servername , __len);
(ctx->serverna...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
326 servername
(ctx->serverna...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
never executed: __retval = (char *) memcpy (__retval, servername , __len);
0-4
327 , __len);
(ctx->serverna...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
never executed: __retval = (char *) memcpy (__retval, servername , __len);
__retval; })) : __strdup (
(ctx->serverna...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
328 servername
(ctx->serverna...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
329 )))
(ctx->serverna...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
330 ) ==
(ctx->serverna...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
331 ((void *)0)
(ctx->serverna...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
332 ) {-
333 tls_set_errorx(ctx, "out of memory");-
334 goto
never executed: goto err;
err;
never executed: goto err;
0
335 }-
336 }
executed 4 times by 1 test: end of block
Executed by:
  • tlstest
4
337-
338 if ((
(ctx->ssl_ctx ...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
ctx->ssl_ctx = SSL_CTX_new(SSLv23_client_method())) ==
(ctx->ssl_ctx ...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
339 ((void *)0)
(ctx->ssl_ctx ...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
340 ) {-
341 tls_set_errorx(ctx, "ssl context failure");-
342 goto
never executed: goto err;
err;
never executed: goto err;
0
343 }-
344-
345 if (tls_configure_ssl(ctx, ctx->ssl_ctx) != 0
tls_configure_...>ssl_ctx) != 0Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
)
0-4
346 goto
never executed: goto err;
err;
never executed: goto err;
0
347-
348 if (tls_configure_ssl_keypair(ctx, ctx->ssl_ctx,
tls_configure_...ypair, 0) != 0Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
349 ctx->config->keypair, 0) != 0
tls_configure_...ypair, 0) != 0Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
)
0-4
350 goto
never executed: goto err;
err;
never executed: goto err;
0
351-
352 if (ctx->config->verify_name
ctx->config->verify_nameDescription
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
) {
0-4
353 if (servername ==
servername == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
354 ((void *)0)
servername == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
355 ) {-
356 tls_set_errorx(ctx, "server name not specified");-
357 goto
never executed: goto err;
err;
never executed: goto err;
0
358 }-
359 }
never executed: end of block
0
360-
361 if (tls_configure_ssl_verify(ctx, ctx->ssl_ctx, 0x01) == -1
tls_configure_...x, 0x01) == -1Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
)
0-4
362 goto
never executed: goto err;
err;
never executed: goto err;
0
363-
364 if (ctx->config->ecdhecurves !=
ctx->config->e...!= ((void *)0)Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
FALSEnever evaluated
0-4
365 ((void *)0)
ctx->config->e...!= ((void *)0)Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
FALSEnever evaluated
0-4
366 ) {-
367 if (SSL_CTX_set1_groups(ctx->ssl_ctx, ctx->config->ecdhecurves,
SSL_CTX_set1_g...rves_len) != 1Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
368 ctx->config->ecdhecurves_len) != 1
SSL_CTX_set1_g...rves_len) != 1Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
) {
0-4
369 tls_set_errorx(ctx, "failed to set ecdhe curves");-
370 goto
never executed: goto err;
err;
never executed: goto err;
0
371 }-
372 }
executed 4 times by 1 test: end of block
Executed by:
  • tlstest
4
373-
374 if (SSL_CTX_callback_ctrl(ctx->ssl_ctx,63,(void (*)(void))tls_ocsp_verify_cb) != 1
SSL_CTX_callba...erify_cb) != 1Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
) {
0-4
375 tls_set_errorx(ctx, "ssl OCSP verification setup failure");-
376 goto
never executed: goto err;
err;
never executed: goto err;
0
377 }-
378-
379 if ((
(ctx->ssl_conn...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
ctx->ssl_conn = SSL_new(ctx->ssl_ctx)) ==
(ctx->ssl_conn...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
380 ((void *)0)
(ctx->ssl_conn...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
381 ) {-
382 tls_set_errorx(ctx, "ssl connection failure");-
383 goto
never executed: goto err;
err;
never executed: goto err;
0
384 }-
385-
386 if ((
(SSL_set_ex_da...r *)ctx)) != 1Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
SSL_set_ex_data(ctx->ssl_conn,0,(char *)ctx)) != 1
(SSL_set_ex_da...r *)ctx)) != 1Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
) {
0-4
387 tls_set_errorx(ctx, "ssl application data failure");-
388 goto
never executed: goto err;
err;
never executed: goto err;
0
389 }-
390-
391 if (ctx->config->session_fd != -1
ctx->config->session_fd != -1Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
) {
0-4
392 SSL_ctrl((ctx->ssl_conn),77,(0x00004000L),-
393 ((void *)0)-
394 );-
395 if (tls_client_read_session(ctx) == -1
tls_client_rea...ion(ctx) == -1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
396 goto
never executed: goto err;
err;
never executed: goto err;
0
397 }
never executed: end of block
0
398-
399 if (SSL_ctrl(ctx->ssl_conn,65,1,
SSL_ctrl(ctx->...id *)0) ) != 1Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
400 ((void *)0)
SSL_ctrl(ctx->...id *)0) ) != 1Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
0-4
401 ) != 1
SSL_ctrl(ctx->...id *)0) ) != 1Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
) {
0-4
402 tls_set_errorx(ctx, "ssl OCSP extension setup failure");-
403 goto
never executed: goto err;
err;
never executed: goto err;
0
404 }-
405-
406-
407-
408-
409-
410 if (servername !=
servername != ((void *)0)Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
FALSEnever evaluated
0-4
411 ((void *)0)
servername != ((void *)0)Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
FALSEnever evaluated
0-4
412 &&-
413 inet_pton(
inet_pton( 2 ,...&addrbuf) != 1Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
FALSEnever evaluated
0-4
414 2
inet_pton( 2 ,...&addrbuf) != 1Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
FALSEnever evaluated
0-4
415 , servername, &addrbuf) != 1
inet_pton( 2 ,...&addrbuf) != 1Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
FALSEnever evaluated
&&
0-4
416 inet_pton(
inet_pton( 10 ...&addrbuf) != 1Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
FALSEnever evaluated
0-4
417 10
inet_pton( 10 ...&addrbuf) != 1Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
FALSEnever evaluated
0-4
418 , servername, &addrbuf) != 1
inet_pton( 10 ...&addrbuf) != 1Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
FALSEnever evaluated
) {
0-4
419 if (SSL_ctrl(ctx->ssl_conn,55,0,(char *)servername) == 0
SSL_ctrl(ctx->...rvername) == 0Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
) {
0-4
420 tls_set_errorx(ctx, "server name indication failure");-
421 goto
never executed: goto err;
err;
never executed: goto err;
0
422 }-
423 }
executed 4 times by 1 test: end of block
Executed by:
  • tlstest
4
424-
425 ctx->state |= (1 << 1);-
426 rv = 0;-
427-
428 err:
code before this statement executed 4 times by 1 test: err:
Executed by:
  • tlstest
4
429 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
430}-
431-
432int-
433tls_connect_socket(struct tls *ctx, int s, const char *servername)-
434{-
435 return
executed 1 time by 1 test: return tls_connect_fds(ctx, s, s, servername);
Executed by:
  • tlstest
tls_connect_fds(ctx, s, s, servername);
executed 1 time by 1 test: return tls_connect_fds(ctx, s, s, servername);
Executed by:
  • tlstest
1
436}-
437-
438int-
439tls_connect_fds(struct tls *ctx, int fd_read, int fd_write,-
440 const char *servername)-
441{-
442 int rv = -1;-
443-
444 if (fd_read < 0
fd_read < 0Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • tlstest
|| fd_write < 0
fd_write < 0Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • tlstest
) {
0-2
445 tls_set_errorx(ctx, "invalid file descriptors");-
446 goto
never executed: goto err;
err;
never executed: goto err;
0
447 }-
448-
449 if (tls_connect_common(ctx, servername) != 0
tls_connect_co...rvername) != 0Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • tlstest
)
0-2
450 goto
never executed: goto err;
err;
never executed: goto err;
0
451-
452 if (SSL_set_rfd(ctx->ssl_conn, fd_read) != 1
SSL_set_rfd(ct... fd_read) != 1Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • tlstest
||
0-2
453 SSL_set_wfd(ctx->ssl_conn, fd_write) != 1
SSL_set_wfd(ct...fd_write) != 1Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • tlstest
) {
0-2
454 tls_set_errorx(ctx, "ssl file descriptor failure");-
455 goto
never executed: goto err;
err;
never executed: goto err;
0
456 }-
457-
458 rv = 0;-
459 err:
code before this statement executed 2 times by 1 test: err:
Executed by:
  • tlstest
2
460 return
executed 2 times by 1 test: return (rv);
Executed by:
  • tlstest
(rv);
executed 2 times by 1 test: return (rv);
Executed by:
  • tlstest
2
461}-
462-
463int-
464tls_connect_cbs(struct tls *ctx, tls_read_cb read_cb,-
465 tls_write_cb write_cb, void *cb_arg, const char *servername)-
466{-
467 int rv = -1;-
468-
469 if (tls_connect_common(ctx, servername) != 0
tls_connect_co...rvername) != 0Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • tlstest
)
0-2
470 goto
never executed: goto err;
err;
never executed: goto err;
0
471-
472 if (tls_set_cbs(ctx, read_cb, write_cb, cb_arg) != 0
tls_set_cbs(ct..., cb_arg) != 0Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • tlstest
)
0-2
473 goto
never executed: goto err;
err;
never executed: goto err;
0
474-
475 rv = 0;-
476-
477 err:
code before this statement executed 2 times by 1 test: err:
Executed by:
  • tlstest
2
478 return
executed 2 times by 1 test: return (rv);
Executed by:
  • tlstest
(rv);
executed 2 times by 1 test: return (rv);
Executed by:
  • tlstest
2
479}-
480-
481int-
482tls_handshake_client(struct tls *ctx)-
483{-
484 X509 *cert = -
485 ((void *)0)-
486 ;-
487 int match, ssl_ret;-
488 int rv = -1;-
489-
490 if ((
(ctx->flags & (1 << 0)) == 0Description
TRUEnever evaluated
FALSEevaluated 17 times by 1 test
Evaluated by:
  • tlstest
ctx->flags & (1 << 0)) == 0
(ctx->flags & (1 << 0)) == 0Description
TRUEnever evaluated
FALSEevaluated 17 times by 1 test
Evaluated by:
  • tlstest
) {
0-17
491 tls_set_errorx(ctx, "not a client context");-
492 goto
never executed: goto err;
err;
never executed: goto err;
0
493 }-
494-
495 if ((
(ctx->state & (1 << 1)) == 0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • tlstest
FALSEevaluated 16 times by 1 test
Evaluated by:
  • tlstest
ctx->state & (1 << 1)) == 0
(ctx->state & (1 << 1)) == 0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • tlstest
FALSEevaluated 16 times by 1 test
Evaluated by:
  • tlstest
) {
1-16
496 tls_set_errorx(ctx, "context not connected");-
497 goto
executed 1 time by 1 test: goto err;
Executed by:
  • tlstest
err;
executed 1 time by 1 test: goto err;
Executed by:
  • tlstest
1
498 }-
499-
500 ctx->state |= (1 << 3);-
501-
502 ERR_clear_error();-
503 if ((
(ssl_ret = SSL...sl_conn)) != 1Description
TRUEevaluated 12 times by 1 test
Evaluated by:
  • tlstest
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
ssl_ret = SSL_connect(ctx->ssl_conn)) != 1
(ssl_ret = SSL...sl_conn)) != 1Description
TRUEevaluated 12 times by 1 test
Evaluated by:
  • tlstest
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
) {
4-12
504 rv = tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "handshake");-
505 goto
executed 12 times by 1 test: goto err;
Executed by:
  • tlstest
err;
executed 12 times by 1 test: goto err;
Executed by:
  • tlstest
12
506 }-
507-
508 if (ctx->config->verify_name
ctx->config->verify_nameDescription
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
) {
0-4
509 cert = SSL_get_peer_certificate(ctx->ssl_conn);-
510 if (cert ==
cert == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
511 ((void *)0)
cert == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
512 ) {-
513 tls_set_errorx(ctx, "no server certificate");-
514 goto
never executed: goto err;
err;
never executed: goto err;
0
515 }-
516 if (tls_check_name(ctx, cert, ctx->servername, &match) == -1
tls_check_name... &match) == -1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
517 goto
never executed: goto err;
err;
never executed: goto err;
0
518 if (!match
!matchDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
519 tls_set_errorx(ctx, "name `%s' not present in"-
520 " server certificate", ctx->servername);-
521 goto
never executed: goto err;
err;
never executed: goto err;
0
522 }-
523 }
never executed: end of block
0
524-
525 ctx->state |= (1 << 2);-
526-
527 if (ctx->config->session_fd != -1
ctx->config->session_fd != -1Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tlstest
) {
0-4
528 if (tls_client_write_session(ctx) == -1
tls_client_wri...ion(ctx) == -1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
529 goto
never executed: goto err;
err;
never executed: goto err;
0
530 }
never executed: end of block
0
531-
532 rv = 0;-
533-
534 err:
code before this statement executed 4 times by 1 test: err:
Executed by:
  • tlstest
4
535 X509_free(cert);-
536-
537 return
executed 17 times by 1 test: return (rv);
Executed by:
  • tlstest
(rv);
executed 17 times by 1 test: return (rv);
Executed by:
  • tlstest
17
538}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2