[tor-commits] [tor/master] fixed openssl open syscall, fixed sandbox_getaddrinfo

nickm at torproject.org nickm at torproject.org
Fri Sep 13 16:31:55 UTC 2013


commit 71612f00ae6df941861fbd9c67f0bbf15256b873
Author: Cristian Toader <cristian.matei.toader at gmail.com>
Date:   Tue Aug 20 13:10:07 2013 +0300

    fixed openssl open syscall, fixed sandbox_getaddrinfo
---
 src/common/sandbox.c |   20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/common/sandbox.c b/src/common/sandbox.c
index c71efb0..87c8946 100644
--- a/src/common/sandbox.c
+++ b/src/common/sandbox.c
@@ -264,13 +264,13 @@ sb_open(scmp_filter_ctx ctx, sandbox_cfg_t *filter)
   }
 
   // problem: required by getaddrinfo
-//  rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(open), 1,
-//        SCMP_CMP(1, SCMP_CMP_EQ, O_RDONLY|O_CLOEXEC));
-//  if (rc != 0) {
-//    log_err(LD_BUG,"(Sandbox) failed to add open syscall, received libseccomp "
-//        "error %d", rc);
-//    return rc;
-//  }
+  rc = seccomp_rule_add(ctx, SCMP_ACT_ERRNO(1), SCMP_SYS(open), 1,
+        SCMP_CMP(1, SCMP_CMP_EQ, O_RDONLY|O_CLOEXEC));
+  if (rc != 0) {
+    log_err(LD_BUG,"(Sandbox) failed to add open syscall, received libseccomp "
+        "error %d", rc);
+    return rc;
+  }
 
   return 0;
 }
@@ -872,6 +872,10 @@ int sandbox_getaddrinfo(const char *name, struct addrinfo **res)
     return -2;
   }
   *res = NULL;
+  *res = (struct addrinfo *) malloc (sizeof(struct addrinfo));
+  if (!res) {
+    return -2;
+  }
 
   if (gethostname(hname, sizeof(hname)) < 0) {
     return -1;
@@ -882,7 +886,7 @@ int sandbox_getaddrinfo(const char *name, struct addrinfo **res)
     return -1;
   }
 
-  *res = sb_addr_info;
+  memcpy(*res, sb_addr_info, sizeof(struct addrinfo));
   return 0;
 }
 





More information about the tor-commits mailing list