You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "ASF subversion and git services (JIRA)" <ji...@apache.org> on 2018/01/22 22:04:01 UTC

[jira] [Commented] (AMQCPP-622) Memory leaks in the handshake of a OpenSSL connection

    [ https://issues.apache.org/jira/browse/AMQCPP-622?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16335004#comment-16335004 ] 

ASF subversion and git services commented on AMQCPP-622:
--------------------------------------------------------

Commit 0eb4320503f34d90f2668211486e97974f926918 in activemq-cpp's branch refs/heads/3.9.x from [~tabish121]
[ https://git-wip-us.apache.org/repos/asf?p=activemq-cpp.git;h=0eb4320 ]

AMQCPP-623 AMQCPP-622 Fix OpenSSL issues

Fix possible memory leak and address issues with build on newer
releases.

> Memory leaks in the handshake of a OpenSSL connection
> -----------------------------------------------------
>
>                 Key: AMQCPP-622
>                 URL: https://issues.apache.org/jira/browse/AMQCPP-622
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>          Components: Decaf
>    Affects Versions: 3.9.4
>            Reporter: Daniel Laügt
>            Assignee: Timothy Bish
>            Priority: Minor
>         Attachments: OpenSSLSocket.cpp.patch
>
>
> ActiveMQ transport has two memory leaks in the handshake of a OpenSSL connection.
> {noformat}
> ==15167== Memcheck, a memory error detector
> ==15167== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
> ==15167== Using Valgrind-3.10.0.SVN and LibVEX; rerun with -h for copyright info
> ==15167== 
> ==15167== 
> ==15167== HEAP SUMMARY:
> ==15167==     in use at exit: 4,682,917 bytes in 8,351 blocks
> ==15167==   total heap usage: 108,257 allocs, 99,907 frees, 64,602,948 bytes allocated
> ==15167== 
> ==15167== 207 (32 direct, 175 indirect) bytes in 1 blocks are definitely lost in loss record 2,149 of 2,859
> ==15167==    at 0x4C2AB80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==15167==    by 0x6D8DA67: CRYPTO_malloc (mem.c:346)
> ==15167==    by 0x6E3FEBE: sk_new (stack.c:162)
> ==15167==    by 0x6E93024: X509V3_add_value (v3_utl.c:93)
> ==15167==    by 0x6E94BD8: i2v_GENERAL_NAME (v3_alt.c:142)
> ==15167==    by 0x6E94D2A: i2v_GENERAL_NAMES (v3_alt.c:106)
> ==15167==    by 0x19B5FF6E: decaf::internal::net::ssl::openssl::OpenSSLSocket::verifyServerCert(std::string const&) (OpenSSLSocket.cpp:671)
> ==15167==    by 0x19B61481: decaf::internal::net::ssl::openssl::OpenSSLSocket::startHandshake() (OpenSSLSocket.cpp:379)
> ==15167==    by 0x19B5FA95: decaf::internal::net::ssl::openssl::OpenSSLSocket::write(unsigned char const*, int, int, int) (OpenSSLSocket.cpp:566)
> ==15167==    by 0x19B63520: decaf::internal::net::ssl::openssl::OpenSSLSocketOutputStream::doWriteArrayBounded(unsigned char const*, int, int, int) (OpenSSLSocketOutputStream.cpp:91)
> ==15167==    by 0x19BB14D1: decaf::io::OutputStream::doWriteArray(unsigned char const*, int) (OutputStream.cpp:89)
> ==15167==    by 0x19BB1255: decaf::io::OutputStream::write(unsigned char const*, int) (OutputStream.cpp:65)
> ==15167== 
> ==15167== 228 (32 direct, 196 indirect) bytes in 1 blocks are definitely lost in loss record 2,153 of 2,859
> ==15167==    at 0x4C2AB80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==15167==    by 0x6D8DA67: CRYPTO_malloc (mem.c:346)
> ==15167==    by 0x6E3FEBE: sk_new (stack.c:162)
> ==15167==    by 0x6E6ED08: asn1_template_noexp_d2i (tasn_dec.c:634)
> ==15167==    by 0x6E6EE34: asn1_template_ex_d2i (tasn_dec.c:584)
> ==15167==    by 0x6E6E4A5: ASN1_item_ex_d2i (tasn_dec.c:206)
> ==15167==    by 0x6E6E983: ASN1_item_d2i (tasn_dec.c:146)
> ==15167==    by 0x19B5FF4C: decaf::internal::net::ssl::openssl::OpenSSLSocket::verifyServerCert(std::string const&) (OpenSSLSocket.cpp:671)
> ==15167==    by 0x19B61481: decaf::internal::net::ssl::openssl::OpenSSLSocket::startHandshake() (OpenSSLSocket.cpp:379)
> ==15167==    by 0x19B5FA95: decaf::internal::net::ssl::openssl::OpenSSLSocket::write(unsigned char const*, int, int, int) (OpenSSLSocket.cpp:566)
> ==15167==    by 0x19B63520: decaf::internal::net::ssl::openssl::OpenSSLSocketOutputStream::doWriteArrayBounded(unsigned char const*, int, int, int) (OpenSSLSocketOutputStream.cpp:91)
> ==15167==    by 0x19BB14D1: decaf::io::OutputStream::doWriteArray(unsigned char const*, int) (OutputStream.cpp:89)
> ==15167== 
> ==15167== LEAK SUMMARY:
> ==15167==    definitely lost: 64 bytes in 2 blocks
> ==15167==    indirectly lost: 371 bytes in 20 blocks
> ==15167==      possibly lost: 176,608 bytes in 28 blocks
> ==15167==    still reachable: 2,705,672 bytes in 6,620 blocks
> ==15167==         suppressed: 1,800,202 bytes in 1,681 blocks
> ==15167== Reachable blocks (those to which a pointer was found) are not shown.
> ==15167== To see them, rerun with: --leak-check=full --show-leak-kinds=all
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)