mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-04 02:18:37 +00:00
Add support for F_DUPFD_CLOEXEC. Fixes #238696.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11316
This commit is contained in:
parent
4af25c431f
commit
3d13995189
@ -3582,6 +3582,7 @@ PRE(sys_fcntl)
|
||||
|
||||
// These ones use ARG3 as "arg".
|
||||
case VKI_F_DUPFD:
|
||||
case VKI_F_DUPFD_CLOEXEC:
|
||||
case VKI_F_SETFD:
|
||||
case VKI_F_SETFL:
|
||||
case VKI_F_SETLEASE:
|
||||
@ -3634,6 +3635,15 @@ POST(sys_fcntl)
|
||||
ML_(record_fd_open_named)(tid, RES);
|
||||
}
|
||||
}
|
||||
else if (ARG2 == VKI_F_DUPFD_CLOEXEC) {
|
||||
if (!ML_(fd_allowed)(RES, "fcntl(DUPFD_CLOEXEC)", tid, True)) {
|
||||
VG_(close)(RES);
|
||||
SET_STATUS_Failure( VKI_EMFILE );
|
||||
} else {
|
||||
if (VG_(clo_track_fds))
|
||||
ML_(record_fd_open_named)(tid, RES);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// XXX: wrapper only suitable for 32-bit systems
|
||||
@ -3654,6 +3664,7 @@ PRE(sys_fcntl64)
|
||||
|
||||
// These ones use ARG3 as "arg".
|
||||
case VKI_F_DUPFD:
|
||||
case VKI_F_DUPFD_CLOEXEC:
|
||||
case VKI_F_SETFD:
|
||||
case VKI_F_SETFL:
|
||||
case VKI_F_SETLEASE:
|
||||
@ -3699,6 +3710,15 @@ POST(sys_fcntl64)
|
||||
ML_(record_fd_open_named)(tid, RES);
|
||||
}
|
||||
}
|
||||
else if (ARG2 == VKI_F_DUPFD_CLOEXEC) {
|
||||
if (!ML_(fd_allowed)(RES, "fcntl64(DUPFD_CLOEXEC)", tid, True)) {
|
||||
VG_(close)(RES);
|
||||
SET_STATUS_Failure( VKI_EMFILE );
|
||||
} else {
|
||||
if (VG_(clo_track_fds))
|
||||
ML_(record_fd_open_named)(tid, RES);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
|
||||
@ -1296,10 +1296,17 @@ struct vki_dirent {
|
||||
// From linux-2.6.8.1/include/linux/fcntl.h
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
#define VKI_F_SETLEASE (VKI_F_LINUX_SPECIFIC_BASE+0)
|
||||
#define VKI_F_GETLEASE (VKI_F_LINUX_SPECIFIC_BASE+1)
|
||||
#define VKI_F_SETLEASE (VKI_F_LINUX_SPECIFIC_BASE + 0)
|
||||
#define VKI_F_GETLEASE (VKI_F_LINUX_SPECIFIC_BASE + 1)
|
||||
|
||||
#define VKI_F_NOTIFY (VKI_F_LINUX_SPECIFIC_BASE+2)
|
||||
#define VKI_F_CANCELLK (VKI_F_LINUX_SPECIFIC_BASE + 5)
|
||||
|
||||
#define VKI_F_DUPFD_CLOEXEC (VKI_F_LINUX_SPECIFIC_BASE + 6)
|
||||
|
||||
#define VKI_F_NOTIFY (VKI_F_LINUX_SPECIFIC_BASE + 2)
|
||||
|
||||
#define VKI_F_SETPIPE_SZ (VKI_F_LINUX_SPECIFIC_BASE + 7)
|
||||
#define VKI_F_GETPIPE_SZ (VKI_F_LINUX_SPECIFIC_BASE + 8)
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// From linux-2.6.8.1/include/linux/sysctl.h
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user