'Segmentation fault in getting secret from vault while using libvault library in c++

I am trying to connect with vault using libvault library. but, i am getting segmentation fault like below

  • Trying ..*....
  • TCP_NODELAY set
  • Connected to vault..-...net (..*.) port 8200 (#0)
  • ALPN, offering http/1.1
  • successfully set certificate verify locations:
  • CAfile: /etc/ssl/certs/ca-certificates.crt CApath: none

Thread 5 "batch" received signal SIGSEGV, Segmentation fault.

Code i have written is below

        Vault::Token rootToken{"*******"};

        Vault::TokenStrategy tokenStrategy{rootToken};
        Vault::HttpErrorCallback httpErrorCallback = [&](std::string err) {
        std::cout << err << std::endl;
        };
        Vault::Host host{"vault.*****.***-**.***.***.net"};
        Vault:: Port port{"8200"};
        //Vault:: ConnectTimeout timeout{10000};
        Vault::Config config =        Vault::ConfigBuilder().withDebug(true).withTlsEnabled(true).withHost(host).withPort(port).build();
       
        Vault::Client vaultClient{config, tokenStrategy, httpErrorCallback};
        
         Vault::SecretMount mount{"/****/*****/*****"};
        Vault::KeyValue kv{vaultClient,mount};
      
        Vault::Path key{"**/***/***"};
     
            std::cout<<"vault check initial<<std::endl;
            

           auto response = kv.read(key);
           
          if (response) {
              std::cout<<"vault check"<<std::endl;
            std::cout << response.value() << std::endl;
          } else {
            std::cout << "Unable to read secrets" << std::endl;
          }

exception is during reading the kv.read(key)

Below is the stacktrace ...

(gdb) bt #0 0x0000000000000009 in ?? () #1 0x00000000011687be in ossl_connect_step1 (conn=conn@entry=0x7fffe40288a0, sockindex=sockindex@entry=0) at /3rdparty/curl/lib/vtls/openssl.c:2605 #2 0x000000000116acde in ossl_connect_common (conn=0x7fffe40288a0, sockindex=0, nonblocking=nonblocking@entry=true, done=0x7ffff488e17d) at /3rdparty/curl/lib/vtls/openssl.c:3457 #3 0x000000000116aed2 in Curl_ossl_connect_nonblocking (conn=<optimized out>, sockindex=<optimized out>, done=<optimized out>) at /3rdparty/curl/lib/vtls/openssl.c:3543 #4 0x0000000001141f4c in Curl_ssl_connect_nonblocking (conn=conn@entry=0x7fffe40288a0, sockindex=sockindex@entry=0, done=done@entry=0x7ffff488e17d) at /3rdparty/curl/lib/vtls/vtls.c:275 #5 0x0000000001151cdb in https_connecting (conn=conn@entry=0x7fffe40288a0, done=done@entry=0x7ffff488e17d) at /3rdparty/curl/lib/http.c:1507 #6 0x000000000115349e in Curl_http_connect (conn=0x7fffe40288a0, done=0x7ffff488e17d) at /3rdparty/curl/lib/http.c:1436 #7 0x000000000113d346 in Curl_protocol_connect (conn=0x7fffe40288a0, protocol_done=protocol_done@entry=0x7ffff488e17d) at /3rdparty/curl/lib/url.c:1647 #8 0x000000000112dfd7 in multi_runsingle (multi=multi@entry=0x7fffe4007ed0, now=..., data=data@entry=0x7fffe401e2a0) at /3rdparty/curl/lib/multi.c:1610 #9 0x000000000112ecd4 in curl_multi_perform (multi=multi@entry=0x7fffe4007ed0, running_handles=running_handles@entry=0x7ffff488e2c0) at /3rdparty/curl/lib/multi.c:2171 #10 0x00000000011256b2 in easy_transfer (multi=multi@entry=0x7fffe4007ed0) at /3rdparty/curl/lib/easy.c:686 #11 0x0000000001125809 in easy_perform (data=0x7fffe401e2a0, events=events@entry=false) at /3rdparty/curl/lib/easy.c:779 --Type <RET> for more, q to quit, c to continue without paging--c #12 0x0000000001125b08 in curl_easy_perform (data=<optimized out>) at /3rdparty/curl/lib/easy.c:798 #13 0x0000000001115d93 in Vault::HttpClient::CurlWrapper::execute (this=this@entry=0x7ffff488e4a0) at /3rdparty/libvault/include/VaultClient.h:201 #14 0x0000000001114ef6 in Vault::HttpClient::executeRequest(Vault::Tiny<Vault::UrlDetail, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, Vault::Tiny<Vault::TokenDetail, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, Vault::Tiny<Vault::NamespaceDetail, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, std::function<void (void*)> const&, std::function<curl_slist* (curl_slist*)> const&, std::function<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)> const&) const (this=this@entry=0x7ffff488e920, url=..., token=..., ns=..., setupCallback=..., curlHeaderCallback=..., errorCallback=...) at /3rdparty/libvault/src/support/HttpClient.cpp:184 #15 0x0000000001114fc5 in Vault::HttpClient::get (this=this@entry=0x7ffff488e920, url=..., token=..., ns=...) at 3rdparty/libvault/src/support/HttpClient.cpp:33 #16 0x0000000001116199 in Vault::HttpConsumer::get (client=..., url=...) at /3rdparty/libvault/src/support/HttpConsumer.cpp:12 #17 0x000000000110f940 in Vault::KeyValue::read (this=this@entry=0x7ffff488e840, path=...) at /3rdparty/libvault/src/engines/KeyValue.cpp:48

With same mount and key , i am able to connect with vault using python library



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source