From: Stefan Metzmacher Date: Wed, 23 Nov 2022 10:38:20 +0000 (+0100) Subject: lib/replace: let rep_openat2() inject O_LARGEFILE as needed X-Git-Tag: talloc-2.4.0~485 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6dddb268df08fd91f8e0f189f948ad76e5805dca;p=thirdparty%2Fsamba.git lib/replace: let rep_openat2() inject O_LARGEFILE as needed BUG: https://bugzilla.samba.org/show_bug.cgi?id=15251 Signed-off-by: Stefan Metzmacher Reviewed-by: Ralph Boehme --- diff --git a/lib/replace/replace.c b/lib/replace/replace.c index cbf372e494f..68829f2a3c9 100644 --- a/lib/replace/replace.c +++ b/lib/replace/replace.c @@ -1116,6 +1116,22 @@ long rep_openat2(int dirfd, const char *pathname, struct open_how *how, size_t size) { #ifdef __NR_openat2 +#if _FILE_OFFSET_BITS == 64 && SIZE_MAX == 0xffffffffUL && defined(O_LARGEFILE) + struct open_how __how; + +#if defined(O_PATH) && ! defined(DISABLE_OPATH) + if ((how->flags & O_PATH) == 0) +#endif + { + if (sizeof(__how) == size) { + __how = *how; + + __how.flags |= O_LARGEFILE; + how = &__how; + } + } +#endif + return syscall(__NR_openat2, dirfd, pathname,