summaryrefslogtreecommitdiff
path: root/third-party
diff options
context:
space:
mode:
authorAlexander Traud <pabstraud@compuserve.com>2017-04-07 15:06:11 +0200
committerAlexander Traud <pabstraud@compuserve.com>2017-04-07 15:06:11 +0200
commit7a46cd7433fabb86daca8c07ec397ffe988e95bf (patch)
treedfbb850118827f64f374f9e300b804ae728ff128 /third-party
parent33f29240daebe8aec158451f593d418d20159af1 (diff)
pjproject_bundled: Crash on pj_ssl_get_info() while ioqueue_on_read_complete().
When the Asterisk channel driver res_pjsip offers SIP-over-TLS, sometimes, not reproducible, Asterisk crashed in pj_ssl_sock_get_info() because a NULL pointer was read. This change avoids this crash. ASTERISK-26927 #close Change-Id: I24a6011b44d1426d159742ff4421cf806a52938b
Diffstat (limited to 'third-party')
-rw-r--r--third-party/pjproject/patches/0048-r5576-svn-backport-tls-crash.patch32
1 files changed, 32 insertions, 0 deletions
diff --git a/third-party/pjproject/patches/0048-r5576-svn-backport-tls-crash.patch b/third-party/pjproject/patches/0048-r5576-svn-backport-tls-crash.patch
new file mode 100644
index 000000000..b5edc71f4
--- /dev/null
+++ b/third-party/pjproject/patches/0048-r5576-svn-backport-tls-crash.patch
@@ -0,0 +1,32 @@
+Index: /pjproject/trunk/pjlib/src/pj/ssl_sock_ossl.c
+===================================================================
+--- a/pjlib/src/pj/ssl_sock_ossl.c (revision 5564)
++++ b/pjlib/src/pj/ssl_sock_ossl.c (revision 5565)
+@@ -145,5 +145,6 @@
+ SSL_STATE_NULL,
+ SSL_STATE_HANDSHAKING,
+- SSL_STATE_ESTABLISHED
++ SSL_STATE_ESTABLISHED,
++ SSL_STATE_ERROR
+ };
+
+@@ -1907,4 +1908,8 @@
+ buf->len += size_;
+
++ if (status != PJ_SUCCESS) {
++ ssock->ssl_state = SSL_STATE_ERROR;
++ }
++
+ ret = (*ssock->param.cb.on_data_read)(ssock, buf->data,
+ buf->len, status,
+@@ -2658,5 +2663,9 @@
+ /* Current cipher */
+ cipher = SSL_get_current_cipher(ssock->ossl_ssl);
+- info->cipher = (SSL_CIPHER_get_id(cipher) & 0x00FFFFFF);
++ if (cipher) {
++ info->cipher = (SSL_CIPHER_get_id(cipher) & 0x00FFFFFF);
++ } else {
++ info->cipher = PJ_TLS_UNKNOWN_CIPHER;
++ }
+
+ /* Remote address */