| line | true | false | branch | 
 
| 88 | 0 | 11156 | if (!ssl) | 
 
| 92 | 0 | 11156 | if (cipherSpecLen > 0 && (cipherSpec == NULL || cipherSpec[0] == 0)) | 
 
|  | 0 | 0 | if (cipherSpecLen > 0 && (cipherSpec == NULL || cipherSpec[0] == 0)) | 
 
|  | 0 | 0 | if (cipherSpecLen > 0 && (cipherSpec == NULL || cipherSpec[0] == 0)) | 
 
| 96 | 0 | 11156 | if (options == NULL) | 
 
| 117 | 11156 | 0 | if (cipherSpec != NULL && cipherSpec[0] != 0 && sid != NULL && | 
 
|  | 11139 | 17 | if (cipherSpec != NULL && cipherSpec[0] != 0 && sid != NULL && | 
 
|  | 10520 | 619 | if (cipherSpec != NULL && cipherSpec[0] != 0 && sid != NULL && | 
 
|  | 509 | 10011 | if (cipherSpec != NULL && cipherSpec[0] != 0 && sid != NULL && | 
 
| 121 | 0 | 509 | for (i = 0; i < cipherSpecLen; i++) | 
 
| 123 | 0 | 0 | if (cipherSpec[i] == sid->cipherId) | 
 
| 128 | 509 | 0 | if (rc) | 
 
| 137 | 0 | 11156 | if ((rc = matrixSslNewSession(&lssl, keys, sid, options)) < 0) | 
 
| 143 | 0 | 11156 | if (options->clientRejectVersionDowngrade) | 
 
| 149 | 0 | 11156 | if (expectedName) | 
 
| 151 | 0 | 0 | if (psX509ValidateGeneralName((char *) expectedName) < 0) | 
 
| 163 | 10127 | 1029 | if (certCb) | 
 
| 168 | 0 | 11156 | if (extCb) | 
 
| 185 | 0 | 11156 | if ((rc = matrixSslEncodeClientHello(lssl, &tmp, cipherSpec, cipherSpecLen, | 
 
| 188 | 0 | 0 | if (rc == SSL_FULL) | 
 
| 190 | 0 | 0 | if ((tmp.buf = psRealloc(lssl->outbuf, len, lssl->bufferPool)) | 
 
| 206 | 0 | 11156 | psAssert(tmp.start == tmp.buf); | 
 
| 242 | 0 | 110023 | if ((ses = psMalloc(pool, sizeof(sslSessionId_t))) == NULL) | 
 
| 264 | 0 | 110023 | if (sess == NULL) | 
 
| 269 | 0 | 110023 | if (sess->sessionTicket) | 
 
| 511 | 0 | 0 | if ((rc = matrixSslNewServerSession(ssl, NULL, certCb, options)) < 0) | 
 
| 529 | 0 | 11158 | if (!ssl) | 
 
| 533 | 0 | 11158 | if (options == NULL) | 
 
| 544 | 0 | 11158 | if (certCb) | 
 
| 547 | 0 | 0 | if (matrixSslNewSession(&lssl, keys, NULL, options) < 0) | 
 
| 553 | 0 | 11158 | else if (matrixSslNewSession(&lssl, keys, NULL, options) < 0) | 
 
| 574 | 0 | 11158 | if (options->maxFragLen < 0) | 
 
| 581 | 0 | 11158 | if (options->truncHmac < 0) | 
 
| 588 | 0 | 11158 | if (options->extendedMasterSecret > 0) | 
 
| 597 | 0 | 0 | if (lssl) | 
 
| 635 | 9678 | 0 | if (!ssl || !buf) | 
 
|  | 0 | 9678 | if (!ssl || !buf) | 
 
| 639 | 9678 | 0 | psAssert(ssl && ssl->insize > 0 && ssl->inbuf != NULL); | 
 
|  | 9678 | 0 | psAssert(ssl && ssl->insize > 0 && ssl->inbuf != NULL); | 
 
|  | 9678 | 0 | psAssert(ssl && ssl->insize > 0 && ssl->inbuf != NULL); | 
 
| 655 | 0 | 0 | if (!ssl || !buf) | 
 
|  | 0 | 0 | if (!ssl || !buf) | 
 
| 659 | 0 | 0 | psAssert(ssl && ssl->insize > 0 && ssl->inbuf != NULL); | 
 
|  | 0 | 0 | psAssert(ssl && ssl->insize > 0 && ssl->inbuf != NULL); | 
 
|  | 0 | 0 | psAssert(ssl && ssl->insize > 0 && ssl->inbuf != NULL); | 
 
| 661 | 0 | 0 | if ((ssl->insize - ssl->inlen) >= size) | 
 
| 668 | 0 | 0 | if (ssl->inlen == 0) | 
 
| 674 | 0 | 0 | if ((ssl->inbuf = psMalloc(ssl->bufferPool, size)) == NULL) | 
 
| 686 | 0 | 0 | if ((p = psRealloc(ssl->inbuf, ssl->inlen + size, ssl->bufferPool)) | 
 
| 713 | 0 | 11841 | if (!ssl) | 
 
| 717 | 11841 | 0 | psAssert(ssl->outsize > 0 && ssl->outbuf != NULL); | 
 
|  | 11841 | 0 | psAssert(ssl->outsize > 0 && ssl->outbuf != NULL); | 
 
| 718 | 11841 | 0 | if (buf) | 
 
| 752 | 4125 | 0 | if (!ssl || !buf) | 
 
|  | 0 | 4125 | if (!ssl || !buf) | 
 
| 756 | 4125 | 0 | psAssert(ssl->outsize > 0 && ssl->outbuf != NULL); | 
 
|  | 4125 | 0 | psAssert(ssl->outsize > 0 && ssl->outbuf != NULL); | 
 
| 760 | 4123 | 2 | if (!(ssl->flags & SSL_FLAGS_SERVER)) | 
 
| 764 | 4123 | 0 | if ((ssl->majVer == SSL3_MAJ_VER) && (ssl->minVer <= TLS_MIN_VER) | 
 
|  | 0 | 4123 | if ((ssl->majVer == SSL3_MAJ_VER) && (ssl->minVer <= TLS_MIN_VER) | 
 
| 765 | 0 | 0 | && (ssl->enBlockSize > 1) && (requestedLen > 1) && | 
 
|  | 0 | 0 | && (ssl->enBlockSize > 1) && (requestedLen > 1) && | 
 
|  | 0 | 0 | && (ssl->enBlockSize > 1) && (requestedLen > 1) && | 
 
| 779 | 0 | 4125 | if (requestedLen > (uint32) ssl->maxPtFrag) | 
 
| 796 | 0 | 4125 | psAssert(requiredLen >= requestedLen); | 
 
| 814 | 0 | 4125 | if (ssl->outsize < ssl->outlen) | 
 
| 823 | 2063 | 2062 | if (sz < requiredLen) | 
 
| 825 | 0 | 2063 | if ((p = psRealloc(ssl->outbuf, ssl->outsize + | 
 
| 835 | 0 | 2063 | if (ssl->outsize < ssl->outlen) | 
 
| 846 | 4125 | 0 | if (requestedLen <= (uint32) ssl->maxPtFrag) | 
 
| 849 | 0 | 4125 | if (requestedLen > (uint32) ssl->maxPtFrag) | 
 
| 865 | 4125 | 0 | if ((ssl->flags & SSL_FLAGS_WRITE_SECURE) && | 
 
|  | 4125 | 0 | if ((ssl->flags & SSL_FLAGS_WRITE_SECURE) && | 
 
| 866 | 1 | 4124 | (ssl->flags & SSL_FLAGS_TLS_1_1) && (ssl->enBlockSize > 1)) | 
 
| 872 | 4124 | 0 | if (ssl->flags & SSL_FLAGS_AEAD_W) | 
 
| 874 | 4124 | 0 | *buf = ssl->outbuf + ssl->outlen + ssl->recordHeadLen + | 
 
| 881 | 0 | 0 | if (ssl->bFlags & BFLAG_STOP_BEAST) | 
 
| 886 | 0 | 0 | overhead = ((ssl->enMacSize + 1) % ssl->enBlockSize) ? | 
 
| 916 | 0 | 0 | if (rc > 0) | 
 
| 940 | 0 | 0 | if (!ssl || ((int32) len < 0)) | 
 
|  | 0 | 0 | if (!ssl || ((int32) len < 0)) | 
 
| 944 | 0 | 0 | if (ssl->bFlags & BFLAG_CLOSE_AFTER_SENT) | 
 
| 948 | 0 | 0 | psAssert(ssl->outsize > 0 && ssl->outbuf != NULL); | 
 
|  | 0 | 0 | psAssert(ssl->outsize > 0 && ssl->outbuf != NULL); | 
 
| 951 | 0 | 0 | if (ssl->outbuf == NULL || (ssl->outsize - ssl->outlen) < (int32) len) | 
 
|  | 0 | 0 | if (ssl->outbuf == NULL || (ssl->outsize - ssl->outlen) < (int32) len) | 
 
| 958 | 0 | 0 | if (ssl->bFlags & BFLAG_STOP_BEAST) | 
 
| 960 | 0 | 0 | rc = ((ssl->enMacSize + 1) % ssl->enBlockSize) ? ssl->enBlockSize : 0; | 
 
| 973 | 0 | 0 | if ((ssl->flags & SSL_FLAGS_WRITE_SECURE) && | 
 
|  | 0 | 0 | if ((ssl->flags & SSL_FLAGS_WRITE_SECURE) && | 
 
| 974 | 0 | 0 | (ssl->flags & SSL_FLAGS_TLS_1_1) && (ssl->enBlockSize > 1)) | 
 
| 978 | 0 | 0 | if (ssl->flags & SSL_FLAGS_AEAD_W) | 
 
| 980 | 0 | 0 | reserved += AEAD_NONCE_LEN(ssl); | 
 
| 986 | 0 | 0 | if (rc < 0) | 
 
| 988 | 0 | 0 | psAssert(rc != SSL_FULL);   /* should not happen */ | 
 
| 1016 | 4126 | 0 | if (!ssl || !ptBuf) | 
 
|  | 0 | 4126 | if (!ssl || !ptBuf) | 
 
| 1020 | 1 | 4125 | if (ssl->bFlags & BFLAG_CLOSE_AFTER_SENT) | 
 
| 1038 | 4125 | 4124 | while (len > 0) | 
 
| 1041 | 0 | 4125 | if ((rc = matrixSslGetWritebuf(ssl, &internalBuf, len)) < 0) | 
 
| 1048 | 4125 | 0 | psAssert(ssl->outsize > 0 && ssl->outbuf != NULL); | 
 
|  | 4125 | 0 | psAssert(ssl->outsize > 0 && ssl->outbuf != NULL); | 
 
| 1050 | 4125 | 0 | if (ssl->outbuf == NULL || | 
 
|  | 0 | 4125 | if (ssl->outbuf == NULL || | 
 
| 1059 | 1 | 4124 | if (rc < 0) | 
 
| 1061 | 0 | 1 | psAssert(rc != SSL_FULL);   /* should not happen */ | 
 
| 1087 | 8540 | 6477 | if (inOrOut == SSL_INBUF) | 
 
| 1101 | 2064 | 6476 | if (ssl->insize > defaultSize && ssl->inlen < defaultSize) | 
 
|  | 2064 | 0 | if (ssl->insize > defaultSize && ssl->inlen < defaultSize) | 
 
| 1104 | 2064 | 0 | if ((p = psRealloc(ssl->inbuf, defaultSize, ssl->bufferPool)) | 
 
| 1126 | 1025 | 5452 | if (ssl->outsize > defaultSize && ssl->outlen < defaultSize) | 
 
|  | 1025 | 0 | if (ssl->outsize > defaultSize && ssl->outlen < defaultSize) | 
 
| 1129 | 1025 | 0 | if ((p = psRealloc(ssl->outbuf, defaultSize, ssl->bufferPool)) | 
 
| 1153 | 10699 | 0 | if (!ssl || !ptbuf || !ptlen) | 
 
|  | 10699 | 0 | if (!ssl || !ptbuf || !ptlen) | 
 
|  | 0 | 10699 | if (!ssl || !ptbuf || !ptlen) | 
 
| 1158 | 10699 | 0 | psAssert(ssl->outsize > 0 && ssl->outbuf != NULL); | 
 
|  | 10699 | 0 | psAssert(ssl->outsize > 0 && ssl->outbuf != NULL); | 
 
| 1159 | 10699 | 0 | psAssert(ssl->insize > 0 && ssl->inbuf != NULL); | 
 
|  | 10699 | 0 | psAssert(ssl->insize > 0 && ssl->inbuf != NULL); | 
 
| 1163 | 0 | 10699 | if (ssl->inlen == 0) | 
 
| 1171 | 6194 | 10949 | if (matrixSslHandshakeIsComplete(ssl)) | 
 
| 1181 | 0 | 17143 | if (sanity-- < 0) | 
 
| 1203 | 6440 | 1061 | if (ssl->inlen > 0) | 
 
| 1205 | 0 | 6440 | psAssert(buf > ssl->inbuf); | 
 
| 1219 | 1061 | 0 | if (!(ssl->bFlags & BFLAG_HS_COMPLETE)) | 
 
| 1221 | 1060 | 1 | if (matrixSslHandshakeIsComplete(ssl)) | 
 
| 1278 | 0 | 3356 | if ((ssl->flags & SSL_FLAGS_FALSE_START) && buf != prevBuf) | 
 
|  | 0 | 0 | if ((ssl->flags & SSL_FLAGS_FALSE_START) && buf != prevBuf) | 
 
| 1281 | 0 | 0 | psAssert(ssl->inlen > 0); | 
 
| 1282 | 0 | 0 | psAssert((uint32) ssl->inlen == start); | 
 
| 1283 | 0 | 0 | psAssert(buf > ssl->inbuf); | 
 
| 1298 | 90 | 3266 | if (alertDesc != SSL_ALERT_NONE) | 
 
| 1302 | 0 | 3356 | psAssert(prevBuf == buf); | 
 
| 1303 | 0 | 3356 | psAssert(ssl->insize >= (int32) len); | 
 
| 1304 | 0 | 3356 | psAssert(start == 0); | 
 
| 1305 | 0 | 3356 | psAssert(buf == ssl->inbuf); | 
 
| 1306 | 0 | 3356 | if (ssl->outlen > 0) | 
 
| 1313 | 0 | 0 | if (ssl->outlen + (int32) len > ssl->outsize) | 
 
| 1315 | 0 | 0 | if ((p = psRealloc(ssl->outbuf, ssl->outlen + len, | 
 
| 1345 | 1 | 90 | if (alertLevel == SSL_ALERT_LEVEL_FATAL) | 
 
| 1364 | 1 | 90 | if ((ssl->flags & SSL_FLAGS_READ_SECURE) && | 
 
|  | 1 | 0 | if ((ssl->flags & SSL_FLAGS_READ_SECURE) && | 
 
| 1365 | 0 | 1 | (ssl->flags & SSL_FLAGS_TLS_1_1) && (ssl->enBlockSize > 1)) | 
 
| 1370 | 0 | 91 | psAssert(len == 2); | 
 
| 1377 | 0 | 2068 | if (reqLen > SSL_MAX_BUF_SIZE) | 
 
| 1381 | 2064 | 4 | if (reqLen > (uint32) ssl->insize) | 
 
| 1383 | 0 | 2064 | if ((p = psRealloc(ssl->inbuf, reqLen, ssl->bufferPool)) == NULL) | 
 
| 1398 | 0 | 4 | if (reqLen > SSL_MAX_BUF_SIZE) | 
 
| 1406 | 0 | 0 | if (reqLen > SSL_MAX_PLAINTEXT_LEN) | 
 
| 1418 | 4 | 0 | if (reqLen > (uint32) ssl->insize) | 
 
| 1421 | 0 | 4 | if ((p = psRealloc(ssl->inbuf, reqLen, ssl->bufferPool)) == NULL) | 
 
| 1459 | 0 | 4123 | psAssert((uint32) ssl->inlen == start); | 
 
| 1467 | 0 | 4123 | psAssert(ssl->enBlockSize == ssl->deBlockSize); | 
 
| 1468 | 4123 | 0 | if ((ssl->flags & SSL_FLAGS_READ_SECURE) && | 
 
|  | 4123 | 0 | if ((ssl->flags & SSL_FLAGS_READ_SECURE) && | 
 
| 1469 | 1 | 4122 | (ssl->flags & SSL_FLAGS_TLS_1_1) && (ssl->deBlockSize > 1)) | 
 
| 1500 | 2068 | 4417 | if (ssl->inlen > 0 && (buf != ssl->inbuf)) | 
 
|  | 0 | 2068 | if (ssl->inlen > 0 && (buf != ssl->inbuf)) | 
 
| 1509 | 4417 | 2068 | if (decodeRet != SSL_PARTIAL) | 
 
| 1535 | 4123 | 0 | if (!ssl || !ptbuf || !ptlen) | 
 
|  | 4123 | 0 | if (!ssl || !ptbuf || !ptlen) | 
 
|  | 0 | 4123 | if (!ssl || !ptbuf || !ptlen) | 
 
| 1542 | 4123 | 0 | psAssert(ssl->insize > 0 && ssl->inbuf != NULL); | 
 
|  | 4123 | 0 | psAssert(ssl->insize > 0 && ssl->inbuf != NULL); | 
 
| 1544 | 1021 | 3102 | if (ssl->inlen > 0) | 
 
| 1547 | 1021 | 0 | if (ssl->flags & SSL_FLAGS_AEAD_R) | 
 
| 1551 | 0 | 1021 | ctlen += AEAD_TAG_LEN(ssl) + AEAD_NONCE_LEN(ssl); | 
 
|  | 1021 | 0 | ctlen += AEAD_TAG_LEN(ssl) + AEAD_NONCE_LEN(ssl); | 
 
| 1559 | 1021 | 3102 | if (ssl->inlen > 0) | 
 
| 1580 | 0 | 1 | if (!ssl) | 
 
| 1584 | 1 | 0 | psAssert(ssl->outsize > 0 && ssl->outbuf != NULL); | 
 
|  | 1 | 0 | psAssert(ssl->outsize > 0 && ssl->outbuf != NULL); | 
 
| 1590 | 1 | 0 | if (!(ssl->bFlags & BFLAG_CLOSE_AFTER_SENT)) | 
 
| 1597 | 0 | 1 | if (rc == SSL_FULL && newLen == 0) | 
 
|  | 0 | 0 | if (rc == SSL_FULL && newLen == 0) | 
 
| 1600 | 0 | 0 | if ((p = psRealloc(ssl->outbuf, newLen, ssl->bufferPool)) == NULL) | 
 
| 1608 | 0 | 1 | else if (rc != PS_SUCCESS) | 
 
| 1646 | 0 | 8 | if (!ssl) | 
 
| 1650 | 2 | 6 | if (cipherSpecLen > 0 && (cipherSpec == NULL || cipherSpec[0] == 0)) | 
 
|  | 2 | 0 | if (cipherSpecLen > 0 && (cipherSpec == NULL || cipherSpec[0] == 0)) | 
 
|  | 0 | 2 | if (cipherSpecLen > 0 && (cipherSpec == NULL || cipherSpec[0] == 0)) | 
 
| 1654 | 0 | 8 | if (ssl->bFlags & BFLAG_CLOSE_AFTER_SENT) | 
 
| 1658 | 8 | 0 | psAssert(ssl->outsize > 0 && ssl->outbuf != NULL); | 
 
|  | 8 | 0 | psAssert(ssl->outsize > 0 && ssl->outbuf != NULL); | 
 
| 1675 | 3 | 5 | if (sessionOption == SSL_OPTION_FULL_HANDSHAKE) | 
 
| 1684 | 2 | 6 | if (keys != NULL) | 
 
| 1691 | 2 | 6 | if (certCb != NULL) | 
 
| 1702 | 0 | 2 | if (ssl->flags & SSL_FLAGS_SERVER) | 
 
| 1713 | 8 | 0 | if (!(ssl->flags & SSL_FLAGS_SERVER)) | 
 
| 1716 | 2 | 6 | if (cipherSpecLen > 0) | 
 
| 1719 | 2 | 2 | for (i = 0; i < cipherSpecLen; i++) | 
 
| 1721 | 0 | 2 | if (cipherSpec[i] == ssl->cipher->ident) | 
 
| 1727 | 2 | 6 | if (rc) | 
 
| 1747 | 0 | 8 | if (ssl->flags & SSL_FLAGS_SERVER) | 
 
| 1751 | 0 | 0 | if ((rc = matrixSslEncodeHelloRequest(ssl, &sbuf, &reqLen)) < 0) | 
 
| 1753 | 0 | 0 | if (rc == SSL_FULL && newLen == 0) | 
 
|  | 0 | 0 | if (rc == SSL_FULL && newLen == 0) | 
 
| 1756 | 0 | 0 | if (newLen < SSL_MAX_BUF_SIZE) | 
 
| 1758 | 0 | 0 | if ((p = psRealloc(ssl->outbuf, newLen, ssl->bufferPool)) | 
 
| 1780 | 8 | 0 | if (ssl->extFlags.extended_master_secret == 1) | 
 
| 1790 | 1 | 7 | if ((rc = matrixSslEncodeClientHello(ssl, &sbuf, cipherSpec, | 
 
| 1793 | 0 | 1 | if (rc == SSL_FULL && newLen == 0) | 
 
|  | 0 | 0 | if (rc == SSL_FULL && newLen == 0) | 
 
| 1796 | 0 | 0 | if (newLen < SSL_MAX_BUF_SIZE) | 
 
| 1798 | 0 | 0 | if ((p = psRealloc(ssl->outbuf, newLen, ssl->bufferPool)) | 
 
| 1820 | 0 | 0 | if (ssl == NULL) | 
 
| 1830 | 0 | 0 | if (ssl == NULL) | 
 
| 1841 | 0 | 0 | if (ssl) | 
 
| 1850 | 0 | 0 | if (ssl) | 
 
| 1853 | 0 | 0 | if (ssl->rehandshakeCount >= 0) | 
 
| 1855 | 0 | 0 | if ((ssl->rehandshakeCount + credits) < 0x8000) | 
 
| 1893 | 0 | 6568 | if (!ssl) | 
 
| 1897 | 0 | 6568 | if (bytes == 0) | 
 
| 1899 | 0 | 0 | if (ssl->outlen > 0) | 
 
| 1908 | 6568 | 0 | psAssert(ssl->outsize > 0 && ssl->outbuf != NULL); | 
 
|  | 6568 | 0 | psAssert(ssl->outsize > 0 && ssl->outbuf != NULL); | 
 
| 1912 | 0 | 6568 | if (ssl->outlen > 0) | 
 
| 1941 | 6568 | 0 | if ((ssl->outlen == 0) && (ssl->bFlags & BFLAG_CLOSE_AFTER_SENT)) | 
 
|  | 91 | 6477 | if ((ssl->outlen == 0) && (ssl->bFlags & BFLAG_CLOSE_AFTER_SENT)) |