| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/ssl/ssl_asn1.c |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||
| 2 | - | |||||||||||||
| 3 | - | |||||||||||||
| 4 | static uint64_t | - | ||||||||||||
| 5 | time_max(void) | - | ||||||||||||
| 6 | { | - | ||||||||||||
| 7 | if (sizeof(time_t) == sizeof(int32_t)
| 0-3 | ||||||||||||
| 8 | return never executed: return (2147483647) ;never executed: return (2147483647) ; | 0 | ||||||||||||
| 9 | (2147483647) never executed: return (2147483647) ; | 0 | ||||||||||||
| 10 | ; never executed: return (2147483647) ; | 0 | ||||||||||||
| 11 | if (sizeof(time_t) == sizeof(int64_t)
| 0-3 | ||||||||||||
| 12 | return executed 3 times by 1 test: return (9223372036854775807L) ;Executed by:
executed 3 times by 1 test: return (9223372036854775807L) ;Executed by:
| 3 | ||||||||||||
| 13 | (9223372036854775807L) executed 3 times by 1 test: return (9223372036854775807L) ;Executed by:
| 3 | ||||||||||||
| 14 | ; executed 3 times by 1 test: return (9223372036854775807L) ;Executed by:
| 3 | ||||||||||||
| 15 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||
| 16 | } | - | ||||||||||||
| 17 | - | |||||||||||||
| 18 | static int | - | ||||||||||||
| 19 | SSL_SESSION_encode(SSL_SESSION *s, unsigned char **out, size_t *out_len, | - | ||||||||||||
| 20 | int ticket_encoding) | - | ||||||||||||
| 21 | { | - | ||||||||||||
| 22 | CBB cbb, session, cipher_suite, session_id, master_key, time, timeout; | - | ||||||||||||
| 23 | CBB peer_cert, sidctx, verify_result, hostname, lifetime, ticket, value; | - | ||||||||||||
| 24 | unsigned char *peer_cert_bytes = | - | ||||||||||||
| 25 | ((void *)0) | - | ||||||||||||
| 26 | ; | - | ||||||||||||
| 27 | int len, rv = 0; | - | ||||||||||||
| 28 | uint16_t cid; | - | ||||||||||||
| 29 | - | |||||||||||||
| 30 | if (!CBB_init(&cbb, 0)
| 0-67 | ||||||||||||
| 31 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 32 | - | |||||||||||||
| 33 | if (!CBB_add_asn1(&cbb, &session, (0x00 | 0x20 | 0x10))
| 0-67 | ||||||||||||
| 34 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 35 | - | |||||||||||||
| 36 | - | |||||||||||||
| 37 | if (!CBB_add_asn1_uint64(&session, 0x0001)
| 0-67 | ||||||||||||
| 38 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 39 | - | |||||||||||||
| 40 | - | |||||||||||||
| 41 | if (s->ssl_version < 0
| 0-67 | ||||||||||||
| 42 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 43 | if (!CBB_add_asn1_uint64(&session, s->ssl_version)
| 0-67 | ||||||||||||
| 44 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 45 | - | |||||||||||||
| 46 | - | |||||||||||||
| 47 | - | |||||||||||||
| 48 | cid = (uint16_t)(s->cipher_id & 0xffff); | - | ||||||||||||
| 49 | if (s->cipher !=
| 8-59 | ||||||||||||
| 50 | ((void *)0)
| 8-59 | ||||||||||||
| 51 | ) | - | ||||||||||||
| 52 | cid = ssl3_cipher_get_value(s->cipher); executed 59 times by 1 test: cid = ssl3_cipher_get_value(s->cipher);Executed by:
| 59 | ||||||||||||
| 53 | if (!CBB_add_asn1(&session, &cipher_suite, (0x00 | 0x00 | 0x4))
| 0-67 | ||||||||||||
| 54 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 55 | if (!CBB_add_u16(&cipher_suite, cid)
| 0-67 | ||||||||||||
| 56 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 57 | - | |||||||||||||
| 58 | - | |||||||||||||
| 59 | if (!CBB_add_asn1(&session, &session_id, (0x00 | 0x00 | 0x4))
| 0-67 | ||||||||||||
| 60 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 61 | if (!CBB_add_bytes(&session_id, s->session_id,
| 0-67 | ||||||||||||
| 62 | ticket_encoding ? 0 : s->session_id_length)
| 0-67 | ||||||||||||
| 63 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 64 | - | |||||||||||||
| 65 | - | |||||||||||||
| 66 | if (!CBB_add_asn1(&session, &master_key, (0x00 | 0x00 | 0x4))
| 0-67 | ||||||||||||
| 67 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 68 | if (!CBB_add_bytes(&master_key, s->master_key, s->master_key_length)
| 0-67 | ||||||||||||
| 69 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 70 | - | |||||||||||||
| 71 | - | |||||||||||||
| 72 | if (s->time != 0
| 5-62 | ||||||||||||
| 73 | if (s->time < 0
| 1-61 | ||||||||||||
| 74 | goto executed 1 time by 1 test: err;goto err;Executed by:
executed 1 time by 1 test: goto err;Executed by:
| 1 | ||||||||||||
| 75 | if (!CBB_add_asn1(&session, &time, ((0x20 | 0x80) | 1))
| 0-61 | ||||||||||||
| 76 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 77 | if (!CBB_add_asn1_uint64(&time, s->time)
| 0-61 | ||||||||||||
| 78 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 79 | } executed 61 times by 2 tests: end of blockExecuted by:
| 61 | ||||||||||||
| 80 | - | |||||||||||||
| 81 | - | |||||||||||||
| 82 | if (s->timeout != 0
| 4-62 | ||||||||||||
| 83 | if (s->timeout < 0
| 1-61 | ||||||||||||
| 84 | goto executed 1 time by 1 test: err;goto err;Executed by:
executed 1 time by 1 test: goto err;Executed by:
| 1 | ||||||||||||
| 85 | if (!CBB_add_asn1(&session, &timeout, ((0x20 | 0x80) | 2))
| 0-61 | ||||||||||||
| 86 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 87 | if (!CBB_add_asn1_uint64(&timeout, s->timeout)
| 0-61 | ||||||||||||
| 88 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 89 | } executed 61 times by 2 tests: end of blockExecuted by:
| 61 | ||||||||||||
| 90 | - | |||||||||||||
| 91 | - | |||||||||||||
| 92 | if (s->peer !=
| 9-56 | ||||||||||||
| 93 | ((void *)0)
| 9-56 | ||||||||||||
| 94 | ) { | - | ||||||||||||
| 95 | if ((
| 0-9 | ||||||||||||
| 96 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 97 | if (!CBB_add_asn1(&session, &peer_cert, ((0x20 | 0x80) | 3))
| 0-9 | ||||||||||||
| 98 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 99 | if (!CBB_add_bytes(&peer_cert, peer_cert_bytes, len)
| 0-9 | ||||||||||||
| 100 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 101 | } executed 9 times by 2 tests: end of blockExecuted by:
| 9 | ||||||||||||
| 102 | - | |||||||||||||
| 103 | - | |||||||||||||
| 104 | - | |||||||||||||
| 105 | if (!CBB_add_asn1(&session, &sidctx, ((0x20 | 0x80) | 4))
| 0-65 | ||||||||||||
| 106 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 107 | if (!CBB_add_asn1(&sidctx, &value, (0x00 | 0x00 | 0x4))
| 0-65 | ||||||||||||
| 108 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 109 | if (!CBB_add_bytes(&value, s->sid_ctx, s->sid_ctx_length)
| 0-65 | ||||||||||||
| 110 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 111 | - | |||||||||||||
| 112 | - | |||||||||||||
| 113 | if (s->verify_result != 0
| 3-62 | ||||||||||||
| 114 | if (s->verify_result < 0
| 0-3 | ||||||||||||
| 115 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 116 | if (!CBB_add_asn1(&session, &verify_result,
| 0-3 | ||||||||||||
| 117 | ((0x20 | 0x80) | 5))
| 0-3 | ||||||||||||
| 118 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 119 | if (!CBB_add_asn1_uint64(&verify_result, s->verify_result)
| 0-3 | ||||||||||||
| 120 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 121 | } executed 3 times by 2 tests: end of blockExecuted by:
| 3 | ||||||||||||
| 122 | - | |||||||||||||
| 123 | - | |||||||||||||
| 124 | if (s->tlsext_hostname !=
| 2-63 | ||||||||||||
| 125 | ((void *)0)
| 2-63 | ||||||||||||
| 126 | ) { | - | ||||||||||||
| 127 | if (!CBB_add_asn1(&session, &hostname, ((0x20 | 0x80) | 6))
| 0-2 | ||||||||||||
| 128 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 129 | if (!CBB_add_asn1(&hostname, &value, (0x00 | 0x00 | 0x4))
| 0-2 | ||||||||||||
| 130 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 131 | if (!CBB_add_bytes(&value, (const uint8_t *)s->tlsext_hostname,
| 0-2 | ||||||||||||
| 132 | strlen(s->tlsext_hostname))
| 0-2 | ||||||||||||
| 133 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 134 | } executed 2 times by 1 test: end of blockExecuted by:
| 2 | ||||||||||||
| 135 | - | |||||||||||||
| 136 | - | |||||||||||||
| 137 | - | |||||||||||||
| 138 | - | |||||||||||||
| 139 | - | |||||||||||||
| 140 | if (s->tlsext_tick_lifetime_hint > 0
| 2-63 | ||||||||||||
| 141 | if (!CBB_add_asn1(&session, &lifetime, ((0x20 | 0x80) | 9))
| 0-2 | ||||||||||||
| 142 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 143 | if (!CBB_add_asn1_uint64(&lifetime,
| 0-2 | ||||||||||||
| 144 | s->tlsext_tick_lifetime_hint)
| 0-2 | ||||||||||||
| 145 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 146 | } executed 2 times by 1 test: end of blockExecuted by:
| 2 | ||||||||||||
| 147 | - | |||||||||||||
| 148 | - | |||||||||||||
| 149 | if (s->tlsext_tick !=
| 2-63 | ||||||||||||
| 150 | ((void *)0)
| 2-63 | ||||||||||||
| 151 | ) { | - | ||||||||||||
| 152 | if (!CBB_add_asn1(&session, &ticket, ((0x20 | 0x80) | 10))
| 0-2 | ||||||||||||
| 153 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 154 | if (!CBB_add_asn1(&ticket, &value, (0x00 | 0x00 | 0x4))
| 0-2 | ||||||||||||
| 155 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 156 | if (!CBB_add_bytes(&value, s->tlsext_tick, s->tlsext_ticklen)
| 0-2 | ||||||||||||
| 157 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 158 | } executed 2 times by 1 test: end of blockExecuted by:
| 2 | ||||||||||||
| 159 | - | |||||||||||||
| 160 | - | |||||||||||||
| 161 | - | |||||||||||||
| 162 | - | |||||||||||||
| 163 | if (!CBB_finish(&cbb, out, out_len)
| 0-65 | ||||||||||||
| 164 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 165 | - | |||||||||||||
| 166 | rv = 1; | - | ||||||||||||
| 167 | - | |||||||||||||
| 168 | err: code before this statement executed 65 times by 2 tests: err:Executed by:
| 65 | ||||||||||||
| 169 | CBB_cleanup(&cbb); | - | ||||||||||||
| 170 | free(peer_cert_bytes); | - | ||||||||||||
| 171 | - | |||||||||||||
| 172 | return executed 67 times by 2 tests: rv;return rv;Executed by:
executed 67 times by 2 tests: return rv;Executed by:
| 67 | ||||||||||||
| 173 | } | - | ||||||||||||
| 174 | - | |||||||||||||
| 175 | int | - | ||||||||||||
| 176 | SSL_SESSION_ticket(SSL_SESSION *ss, unsigned char **out, size_t *out_len) | - | ||||||||||||
| 177 | { | - | ||||||||||||
| 178 | if (ss ==
| 0-59 | ||||||||||||
| 179 | ((void *)0)
| 0-59 | ||||||||||||
| 180 | ) | - | ||||||||||||
| 181 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||
| 182 | - | |||||||||||||
| 183 | if (ss->cipher ==
| 0-59 | ||||||||||||
| 184 | ((void *)0)
| 0-59 | ||||||||||||
| 185 | && ss->cipher_id == 0
| 0 | ||||||||||||
| 186 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||
| 187 | - | |||||||||||||
| 188 | return executed 59 times by 1 test: SSL_SESSION_encode(ss, out, out_len, 1);return SSL_SESSION_encode(ss, out, out_len, 1);Executed by:
executed 59 times by 1 test: return SSL_SESSION_encode(ss, out, out_len, 1);Executed by:
| 59 | ||||||||||||
| 189 | } | - | ||||||||||||
| 190 | - | |||||||||||||
| 191 | int | - | ||||||||||||
| 192 | i2d_SSL_SESSION(SSL_SESSION *ss, unsigned char **pp) | - | ||||||||||||
| 193 | { | - | ||||||||||||
| 194 | unsigned char *data = | - | ||||||||||||
| 195 | ((void *)0) | - | ||||||||||||
| 196 | ; | - | ||||||||||||
| 197 | size_t data_len = 0; | - | ||||||||||||
| 198 | int rv = -1; | - | ||||||||||||
| 199 | - | |||||||||||||
| 200 | if (ss ==
| 0-8 | ||||||||||||
| 201 | ((void *)0)
| 0-8 | ||||||||||||
| 202 | ) | - | ||||||||||||
| 203 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||
| 204 | - | |||||||||||||
| 205 | if (ss->cipher ==
| 0-8 | ||||||||||||
| 206 | ((void *)0)
| 0-8 | ||||||||||||
| 207 | && ss->cipher_id == 0
| 0-8 | ||||||||||||
| 208 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||
| 209 | - | |||||||||||||
| 210 | if (!SSL_SESSION_encode(ss, &data, &data_len, 0)
| 2-6 | ||||||||||||
| 211 | goto executed 2 times by 1 test: err;goto err;Executed by:
executed 2 times by 1 test: goto err;Executed by:
| 2 | ||||||||||||
| 212 | - | |||||||||||||
| 213 | if (data_len > 0x7fffffff
| 0-6 | ||||||||||||
| 214 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 215 | - | |||||||||||||
| 216 | if (pp !=
| 3 | ||||||||||||
| 217 | ((void *)0)
| 3 | ||||||||||||
| 218 | ) { | - | ||||||||||||
| 219 | if (*
| 0-3 | ||||||||||||
| 220 | ((void *)0)
| 0-3 | ||||||||||||
| 221 | ) { | - | ||||||||||||
| 222 | *pp = data; | - | ||||||||||||
| 223 | data = | - | ||||||||||||
| 224 | ((void *)0) | - | ||||||||||||
| 225 | ; | - | ||||||||||||
| 226 | } never executed: else {end of block | 0 | ||||||||||||
| 227 | memcpy(*pp, data, data_len); | - | ||||||||||||
| 228 | *pp += data_len; | - | ||||||||||||
| 229 | } executed 3 times by 1 test: end of blockExecuted by:
| 3 | ||||||||||||
| 230 | } | - | ||||||||||||
| 231 | - | |||||||||||||
| 232 | rv = (int)data_len; | - | ||||||||||||
| 233 | - | |||||||||||||
| 234 | err: code before this statement executed 6 times by 1 test: err:Executed by:
| 6 | ||||||||||||
| 235 | freezero(data, data_len); | - | ||||||||||||
| 236 | - | |||||||||||||
| 237 | return executed 8 times by 1 test: rv;return rv;Executed by:
executed 8 times by 1 test: return rv;Executed by:
| 8 | ||||||||||||
| 238 | } | - | ||||||||||||
| 239 | - | |||||||||||||
| 240 | SSL_SESSION * | - | ||||||||||||
| 241 | d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length) | - | ||||||||||||
| 242 | { | - | ||||||||||||
| 243 | CBS cbs, session, cipher_suite, session_id, master_key, peer_cert; | - | ||||||||||||
| 244 | CBS hostname, ticket; | - | ||||||||||||
| 245 | uint64_t version, tls_version, stime, timeout, verify_result, lifetime; | - | ||||||||||||
| 246 | const unsigned char *peer_cert_bytes; | - | ||||||||||||
| 247 | uint16_t cipher_value; | - | ||||||||||||
| 248 | SSL_SESSION *s = | - | ||||||||||||
| 249 | ((void *)0) | - | ||||||||||||
| 250 | ; | - | ||||||||||||
| 251 | size_t data_len; | - | ||||||||||||
| 252 | int present; | - | ||||||||||||
| 253 | - | |||||||||||||
| 254 | if (a !=
| 0-3 | ||||||||||||
| 255 | ((void *)0)
| 0-3 | ||||||||||||
| 256 | ) | - | ||||||||||||
| 257 | s = *a; executed 3 times by 1 test: s = *a;Executed by:
| 3 | ||||||||||||
| 258 | - | |||||||||||||
| 259 | if (s ==
| 0-3 | ||||||||||||
| 260 | ((void *)0)
| 0-3 | ||||||||||||
| 261 | ) { | - | ||||||||||||
| 262 | if ((
| 0 | ||||||||||||
| 263 | ((void *)0)
| 0 | ||||||||||||
| 264 | ) { | - | ||||||||||||
| 265 | ERR_put_error(20,(0xfff),((1|64)),__FILE__,260); | - | ||||||||||||
| 266 | return never executed: (return ( ((void *)0) );never executed: return ( ((void *)0) ); | 0 | ||||||||||||
| 267 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||
| 268 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||
| 269 | } | - | ||||||||||||
| 270 | } never executed: end of block | 0 | ||||||||||||
| 271 | - | |||||||||||||
| 272 | CBS_init(&cbs, *pp, length); | - | ||||||||||||
| 273 | - | |||||||||||||
| 274 | if (!CBS_get_asn1(&cbs, &session, (0x00 | 0x20 | 0x10))
| 0-3 | ||||||||||||
| 275 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 276 | - | |||||||||||||
| 277 | - | |||||||||||||
| 278 | if (!CBS_get_asn1_uint64(&session, &version)
| 0-3 | ||||||||||||
| 279 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 280 | if (version != 0x0001
| 0-3 | ||||||||||||
| 281 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 282 | - | |||||||||||||
| 283 | - | |||||||||||||
| 284 | if (!CBS_get_asn1_uint64(&session, &tls_version)
| 0-3 | ||||||||||||
| 285 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 286 | if (tls_version > 0x7fffffff
| 0-3 | ||||||||||||
| 287 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 288 | s->ssl_version = (int)tls_version; | - | ||||||||||||
| 289 | - | |||||||||||||
| 290 | - | |||||||||||||
| 291 | if (!CBS_get_asn1(&session, &cipher_suite, (0x00 | 0x00 | 0x4))
| 0-3 | ||||||||||||
| 292 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 293 | if (!CBS_get_u16(&cipher_suite, &cipher_value)
| 0-3 | ||||||||||||
| 294 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 295 | if (CBS_len(&cipher_suite) != 0
| 0-3 | ||||||||||||
| 296 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 297 | - | |||||||||||||
| 298 | - | |||||||||||||
| 299 | s->cipher = | - | ||||||||||||
| 300 | ((void *)0) | - | ||||||||||||
| 301 | ; | - | ||||||||||||
| 302 | s->cipher_id = 0x03000000 | cipher_value; | - | ||||||||||||
| 303 | - | |||||||||||||
| 304 | - | |||||||||||||
| 305 | if (!CBS_get_asn1(&session, &session_id, (0x00 | 0x00 | 0x4))
| 0-3 | ||||||||||||
| 306 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 307 | if (!CBS_write_bytes(&session_id, s->session_id, sizeof(s->session_id),
| 0-3 | ||||||||||||
| 308 | &data_len)
| 0-3 | ||||||||||||
| 309 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 310 | if (data_len >
| 0-3 | ||||||||||||
| 311 | (0x7fffffff * 2U + 1U)
| 0-3 | ||||||||||||
| 312 | ) | - | ||||||||||||
| 313 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 314 | s->session_id_length = (unsigned int)data_len; | - | ||||||||||||
| 315 | - | |||||||||||||
| 316 | - | |||||||||||||
| 317 | if (!CBS_get_asn1(&session, &master_key, (0x00 | 0x00 | 0x4))
| 0-3 | ||||||||||||
| 318 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 319 | if (!CBS_write_bytes(&master_key, s->master_key, sizeof(s->master_key),
| 0-3 | ||||||||||||
| 320 | &data_len)
| 0-3 | ||||||||||||
| 321 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 322 | if (data_len > 0x7fffffff
| 0-3 | ||||||||||||
| 323 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 324 | s->master_key_length = (int)data_len; | - | ||||||||||||
| 325 | - | |||||||||||||
| 326 | - | |||||||||||||
| 327 | s->time = time( | - | ||||||||||||
| 328 | ((void *)0) | - | ||||||||||||
| 329 | ); | - | ||||||||||||
| 330 | if (!CBS_get_optional_asn1_uint64(&session, &stime, ((0x20 | 0x80) | 1),
| 0-3 | ||||||||||||
| 331 | 0)
| 0-3 | ||||||||||||
| 332 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 333 | if (stime > time_max()
| 0-3 | ||||||||||||
| 334 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 335 | if (stime != 0
| 1-2 | ||||||||||||
| 336 | s->time = (time_t)stime; executed 1 time by 1 test: s->time = (time_t)stime;Executed by:
| 1 | ||||||||||||
| 337 | - | |||||||||||||
| 338 | - | |||||||||||||
| 339 | s->timeout = 3; | - | ||||||||||||
| 340 | if (!CBS_get_optional_asn1_uint64(&session, &timeout,
| 0-3 | ||||||||||||
| 341 | ((0x20 | 0x80) | 2), 0)
| 0-3 | ||||||||||||
| 342 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 343 | if (timeout > 0x7fffffffffffffffL
| 0-3 | ||||||||||||
| 344 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 345 | if (timeout != 0
| 1-2 | ||||||||||||
| 346 | s->timeout = (long)timeout; executed 1 time by 1 test: s->timeout = (long)timeout;Executed by:
| 1 | ||||||||||||
| 347 | - | |||||||||||||
| 348 | - | |||||||||||||
| 349 | X509_free(s->peer); | - | ||||||||||||
| 350 | s->peer = | - | ||||||||||||
| 351 | ((void *)0) | - | ||||||||||||
| 352 | ; | - | ||||||||||||
| 353 | if (!CBS_get_optional_asn1(&session, &peer_cert, &present,
| 0-3 | ||||||||||||
| 354 | ((0x20 | 0x80) | 3))
| 0-3 | ||||||||||||
| 355 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 356 | if (present
| 1-2 | ||||||||||||
| 357 | data_len = CBS_len(&peer_cert); | - | ||||||||||||
| 358 | if (data_len > 0x7fffffffffffffffL
| 0-1 | ||||||||||||
| 359 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 360 | peer_cert_bytes = CBS_data(&peer_cert); | - | ||||||||||||
| 361 | if (d2i_X509(&s->peer, &peer_cert_bytes,
| 0-1 | ||||||||||||
| 362 | (long)data_len) ==
| 0-1 | ||||||||||||
| 363 | ((void *)0)
| 0-1 | ||||||||||||
| 364 | ) | - | ||||||||||||
| 365 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 366 | } executed 1 time by 1 test: end of blockExecuted by:
| 1 | ||||||||||||
| 367 | - | |||||||||||||
| 368 | - | |||||||||||||
| 369 | s->sid_ctx_length = 0; | - | ||||||||||||
| 370 | if (!CBS_get_optional_asn1_octet_string(&session, &session_id, &present,
| 0-3 | ||||||||||||
| 371 | ((0x20 | 0x80) | 4))
| 0-3 | ||||||||||||
| 372 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 373 | if (present
| 0-3 | ||||||||||||
| 374 | if (!CBS_write_bytes(&session_id, (uint8_t *)&s->sid_ctx,
| 0-3 | ||||||||||||
| 375 | sizeof(s->sid_ctx), &data_len)
| 0-3 | ||||||||||||
| 376 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 377 | if (data_len >
| 0-3 | ||||||||||||
| 378 | (0x7fffffff * 2U + 1U)
| 0-3 | ||||||||||||
| 379 | ) | - | ||||||||||||
| 380 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 381 | s->sid_ctx_length = (unsigned int)data_len; | - | ||||||||||||
| 382 | } executed 3 times by 1 test: end of blockExecuted by:
| 3 | ||||||||||||
| 383 | - | |||||||||||||
| 384 | - | |||||||||||||
| 385 | s->verify_result = 0; | - | ||||||||||||
| 386 | if (!CBS_get_optional_asn1_uint64(&session, &verify_result,
| 0-3 | ||||||||||||
| 387 | ((0x20 | 0x80) | 5), 0)
| 0-3 | ||||||||||||
| 388 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 389 | if (verify_result > 0x7fffffffffffffffL
| 0-3 | ||||||||||||
| 390 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 391 | s->verify_result = (long)verify_result; | - | ||||||||||||
| 392 | - | |||||||||||||
| 393 | - | |||||||||||||
| 394 | free(s->tlsext_hostname); | - | ||||||||||||
| 395 | s->tlsext_hostname = | - | ||||||||||||
| 396 | ((void *)0) | - | ||||||||||||
| 397 | ; | - | ||||||||||||
| 398 | if (!CBS_get_optional_asn1_octet_string(&session, &hostname, &present,
| 0-3 | ||||||||||||
| 399 | ((0x20 | 0x80) | 6))
| 0-3 | ||||||||||||
| 400 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 401 | if (present
| 1-2 | ||||||||||||
| 402 | if (CBS_contains_zero_byte(&hostname)
| 0-1 | ||||||||||||
| 403 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 404 | if (!CBS_strdup(&hostname, &s->tlsext_hostname)
| 0-1 | ||||||||||||
| 405 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 406 | } executed 1 time by 1 test: end of blockExecuted by:
| 1 | ||||||||||||
| 407 | - | |||||||||||||
| 408 | - | |||||||||||||
| 409 | - | |||||||||||||
| 410 | - | |||||||||||||
| 411 | - | |||||||||||||
| 412 | s->tlsext_tick_lifetime_hint = 0; | - | ||||||||||||
| 413 | - | |||||||||||||
| 414 | if (s->tlsext_ticklen > 0
| 0-3 | ||||||||||||
| 415 | s->tlsext_tick_lifetime_hint = -1; never executed: s->tlsext_tick_lifetime_hint = -1; | 0 | ||||||||||||
| 416 | if (!CBS_get_optional_asn1_uint64(&session, &lifetime,
| 0-3 | ||||||||||||
| 417 | ((0x20 | 0x80) | 9), 0)
| 0-3 | ||||||||||||
| 418 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 419 | if (lifetime > 0x7fffffffffffffffL
| 0-3 | ||||||||||||
| 420 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 421 | if (lifetime > 0
| 1-2 | ||||||||||||
| 422 | s->tlsext_tick_lifetime_hint = (long)lifetime; executed 1 time by 1 test: s->tlsext_tick_lifetime_hint = (long)lifetime;Executed by:
| 1 | ||||||||||||
| 423 | - | |||||||||||||
| 424 | - | |||||||||||||
| 425 | free(s->tlsext_tick); | - | ||||||||||||
| 426 | s->tlsext_tick = | - | ||||||||||||
| 427 | ((void *)0) | - | ||||||||||||
| 428 | ; | - | ||||||||||||
| 429 | if (!CBS_get_optional_asn1_octet_string(&session, &ticket, &present,
| 0-3 | ||||||||||||
| 430 | ((0x20 | 0x80) | 10))
| 0-3 | ||||||||||||
| 431 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 432 | if (present
| 1-2 | ||||||||||||
| 433 | if (!CBS_stow(&ticket, &s->tlsext_tick, &s->tlsext_ticklen)
| 0-1 | ||||||||||||
| 434 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 435 | } executed 1 time by 1 test: end of blockExecuted by:
| 1 | ||||||||||||
| 436 | - | |||||||||||||
| 437 | - | |||||||||||||
| 438 | - | |||||||||||||
| 439 | - | |||||||||||||
| 440 | *pp = CBS_data(&cbs); | - | ||||||||||||
| 441 | - | |||||||||||||
| 442 | if (a !=
| 0-3 | ||||||||||||
| 443 | ((void *)0)
| 0-3 | ||||||||||||
| 444 | ) | - | ||||||||||||
| 445 | * executed 3 times by 1 test: a = s;*a = s;Executed by:
executed 3 times by 1 test: *a = s;Executed by:
| 3 | ||||||||||||
| 446 | - | |||||||||||||
| 447 | return executed 3 times by 1 test: (s);return (s);Executed by:
executed 3 times by 1 test: return (s);Executed by:
| 3 | ||||||||||||
| 448 | - | |||||||||||||
| 449 | err: | - | ||||||||||||
| 450 | ERR_asprintf_error_data("offset=%d", (int)(CBS_data(&cbs) - *pp)); | - | ||||||||||||
| 451 | - | |||||||||||||
| 452 | if (s !=
| 0 | ||||||||||||
| 453 | ((void *)0)
| 0 | ||||||||||||
| 454 | && (a ==
| 0 | ||||||||||||
| 455 | ((void *)0)
| 0 | ||||||||||||
| 456 | || *
| 0 | ||||||||||||
| 457 | SSL_SESSION_free(s); never executed: SSL_SESSION_free(s); | 0 | ||||||||||||
| 458 | - | |||||||||||||
| 459 | return never executed: (return ( ((void *)0) );never executed: return ( ((void *)0) ); | 0 | ||||||||||||
| 460 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||
| 461 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||
| 462 | } | - | ||||||||||||
| Switch to Source code | Preprocessed file |