'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 |
|---|
