From 616bd63021dd1f90508efa3198957edd371d1150 Mon Sep 17 00:00:00 2001 From: jfreegman Date: Sun, 10 Apr 2022 12:44:04 -0400 Subject: [PATCH] Downgrade C++ version to 17 --- CMakeLists.txt | 4 +- testing/fuzzing/fuzz_support.cc | 133 ++++++++++++++++---------------- 2 files changed, 69 insertions(+), 68 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d18019a9..fe0ad88b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,12 +82,12 @@ set(CMAKE_MACOSX_RPATH ON) if(${CMAKE_VERSION} VERSION_LESS "3.1.0") if(NOT MSVC) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++20") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17") endif() else() # Set standard version for compiler. set(CMAKE_C_STANDARD 99) - set(CMAKE_CXX_STANDARD 20) + set(CMAKE_CXX_STANDARD 17) set(CMAKE_C_EXTENSIONS OFF) set(CMAKE_CXX_EXTENSIONS OFF) diff --git a/testing/fuzzing/fuzz_support.cc b/testing/fuzzing/fuzz_support.cc index 21a3b310..e5159feb 100644 --- a/testing/fuzzing/fuzz_support.cc +++ b/testing/fuzzing/fuzz_support.cc @@ -41,77 +41,78 @@ static int recv_common(Fuzz_Data &input, void *buf, size_t buf_len) } static const Network_Funcs fuzz_network_funcs = { - .close = [](void *obj, int sock) { return 0; }, - .accept = [](void *obj, int sock) { return 2; }, - .bind = [](void *obj, int sock, const Network_Addr *addr) { return 0; }, - .listen = [](void *obj, int sock, int backlog) { return 0; }, - .recvbuf = - [](void *obj, int sock) { - // TODO(iphydf): Return something sensible here (from the fuzzer): number of - // bytes to be read from the socket. - return 0; - }, - .recv = - [](void *obj, int sock, uint8_t *buf, size_t len) { - // Receive data from the fuzzer. - return recv_common(static_cast(obj)->data, buf, len); - }, - .recvfrom = - [](void *obj, int sock, uint8_t *buf, size_t len, Network_Addr *addr) { - addr->addr = sockaddr_storage{}; - // Dummy Addr - addr->addr.ss_family = AF_INET; + /* .close = */ [](void *obj, int sock) { return 0; }, + /* .accept = */ [](void *obj, int sock) { return 2; }, + /* .bind = */ [](void *obj, int sock, const Network_Addr *addr) { return 0; }, + /* .listen = */ [](void *obj, int sock, int backlog) { return 0; }, + /* .recvbuf = */ + [](void *obj, int sock) { + // TODO(iphydf): Return something sensible here (from the fuzzer): number of + // bytes to be read from the socket. + return 0; + }, + /* .recv = */ + [](void *obj, int sock, uint8_t *buf, size_t len) { + // Receive data from the fuzzer. + return recv_common(static_cast(obj)->data, buf, len); + }, + /* .recvfrom = */ + [](void *obj, int sock, uint8_t *buf, size_t len, Network_Addr *addr) { + addr->addr = sockaddr_storage{}; + // Dummy Addr + addr->addr.ss_family = AF_INET; - // We want an AF_INET address with dummy values - sockaddr_in *addr_in = reinterpret_cast(&addr->addr); - addr_in->sin_port = 12356; - addr_in->sin_addr.s_addr = INADDR_LOOPBACK + 1; - addr->size = sizeof(struct sockaddr); + // We want an AF_INET address with dummy values + sockaddr_in *addr_in = reinterpret_cast(&addr->addr); + addr_in->sin_port = 12356; + addr_in->sin_addr.s_addr = INADDR_LOOPBACK + 1; + addr->size = sizeof(struct sockaddr); - return recv_common(static_cast(obj)->data, buf, len); - }, - .send = - [](void *obj, int sock, const uint8_t *buf, size_t len) { - // Always succeed. - return static_cast(len); - }, - .sendto = - [](void *obj, int sock, const uint8_t *buf, size_t len, const Network_Addr *addr) { - // Always succeed. - return static_cast(len); - }, - .socket = [](void *obj, int domain, int type, int proto) { return 1; }, - .socket_nonblock = [](void *obj, int sock, bool nonblock) { return 0; }, - .getsockopt = - [](void *obj, int sock, int level, int optname, void *optval, size_t *optlen) { - memset(optval, 0, *optlen); - return 0; - }, - .setsockopt = [](void *obj, int sock, int level, int optname, const void *optval, - size_t optlen) { return 0; }, + return recv_common(static_cast(obj)->data, buf, len); + }, + /* .send = */ + [](void *obj, int sock, const uint8_t *buf, size_t len) { + // Always succeed. + return static_cast(len); + }, + /* .sendto = */ + [](void *obj, int sock, const uint8_t *buf, size_t len, const Network_Addr *addr) { + // Always succeed. + return static_cast(len); + }, + /* .socket = */ [](void *obj, int domain, int type, int proto) { return 1; }, + /* .socket_nonblock = */ [](void *obj, int sock, bool nonblock) { return 0; }, + /* .getsockopt = */ + [](void *obj, int sock, int level, int optname, void *optval, size_t *optlen) { + memset(optval, 0, *optlen); + return 0; + }, + /* .setsockopt = */ + [](void *obj, int sock, int level, int optname, const void *optval, size_t optlen) { + return 0; + }, }; static const Random_Funcs fuzz_random_funcs = { - .random_bytes = - [](void *obj, uint8_t *bytes, size_t length) { - Fuzz_System *sys = static_cast(obj); - // Amount of data is limited - const size_t available = sys->data.size; - const size_t bytes_read = std::min(length, available); - // Initialize everything to make MSAN and others happy - std::memset(bytes, 0, length); - std::memcpy(bytes, sys->data.data, bytes_read); - sys->data.data += bytes_read; - sys->data.size -= bytes_read; - }, - .random_uniform = - [](void *obj, uint32_t upper_bound) { - Fuzz_System *sys = static_cast(obj); - uint32_t randnum; - sys->rng->funcs->random_bytes( - sys, reinterpret_cast(&randnum), sizeof(randnum)); - return randnum % upper_bound; - }, + /* .random_bytes = */ + [](void *obj, uint8_t *bytes, size_t length) { + Fuzz_System *sys = static_cast(obj); + // Amount of data is limited + const size_t available = sys->data.size; + const size_t bytes_read = std::min(length, available); + // Initialize everything to make MSAN and others happy + std::memset(bytes, 0, length); + std::memcpy(bytes, sys->data.data, bytes_read); + sys->data.data += bytes_read; + sys->data.size -= bytes_read; + }, + /* .random_uniform = */ + [](void *obj, uint32_t upper_bound) { + Fuzz_System *sys = static_cast(obj); + uint32_t randnum; + sys->rng->funcs->random_bytes(sys, reinterpret_cast(&randnum), sizeof(randnum)); + return randnum % upper_bound; + }, }; Fuzz_System::Fuzz_System(Fuzz_Data &input)