Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

valgrind #173

Open
shi-bmz opened this issue Aug 29, 2021 · 1 comment
Open

valgrind #173

shi-bmz opened this issue Aug 29, 2021 · 1 comment

Comments

@shi-bmz
Copy link

shi-bmz commented Aug 29, 2021

Hi,

Thanks for this handy library! I've already found a fix for this issue, but would prefer not to have to fork the project. If I can be allowed to push a feature branch to this repo, I'd be happy to share my fix. I don't know what kind of changes (if any) would be needed to the test suite, and unfortunately I don't have the time to figure that out. The fix is simply as follows, in include/restclient-cpp/connection.h:267:

    char curlErrorBuf[CURL_ERROR_SIZE] = {0};  // initialize array to prevent valgrind errors

Expected behaviour

no memory leaks in valgrind

Actual behaviour

Relevant part of valgrind output:

...
==32204== Conditional jump or move depends on uninitialised value(s)
==32204==    at 0x405DFB: std::char_traits<char>::length(char const*) (char_traits.h:320)
==32204==    by 0x406099: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (basic_string.h:511)
==32204==    by 0x7D6E036: RestClient::Connection::performCurlRequest(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, RestClient::Response*) (connection.cc:533)
==32204==    by 0x7D6D636: RestClient::Connection::performCurlRequest(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (connection.cc:367)
==32204==    by 0x7D6E2F4: RestClient::Connection::get(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (connection.cc:567)
==32204==    by 0x7D6BB44: RestClient::get(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (restclient.cc:58)
...

Environment and debugging details

  • compiler and version: g++ (GCC) 8.3.0
  • operating system: Ubuntu 18.04.4 LTS
  • version of restclient-cpp 0.5.2 (commit ID b782bd2)
  • how did you install restclient-cpp? git clone, then cmake -D BUILD_SHARED_LIBS=OFF -D CMAKE_CXX_FLAGS="-g -fPIC" .. + make (I include this as a static lib in another shared lib that I build later)
  • libcurl version and compile flags – version below, I'm not sure how to get the compile flags:
curl --version
curl 7.58.0 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.1.1 zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.30.0 librtmp/2.3
Release-Date: 2018-01-24
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL
  • full error output of your build: n/a (it builds okay)
@montdidier
Copy link
Contributor

montdidier commented Mar 28, 2024

Noting this should be fixed - in the next release. 0.5.3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants