From: Dirk Mueller Date: Wed, 31 Jan 2007 23:06:08 +0000 (+0000) Subject: implement support for AT_FDCWD in openat() X-Git-Tag: svn/VALGRIND_3_3_0~398 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ac2bbadda53005fcf3afff7014cab526eb2d8b62;p=thirdparty%2Fvalgrind.git implement support for AT_FDCWD in openat() git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6566 --- diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index d8cbf87829..c34ca68f36 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 e1d05823aa..0187f0d3b5 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 63a2c3f48a..a5a14d382a 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 90446c3265..5dfde3bf07 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 8c0184a293..05b1ed12c3 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 */