diff options
author | Rich Felker <dalias@aerifal.cx> | 2020-09-03 17:37:11 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2020-09-03 17:37:11 -0400 |
commit | b8b729bd22c28c9116c2fce65dce207a35299c26 (patch) | |
tree | 8a44d7f01cd53d1e03a8345a82b3b784de3f8091 | |
parent | 262003ad9d8894c03fa4b033140e1e14e4c24c4d (diff) | |
download | musl-b8b729bd22c28c9116c2fce65dce207a35299c26.tar.gz |
fix missing O_LARGEFILE values on x86_64, x32, and mips64
prior to commit 685e40bb09f5f24a2af54ea09c97328808f76990, x86_64 was
correctly passing O_LARGEFILE to SYS_open; it was removed (defined to
0 in the public header, and changed to use the public definition) as
part of that change, probably out of a mistaken belief that it's not
needed.
however, on a mixed system with 32-bit and 64-bit binaries, it's
important that all files be opened with O_LARGEFILE, even if the
opening process is 64-bit, in case a descriptor is passed to a 32-bit
process. otherwise, attempts to access past 2GB in the 32-bit process
could produce EOVERFLOW.
most 64-bit archs added later got this right alread, except for
mips64. x32 was also affected. there are now fixed.
-rw-r--r-- | arch/mips64/bits/fcntl.h | 2 | ||||
-rw-r--r-- | arch/x32/bits/fcntl.h | 2 | ||||
-rw-r--r-- | arch/x86_64/bits/fcntl.h | 2 |
3 files changed, 3 insertions, 3 deletions
diff --git a/arch/mips64/bits/fcntl.h b/arch/mips64/bits/fcntl.h index 3bcec15e..5da1eef8 100644 --- a/arch/mips64/bits/fcntl.h +++ b/arch/mips64/bits/fcntl.h @@ -13,7 +13,7 @@ #define O_ASYNC 010000 #define O_DIRECT 0100000 -#define O_LARGEFILE 0 +#define O_LARGEFILE 020000 #define O_NOATIME 01000000 #define O_PATH 010000000 #define O_TMPFILE 020200000 diff --git a/arch/x32/bits/fcntl.h b/arch/x32/bits/fcntl.h index 1b88ad39..08627f81 100644 --- a/arch/x32/bits/fcntl.h +++ b/arch/x32/bits/fcntl.h @@ -13,7 +13,7 @@ #define O_ASYNC 020000 #define O_DIRECT 040000 -#define O_LARGEFILE 0 +#define O_LARGEFILE 0100000 #define O_NOATIME 01000000 #define O_PATH 010000000 #define O_TMPFILE 020200000 diff --git a/arch/x86_64/bits/fcntl.h b/arch/x86_64/bits/fcntl.h index 1b88ad39..08627f81 100644 --- a/arch/x86_64/bits/fcntl.h +++ b/arch/x86_64/bits/fcntl.h @@ -13,7 +13,7 @@ #define O_ASYNC 020000 #define O_DIRECT 040000 -#define O_LARGEFILE 0 +#define O_LARGEFILE 0100000 #define O_NOATIME 01000000 #define O_PATH 010000000 #define O_TMPFILE 020200000 |