The branch, master has been updated via f88fe92 Bump version to 1.3.5 via c562535 socket_wrapper: inject O_LARGEFILE to open[64|at]() if needed via f0a511f Avoid dclose(RTLD_NEXT) from 6854835 pkgconfig: Fix path to libsocket_wrapper.so
https://git.samba.org/?p=socket_wrapper.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit f88fe92249b156d90ecff78d3a5ef0e5bbcaa6b0 Author: Stefan Metzmacher <me...@samba.org> Date: Wed Nov 23 12:12:12 2022 +0100 Bump version to 1.3.5 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> commit c562535f1efef204f553ed793cfd9c7efada8b3f Author: Stefan Metzmacher <me...@samba.org> Date: Wed Nov 23 11:46:45 2022 +0100 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 <me...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> commit f0a511f6a4b60b63efcf0ddeec889672bd6d6a76 Author: Samuel Thibault <samuel.thiba...@ens-lyon.org> Date: Thu Nov 10 18:36:29 2022 +0000 Avoid dclose(RTLD_NEXT) In case the libc was not found and RTLD_NEXT is used instead, we should not dlclose it, otherwise mayhem happens. BUG: https://bugzilla.samba.org/show_bug.cgi?id=15228 Signed-off-by: Samuel Thibault <samuel.thiba...@ens-lyon.org> Reviewed-by: Andreas Schneider <a...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> ----------------------------------------------------------------------- Summary of changes: CHANGELOG | 6 ++++++ CMakeLists.txt | 4 ++-- src/socket_wrapper.c | 31 +++++++++++++++++++++++++++++-- 3 files changed, 37 insertions(+), 4 deletions(-) Changeset truncated at 500 lines: diff --git a/CHANGELOG b/CHANGELOG index 8c29ec1..31954d6 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,12 @@ 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 + * Fix dclose(RTLD_NEXT) + 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}) diff --git a/src/socket_wrapper.c b/src/socket_wrapper.c index ec8321f..bedda07 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); } @@ -7831,10 +7850,18 @@ void swrap_destructor(void) SAFE_FREE(sockets); - if (swrap.libc.handle != NULL) { + if (swrap.libc.handle != NULL +#ifdef RTLD_NEXT + && swrap.libc.handle != RTLD_NEXT +#endif + ) { dlclose(swrap.libc.handle); } - if (swrap.libc.socket_handle) { + if (swrap.libc.socket_handle +#ifdef RTLD_NEXT + && swrap.libc.socket_handle != RTLD_NEXT +#endif + ) { dlclose(swrap.libc.socket_handle); } } -- Socket Wrapper Repository