From: YASUOKA Masahiko <yasu...@openbsd.org>
Date: Wed, 02 Oct 2019 23:29:05 +0900 (JST)

> I looked into the problem more.
> 
>  - unveil(2) itself fails
>  - so file system related system calls are not restricted (yet)
> 
> valgrind complains:
> 
> ==13326==
> --13326-- WARNING: unhandled syscall: 114
> --13326-- You may be able to write your own handler.
> --13326-- Read the file README_MISSING_SYSCALL_OR_IOCTL.
> --13326-- Nevertheless we consider this a bug.  Please report
> --13326-- it at http://valgrind.org/support/bug_reports.html.
> 
> valgrind doesn't support unveil(2) yet.  I suppose Asou can add that.

I was added unveil(2).
--
ASOU Masato

Index: patches/patch-coregrind_m_syswrap_priv_syswrap_openbsd_h
===================================================================
RCS file: patches/patch-coregrind_m_syswrap_priv_syswrap_openbsd_h
diff -N patches/patch-coregrind_m_syswrap_priv_syswrap_openbsd_h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-coregrind_m_syswrap_priv_syswrap_openbsd_h    8 Oct 2019 
02:53:32 -0000
@@ -0,0 +1,10 @@
+--- coregrind/m_syswrap/priv_syswrap-openbsd.h.orig
++++ coregrind/m_syswrap/priv_syswrap-openbsd.h
+@@ -144,6 +144,7 @@
+ DECL_TEMPLATE(openbsd, sys_pledge);
+ DECL_TEMPLATE(openbsd, sys_ppoll);
+ DECL_TEMPLATE(openbsd, sys_pselect);
++DECL_TEMPLATE(openbsd, sys_unveil);
+ DECL_TEMPLATE(openbsd, sys_sigsuspend);
+ DECL_TEMPLATE(openbsd, sys_gettimeofday);
+ DECL_TEMPLATE(openbsd, sys_getrusage);
Index: patches/patch-coregrind_m_syswrap_syswrap_openbsd_c
===================================================================
RCS file: patches/patch-coregrind_m_syswrap_syswrap_openbsd_c
diff -N patches/patch-coregrind_m_syswrap_syswrap_openbsd_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-coregrind_m_syswrap_syswrap_openbsd_c 8 Oct 2019 02:53:32 
-0000
@@ -0,0 +1,30 @@
+--- coregrind/m_syswrap/syswrap-openbsd.c.orig
++++ coregrind/m_syswrap/syswrap-openbsd.c
+@@ -575,6 +579,17 @@
+ // XXXTBD
+ }
+ 
++PRE(sys_unveil)
++{
++   PRINT("sys_unveil ( %#lx(%s), %#lx(%s) )",
++         ARG1,(char *)ARG1,ARG2,(char*)ARG2);
++   PRE_REG_READ2(long, "unveil", const char *, path, const char *, 
permissions);
++   if (ARG1 != (UWord)NULL)
++     PRE_MEM_RASCIIZ( "unveil(path)", ARG1 );
++   if (ARG2 != (UWord)NULL)
++     PRE_MEM_RASCIIZ( "unveil(permissions)", ARG2 );
++}
++
+ PRE(sys_getsockname)
+ {
+    PRINT("sys_getsockname ( %ld, %#lx, %#lx )",ARG1,ARG2,ARG3);
+@@ -4079,7 +4093,7 @@
+   BSDX_(__NR_sigsuspend,      sys_sigsuspend),        // 111
+   BSDX_(__NR_sendsyslog,      sys_sendsyslog),        // 112
+   // obsol orecvmsg                                   // 113
+-  // obsol osendmsg                                   // 114
++  BSDX_(__NR_unveil,          sys_unveil),            // 114
+   // obsol vtrace                                     // 115
+ 
+   BSDX_(__NR_getsockopt,      sys_getsockopt),        // 118
+Only in pobj/valgrind-3.10.1/valgrind-3.10.1/coregrind/m_syswrap: 
syswrap-openbsd.c.orig
Index: patches/patch-include_vki_vki_scnums_openbsd_h
===================================================================
RCS file: patches/patch-include_vki_vki_scnums_openbsd_h
diff -N patches/patch-include_vki_vki_scnums_openbsd_h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-include_vki_vki_scnums_openbsd_h      8 Oct 2019 02:53:32 
-0000
@@ -0,0 +1,10 @@
+--- include/vki/vki-scnums-openbsd.h.orig
++++ include/vki/vki-scnums-openbsd.h
+@@ -146,6 +146,7 @@
+ #define       __NR_pselect            110
+ #define       __NR_sigsuspend         111
+ #define       __NR_sendsyslog         112
++#define       __NR_unveil             114
+ #define       __NR_getsockopt         118
+ #define       __NR_thrkill            119
+ #define       __NR_readv              120

Reply via email to