On 2019/10/18 15:08, Masato Asou wrote:
> From: YASUOKA Masahiko <[email protected]>
> 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).
Please set REVISION = 14 in ports/devel/valgrind/Makefile so that
"pkg_add -u" will find the update.
Otherwise OK sthen@
> --
> 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