From 0eb15606b603a03edf0ab254e8dd3f3e424c5188 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 23 Nov 2022 11:46:45 +0100 Subject: [PATCH 1/2] socket_wrapper: inject O_LARGEFILE to open[64|at]() if needed On 32bit systems this is normally done by glibc if _FILE_OFFSET_BITS is 64, but with socket wrapper we don't want to define _FILE_OFFSET_BITS=64, as we need to overload open64 explicitly. But we need to inject O_LARGEFILE for being transparent to the application. BUG: https://bugzilla.samba.org/show_bug.cgi?id=15251 Signed-off-by: Stefan Metzmacher --- src/socket_wrapper.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/socket_wrapper.c b/src/socket_wrapper.c index ec8321f..f26790d 100644 --- a/src/socket_wrapper.c +++ b/src/socket_wrapper.c @@ -984,6 +984,19 @@ static FILE *libc_fopen64(const char *name, const char *mode) } #endif /* HAVE_FOPEN64 */ +static void swrap_inject_o_largefile(int *flags) +{ + (void)*flags; /* maybe unused */ +#if SIZE_MAX == 0xffffffffUL && defined(O_LARGEFILE) +#ifdef O_PATH + if (((*flags) & O_PATH) == 0) +#endif + { + *flags |= O_LARGEFILE; + } +#endif +} + static int libc_vopen(const char *pathname, int flags, va_list ap) { int mode = 0; @@ -991,6 +1004,8 @@ static int libc_vopen(const char *pathname, int flags, va_list ap) swrap_bind_symbol_all(); + swrap_inject_o_largefile(&flags); + if (flags & O_CREAT) { mode = va_arg(ap, int); } @@ -1019,6 +1034,8 @@ static int libc_vopen64(const char *pathname, int flags, va_list ap) swrap_bind_symbol_all(); + swrap_inject_o_largefile(&flags); + if (flags & O_CREAT) { mode = va_arg(ap, int); } @@ -1035,6 +1052,8 @@ static int libc_vopenat(int dirfd, const char *path, int flags, va_list ap) swrap_bind_symbol_all(); + swrap_inject_o_largefile(&flags); + if (flags & O_CREAT) { mode = va_arg(ap, int); } -- GitLab From 0559212402403c55cb5327998b69683e927d10bb Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 23 Nov 2022 12:12:12 +0100 Subject: [PATCH 2/2] Bump version to 1.3.5 Signed-off-by: Stefan Metzmacher --- CHANGELOG | 5 +++++ CMakeLists.txt | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 8c29ec1..97a2a31 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,11 @@ ChangeLog ========== +version 1.3.5 (released 2022-11-23) + * Inject O_LARGEFILE as needed on 32bit + * pkgconfig: Fix path to libsocket_wrapper.so + * Fix -Wcast-qual warnings + version 1.3.4 (released 2022-07-21) * Fixed TOCTOU issue with udp auto binding * Fixed running on FreeBSD diff --git a/CMakeLists.txt b/CMakeLists.txt index c6a34b0..8a0c129 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,7 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules") include(DefineCMakeDefaults) include(DefineCompilerFlags) -project(socket_wrapper VERSION 1.3.4 LANGUAGES C) +project(socket_wrapper VERSION 1.3.5 LANGUAGES C) # global needed variables set(APPLICATION_NAME ${PROJECT_NAME}) @@ -25,7 +25,7 @@ set(APPLICATION_NAME ${PROJECT_NAME}) # Increment PATCH. set(LIBRARY_VERSION_MAJOR 0) set(LIBRARY_VERSION_MINOR 3) -set(LIBRARY_VERSION_PATCH 1) +set(LIBRARY_VERSION_PATCH 2) set(LIBRARY_VERSION "${LIBRARY_VERSION_MAJOR}.${LIBRARY_VERSION_MINOR}.${LIBRARY_VERSION_PATCH}") set(LIBRARY_SOVERSION ${LIBRARY_VERSION_MAJOR}) -- GitLab