mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-09-10 08:42:52 +02:00
fix stack corruption in DB::get
This commit is contained in:
parent
a78ac17d10
commit
71d68e9a60
2 changed files with 24 additions and 5 deletions
|
@ -4,12 +4,14 @@ cmake_minimum_required (VERSION 3.13)
|
||||||
project (zerotier-one LANGUAGES CXX C)
|
project (zerotier-one LANGUAGES CXX C)
|
||||||
|
|
||||||
option(ZT1_CENTRAL_CONTROLLER "Build with ZeroTier Central Controller support" OFF)
|
option(ZT1_CENTRAL_CONTROLLER "Build with ZeroTier Central Controller support" OFF)
|
||||||
|
oiption(ADDRESS_SANITIZER "Build with Address Sanitizer enabled (only for x86_64/arm64)" OFF
|
||||||
|
)
|
||||||
set (PROJ_DIR ${PROJECT_SOURCE_DIR})
|
set (PROJ_DIR ${PROJECT_SOURCE_DIR})
|
||||||
|
|
||||||
execute_process(COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE CPU_ARCHITECTURE)
|
execute_process(COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE CPU_ARCHITECTURE)
|
||||||
set(CPU_ARCHITECTURE ${CPU_ARCHITECTURE} CACHE STRING "Target CPU architecture (detected automatically)")
|
set(CPU_ARCHITECTURE ${CPU_ARCHITECTURE} CACHE STRING "Target CPU architecture (detected automatically)")
|
||||||
message(STATUS "Detected CPU architecture: ${CPU_ARCHITECTURE}")
|
message(STATUS "Detected CPU architecture: ${CPU_ARCHITECTURE}")
|
||||||
|
|
||||||
if(CPU_ARCHITECTURE STREQUAL "x86_64")
|
if(CPU_ARCHITECTURE STREQUAL "x86_64")
|
||||||
add_definitions(
|
add_definitions(
|
||||||
-DZT_ARCHITECTURE=2
|
-DZT_ARCHITECTURE=2
|
||||||
|
@ -20,9 +22,19 @@ if(CPU_ARCHITECTURE STREQUAL "x86_64")
|
||||||
-DZT_USE_FAST_X64_ED25519=1
|
-DZT_USE_FAST_X64_ED25519=1
|
||||||
)
|
)
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -z noexecstack")
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -z noexecstack")
|
||||||
elseif(CPU_ARCHITECTURE STREQUAL "aarch64")
|
|
||||||
|
if(ADDRESS_SANITIZER)
|
||||||
|
add_compile_options(-fsanitize=address)
|
||||||
|
add_link_options(-fsanitize=address)
|
||||||
|
endif()
|
||||||
|
elseif(CPU_ARCHITECTURE STREQUAL "aarch64" OR CPU_ARCHITECTURE STREQUAL "arm64")
|
||||||
add_definitions(-DZT_ARCHITECTURE=4 -DZT_ARCH_ARM_HAS_NEON=1 -DZT_SSO_SUPPORTED=1 -DZT_AES_NEON=1)
|
add_definitions(-DZT_ARCHITECTURE=4 -DZT_ARCH_ARM_HAS_NEON=1 -DZT_SSO_SUPPORTED=1 -DZT_AES_NEON=1)
|
||||||
add_compile_options(-march=armv8-a+crypto -mtune=generic -mstrict-align)
|
add_compile_options(-march=armv8-a+crypto -mtune=generic -mstrict-align)
|
||||||
|
|
||||||
|
if(ADDRESS_SANITIZER)
|
||||||
|
add_compile_options(-fsanitize=address)
|
||||||
|
add_link_options(-fsanitize=address)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include(FetchContent)
|
include(FetchContent)
|
||||||
|
|
|
@ -216,14 +216,21 @@ bool DB::get(const uint64_t networkId, nlohmann::json& network, const uint64_t m
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DB::get(const uint64_t networkId, nlohmann::json& network, const uint64_t memberId, nlohmann::json& member, NetworkSummaryInfo& info)
|
bool DB::get(
|
||||||
|
const uint64_t networkId,
|
||||||
|
nlohmann::json& network,
|
||||||
|
const uint64_t memberId,
|
||||||
|
nlohmann::json& member,
|
||||||
|
NetworkSummaryInfo& info)
|
||||||
{
|
{
|
||||||
auto provider = opentelemetry::trace::Provider::GetTracerProvider();
|
auto provider = opentelemetry::trace::Provider::GetTracerProvider();
|
||||||
auto tracer = provider->GetTracer("db");
|
auto tracer = provider->GetTracer("db");
|
||||||
auto span = tracer->StartSpan("db::getNetworkAndMemberAndSummary");
|
auto span = tracer->StartSpan("db::getNetworkAndMemberAndSummary");
|
||||||
auto scope = tracer->WithActiveSpan(span);
|
auto scope = tracer->WithActiveSpan(span);
|
||||||
char networkIdStr[17];
|
char networkIdStr[32];
|
||||||
char memberIdStr[11];
|
memset(networkIdStr, 0, sizeof(networkIdStr));
|
||||||
|
char memberIdStr[32];
|
||||||
|
memset(memberIdStr, 0, sizeof(memberIdStr));
|
||||||
span->SetAttribute("network_id", Utils::hex(networkId, networkIdStr));
|
span->SetAttribute("network_id", Utils::hex(networkId, networkIdStr));
|
||||||
span->SetAttribute("member_id", Utils::hex(memberId, memberIdStr));
|
span->SetAttribute("member_id", Utils::hex(memberId, memberIdStr));
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue