]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Fix crash when calling openat with sandbox enabled #25440
authorDaniel Pinto <danielpinto52@gmail.com>
Tue, 17 Apr 2018 00:31:49 +0000 (01:31 +0100)
committerNick Mathewson <nickm@torproject.org>
Wed, 8 Aug 2018 13:21:29 +0000 (09:21 -0400)
The seccomp rule for the openat syscall checks for the AT_FDCWD
constant. Because this constant is usually a negative value, a
cast to unsigned int is necessary to make sure it does not get
converted to uint64_t used by seccomp.

More info on:
https://github.com/seccomp/libseccomp/issues/69#issuecomment-273805980

src/common/sandbox.c

index 3d27ea66b507ab817f5b0606d3f52c8862b61f90..0a972d496b0702877aaeee04f22058aac6152906 100644 (file)
@@ -469,7 +469,7 @@ allow_file_open(scmp_filter_ctx ctx, int use_openat, const char *file)
 {
   if (use_openat) {
     return seccomp_rule_add_2(ctx, SCMP_ACT_ALLOW, SCMP_SYS(openat),
-                              SCMP_CMP_STR(0, SCMP_CMP_EQ, AT_FDCWD),
+                              SCMP_CMP(0, SCMP_CMP_EQ, (unsigned int)AT_FDCWD),
                               SCMP_CMP_STR(1, SCMP_CMP_EQ, file));
   } else {
     return seccomp_rule_add_1(ctx, SCMP_ACT_ALLOW, SCMP_SYS(open),