Browse Source

Merge remote-tracking branch 'public/bug16106_02_nm'

Nick Mathewson 6 years ago
parent
commit
8b0b850efa
2 changed files with 8 additions and 6 deletions
  1. 6 0
      changes/bug16106
  2. 2 6
      src/common/sandbox.c

+ 6 - 0
changes/bug16106

@@ -0,0 +1,6 @@
+  o Minor bugfixes (linux seccomp2 sandbox):
+    - Cause a wider variety of unpermitted open() calls to fail with the
+      EACCES error when the sandbox is running. This won't enable any
+      previously non-working functionality, but it should turn several cases
+      from crashes into sandbox warnings. Fixes bug 16106; bugfix on
+      0.2.5.1-alpha.

+ 2 - 6
src/common/sandbox.c

@@ -481,18 +481,14 @@ sb_open(scmp_filter_ctx ctx, sandbox_cfg_t *filter)
     }
   }
 
-  rc = seccomp_rule_add_1(ctx, SCMP_ACT_ERRNO(EACCES), SCMP_SYS(open),
-                SCMP_CMP_MASKED(1, O_CLOEXEC|O_NONBLOCK|O_NOCTTY|O_NOFOLLOW,
-                                O_RDONLY));
+  rc = seccomp_rule_add_0(ctx, SCMP_ACT_ERRNO(EACCES), SCMP_SYS(open));
   if (rc != 0) {
     log_err(LD_BUG,"(Sandbox) failed to add open syscall, received libseccomp "
         "error %d", rc);
     return rc;
   }
 
-  rc = seccomp_rule_add_1(ctx, SCMP_ACT_ERRNO(EACCES), SCMP_SYS(openat),
-                SCMP_CMP_MASKED(2, O_CLOEXEC|O_NONBLOCK|O_NOCTTY|O_NOFOLLOW,
-                                O_RDONLY));
+  rc = seccomp_rule_add_0(ctx, SCMP_ACT_ERRNO(EACCES), SCMP_SYS(openat));
   if (rc != 0) {
     log_err(LD_BUG,"(Sandbox) failed to add openat syscall, received "
             "libseccomp error %d", rc);