case VKI_PR_SET_PTRACER:
PRE_REG_READ2(int, "prctl", int, option, int, ptracer_process_ID);
break;
+ case VKI_PR_SET_SECCOMP:
+ /* This is a bit feeble in that it uses |option| before checking
+ it, but at least both sides of the conditional check it. */
+ if (ARG2 == VKI_SECCOMP_MODE_FILTER) {
+ PRE_REG_READ3(int, "prctl", int, option, int, mode, char*, filter);
+ if (ARG3) {
+ /* Should check that ARG3 points at a valid struct sock_fprog.
+ Sounds complex; hence be lame. */
+ PRE_MEM_READ( "prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, filter)",
+ ARG3, 1 );
+ }
+ } else {
+ PRE_REG_READ2(int, "prctl", int, option, int, mode);
+ }
+ break;
default:
PRE_REG_READ5(long, "prctl",
int, option, unsigned long, arg2, unsigned long, arg3,
# define VKI_PR_ENDIAN_BIG 0
# define VKI_PR_ENDIAN_LITTLE 1 /* True little endian mode */
# define VKI_PR_ENDIAN_PPC_LITTLE 2 /* "PowerPC" pseudo little endian */
+
+#define VKI_PR_SET_SECCOMP 22
+
#define VKI_PR_SET_PTRACER 0x59616d61
//----------------------------------------------------------------------
VKI_KCMP_TYPES
};
+//----------------------------------------------------------------------
+// From linux-3.19-rc5/include/uapi/linux/seccomp.h
+//----------------------------------------------------------------------
+
+#define VKI_SECCOMP_MODE_FILTER 2
+
#endif // __VKI_LINUX_H
/*--------------------------------------------------------------------*/