diff --git a/CHANGELOG b/CHANGELOG index 8c29ec1449de572590123608bc519b4b23f4bfdd..97a2a31efdff14051199e7e61c56d98ba1e3399f 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 c6a34b0fb34e0bff7b46cd2574f3109b4fe8f13e..8a0c129d511325113b55854361e54ec6bd013218 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 ec8321fe0afcf35660e39a2954e7f342f530d9cc..f26790d53558fe58b5b8aa9477a2310e2847a1b8 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); }