Module Name:    src
Committed By:   kamil
Date:           Sat May 26 15:15:17 UTC 2018

Modified Files:
        src/tests/lib/libc/sys: t_ptrace_wait.h

Log Message:
Introduce can_we_write_to_text() to ATF ptrace(2) tests

The purpose of this function is to detect whether a tracer can write to the
.text section of its tracee.

Sponsored by <The NetBSD Foundation>


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/tests/lib/libc/sys/t_ptrace_wait.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/lib/libc/sys/t_ptrace_wait.h
diff -u src/tests/lib/libc/sys/t_ptrace_wait.h:1.7 src/tests/lib/libc/sys/t_ptrace_wait.h:1.8
--- src/tests/lib/libc/sys/t_ptrace_wait.h:1.7	Thu May 24 08:28:40 2018
+++ src/tests/lib/libc/sys/t_ptrace_wait.h	Sat May 26 15:15:17 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_ptrace_wait.h,v 1.7 2018/05/24 08:28:40 kamil Exp $	*/
+/*	$NetBSD: t_ptrace_wait.h,v 1.8 2018/05/26 15:15:17 kamil Exp $	*/
 
 /*-
  * Copyright (c) 2016 The NetBSD Foundation, Inc.
@@ -504,6 +504,23 @@ can_we_set_dbregs(void)
 }
 #endif
 
+static bool __used
+can_we_write_to_text(pid_t pid)
+{
+	int mib[3];
+	int paxflags;
+	size_t len = sizeof(int);
+
+	mib[0] = CTL_PROC;
+	mib[1] = pid;
+	mib[2] = PROC_PID_PAXFLAGS;
+
+	if (sysctl(mib, 3, &paxflags, &len, NULL, 0) == -1)
+		return false;
+
+	return !(paxflags & CTL_PROC_PAXFLAGS_MPROTECT);
+}
+
 static void __used
 trigger_trap(void)
 {

Reply via email to