diff options
-rw-r--r-- | coregrind/m_syswrap/syswrap-linux.c | 2 | ||||
-rw-r--r-- | include/vki/vki-amd64-linux.h | 2 | ||||
-rw-r--r-- | include/vki/vki-ppc32-linux.h | 2 | ||||
-rw-r--r-- | include/vki/vki-ppc64-linux.h | 2 | ||||
-rw-r--r-- | include/vki/vki-x86-linux.h | 2 |
5 files changed, 9 insertions, 1 deletions
diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index d8cbf8782..c34ca68f3 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -2435,7 +2435,7 @@ PRE(sys_openat) int, dfd, const char *, filename, int, flags); } - if (!ML_(fd_allowed)(ARG1, "openat", tid, False)) + if (ARG1 != VKI_AT_FDCWD && !ML_(fd_allowed)(ARG1, "openat", tid, False)) SET_STATUS_Failure( VKI_EBADF ); else PRE_MEM_RASCIIZ( "openat(filename)", ARG2 ); diff --git a/include/vki/vki-amd64-linux.h b/include/vki/vki-amd64-linux.h index e1d05823a..0187f0d3b 100644 --- a/include/vki/vki-amd64-linux.h +++ b/include/vki/vki-amd64-linux.h @@ -240,6 +240,8 @@ struct vki_sigcontext { #define VKI_O_NONBLOCK 04000 #define VKI_O_LARGEFILE 0100000 +#define VKI_AT_FDCWD -100 + #define VKI_F_DUPFD 0 /* dup */ #define VKI_F_GETFD 1 /* get close_on_exec */ #define VKI_F_SETFD 2 /* set/clear close_on_exec */ diff --git a/include/vki/vki-ppc32-linux.h b/include/vki/vki-ppc32-linux.h index 63a2c3f48..a5a14d382 100644 --- a/include/vki/vki-ppc32-linux.h +++ b/include/vki/vki-ppc32-linux.h @@ -301,6 +301,8 @@ struct vki_sigcontext { #define VKI_O_NONBLOCK 04000 #define VKI_O_LARGEFILE 0200000 +#define VKI_AT_FDCWD -100 + #define VKI_F_DUPFD 0 /* dup */ #define VKI_F_GETFD 1 /* get close_on_exec */ #define VKI_F_SETFD 2 /* set/clear close_on_exec */ diff --git a/include/vki/vki-ppc64-linux.h b/include/vki/vki-ppc64-linux.h index 90446c326..5dfde3bf0 100644 --- a/include/vki/vki-ppc64-linux.h +++ b/include/vki/vki-ppc64-linux.h @@ -358,6 +358,8 @@ struct vki_sigcontext { #define VKI_O_NONBLOCK 04000 #define VKI_O_LARGEFILE 0200000 +#define VKI_AT_FDCWD -100 + #define VKI_F_DUPFD 0 /* dup */ #define VKI_F_GETFD 1 /* get close_on_exec */ #define VKI_F_SETFD 2 /* set/clear close_on_exec */ diff --git a/include/vki/vki-x86-linux.h b/include/vki/vki-x86-linux.h index 8c0184a29..05b1ed12c 100644 --- a/include/vki/vki-x86-linux.h +++ b/include/vki/vki-x86-linux.h @@ -272,6 +272,8 @@ struct vki_sigcontext { #define VKI_O_NONBLOCK 04000 #define VKI_O_LARGEFILE 0100000 +#define VKI_AT_FDCWD -100 + #define VKI_F_DUPFD 0 /* dup */ #define VKI_F_GETFD 1 /* get close_on_exec */ #define VKI_F_SETFD 2 /* set/clear close_on_exec */ |