From: Steve Langasek <steve.langasek@canonical.com>
Date: Tue, 23 Apr 2024 14:31:25 +0200
Subject: wrap the write symbols when _FILE_OFFSET_BITS=64 is set

Forwarded: no
Last-Update: 2025-03-21

The setsockopt function in glibc is only used on 32-bit archs when LFS is
not enabled.  Support wrapping __setsockopt64 as well.
---
 boreas/CMakeLists.txt | 2 +-
 boreas/util_tests.c   | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/boreas/CMakeLists.txt b/boreas/CMakeLists.txt
index f93a426..ec5c73f 100644
--- a/boreas/CMakeLists.txt
+++ b/boreas/CMakeLists.txt
@@ -113,7 +113,7 @@ if (BUILD_TESTS)
                  ${PCAP_LDFLAGS} ${LIBNET_LDFLAGS} ${GLIB_LDFLAGS} ${LINKER_HARDENING_FLAGS} ${CMAKE_THREAD_LIBS_INIT})
 
   set (UTIL_TEST_LINKER_WRAP_OPTIONS
-      "-Wl,-wrap,socket,-wrap,setsockopt")
+      "-Wl,-wrap,socket,-wrap,setsockopt,-wrap,__setsockopt64")
   add_unit_test (util-test util_tests.c gvm_base_shared
                  ${GLIB_LDFLAGS} ${LINKER_HARDENING_FLAGS} ${CMAKE_THREAD_LIBS_INIT} ${UTIL_TEST_LINKER_WRAP_OPTIONS})
 endif (BUILD_TESTS)
diff --git a/boreas/util_tests.c b/boreas/util_tests.c
index b331c33..5f3f13f 100644
--- a/boreas/util_tests.c
+++ b/boreas/util_tests.c
@@ -17,6 +17,11 @@ AfterEach (util)
 {
 }
 
+#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64
+#define __real_setsockopt __real___setsockopt64
+#define __wrap_setsockopt __wrap___setsockopt64
+#endif
+
 __attribute__ ((weak)) int
 __real_socket (__attribute__ ((unused)) int domain,
                __attribute__ ((unused)) int type,
