Sat, 04 Apr 2020 01:36:20 +0200
Make ssl_*_read robust against bogus connection, like ssl_*_write is
| libpurple/plugins/ssl/ssl-gnutls.c | file | annotate | diff | comparison | revisions | |
| libpurple/plugins/ssl/ssl-nss.c | file | annotate | diff | comparison | revisions |
--- a/libpurple/plugins/ssl/ssl-gnutls.c Mon Dec 16 20:20:20 2019 -0600 +++ b/libpurple/plugins/ssl/ssl-gnutls.c Sat Apr 04 01:36:20 2020 +0200 @@ -451,9 +451,10 @@ ssl_gnutls_read(PurpleSslConnection *gsc, void *data, size_t len) { PurpleSslGnutlsData *gnutls_data = PURPLE_SSL_GNUTLS_DATA(gsc); - ssize_t s; + ssize_t s = 0; - s = gnutls_record_recv(gnutls_data->session, data, len); + if(gnutls_data) + s = gnutls_record_recv(gnutls_data->session, data, len); if(s == GNUTLS_E_AGAIN || s == GNUTLS_E_INTERRUPTED) { s = -1;
--- a/libpurple/plugins/ssl/ssl-nss.c Mon Dec 16 20:20:20 2019 -0600 +++ b/libpurple/plugins/ssl/ssl-nss.c Sat Apr 04 01:36:20 2020 +0200 @@ -529,6 +529,9 @@ PRInt32 ret; PurpleSslNssData *nss_data = PURPLE_SSL_NSS_DATA(gsc); + if (!nss_data) + return 0; + ret = PR_Read(nss_data->in, data, len); if (ret == -1)