@@ -182,6 +182,7 @@ ftp_close(ftpbuf_t *ftp)
182
182
#if HAVE_OPENSSL_EXT
183
183
if (ftp -> ssl_active ) {
184
184
SSL_shutdown (ftp -> ssl_handle );
185
+ SSL_free (ftp -> ssl_handle );
185
186
}
186
187
#endif
187
188
closesocket (ftp -> fd );
@@ -297,6 +298,7 @@ ftp_login(ftpbuf_t *ftp, const char *user, const char *pass TSRMLS_DC)
297
298
if (SSL_connect (ftp -> ssl_handle ) <= 0 ) {
298
299
php_error_docref (NULL TSRMLS_CC , E_WARNING , "SSL/TLS handshake failed" );
299
300
SSL_shutdown (ftp -> ssl_handle );
301
+ SSL_free (ftp -> ssl_handle );
300
302
return 0 ;
301
303
}
302
304
@@ -1548,6 +1550,7 @@ data_accept(databuf_t *data, ftpbuf_t *ftp TSRMLS_DC)
1548
1550
if (SSL_connect (data -> ssl_handle ) <= 0 ) {
1549
1551
php_error_docref (NULL TSRMLS_CC , E_WARNING , "data_accept: SSL/TLS handshake failed" );
1550
1552
SSL_shutdown (data -> ssl_handle );
1553
+ SSL_free (data -> ssl_handle );
1551
1554
return 0 ;
1552
1555
}
1553
1556
@@ -1565,13 +1568,21 @@ data_accept(databuf_t *data, ftpbuf_t *ftp TSRMLS_DC)
1565
1568
databuf_t *
1566
1569
data_close (ftpbuf_t * ftp , databuf_t * data )
1567
1570
{
1571
+ #if HAVE_OPENSSL_EXT
1572
+ SSL_CTX * ctx ;
1573
+ #endif
1568
1574
if (data == NULL ) {
1569
1575
return NULL ;
1570
1576
}
1571
1577
if (data -> listener != -1 ) {
1572
1578
#if HAVE_OPENSSL_EXT
1573
1579
if (data -> ssl_active ) {
1580
+
1581
+ ctx = SSL_get_SSL_CTX (data -> ssl_handle );
1582
+ SSL_CTX_free (ctx );
1583
+
1574
1584
SSL_shutdown (data -> ssl_handle );
1585
+ SSL_free (data -> ssl_handle );
1575
1586
data -> ssl_active = 0 ;
1576
1587
}
1577
1588
#endif
@@ -1580,7 +1591,11 @@ data_close(ftpbuf_t *ftp, databuf_t *data)
1580
1591
if (data -> fd != -1 ) {
1581
1592
#if HAVE_OPENSSL_EXT
1582
1593
if (data -> ssl_active ) {
1594
+ ctx = SSL_get_SSL_CTX (data -> ssl_handle );
1595
+ SSL_CTX_free (ctx );
1596
+
1583
1597
SSL_shutdown (data -> ssl_handle );
1598
+ SSL_free (data -> ssl_handle );
1584
1599
data -> ssl_active = 0 ;
1585
1600
}
1586
1601
#endif
0 commit comments