aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coregrind/m_syswrap/syswrap-linux.c2
-rw-r--r--include/vki/vki-amd64-linux.h2
-rw-r--r--include/vki/vki-ppc32-linux.h2
-rw-r--r--include/vki/vki-ppc64-linux.h2
-rw-r--r--include/vki/vki-x86-linux.h2
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 */