aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml59
-rw-r--r--changes/bug298198
-rw-r--r--changes/bug327533
-rw-r--r--changes/ticket330754
-rw-r--r--changes/ticket331944
-rw-r--r--changes/ticket331954
-rw-r--r--changes/ticket332124
-rw-r--r--src/app/config/config.c2
-rw-r--r--src/feature/relay/router.c15
-rw-r--r--src/lib/sandbox/sandbox.c40
-rw-r--r--src/rust/protover/protover.rs2
-rw-r--r--src/test/test_config.c22
12 files changed, 94 insertions, 73 deletions
diff --git a/.travis.yml b/.travis.yml
index 7f7e7a5723..6047c4470e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -39,32 +39,42 @@ env:
matrix:
## include creates builds with gcc, linux, unless we override those defaults
include:
- ## We run basic tests on macOS
+ ## We run chutney on macOS, because macOS Travis has IPv6
+ - env: CHUTNEY="yes" CHUTNEY_ALLOW_FAILURES="2" SKIP_MAKE_CHECK="yes"
+ os: osx
+
+ ## We also run basic tests on macOS
- compiler: clang
os: osx
## Turn off some newer features, turn on clang's -Wtypedef-redefinition
env: C_DIALECT_OPTIONS="-std=gnu99"
- ## We check NSS
- ## Use -std=gnu99 to turn off some newer features, and maybe turn on some
- ## extra gcc warnings?
- - env: NSS_OPTIONS="--enable-nss" C_DIALECT_OPTIONS="-std=gnu99"
+
## We run chutney on Linux, because it's faster than chutney on macOS
## Chutney is a fast job, clang is slower on Linux, so we do Chutney clang
- env: CHUTNEY="yes" CHUTNEY_ALLOW_FAILURES="2" SKIP_MAKE_CHECK="yes"
compiler: clang
+
## We check asciidoc with distcheck, to make sure we remove doc products
- ## We use Linux clang, because there are no other Linux clang jobs
- env: DISTCHECK="yes" ASCIIDOC_OPTIONS="" SKIP_MAKE_CHECK="yes"
- compiler: clang
- ## We include a single coverage build with the best options for coverage
- - env: COVERAGE_OPTIONS="--enable-coverage" HARDENING_OPTIONS=""
+
+ ## We check disable module dirauth
+ - env: MODULES_OPTIONS="--disable-module-dirauth"
+
## We run rust on Linux, because it's faster than rust on macOS
## We check rust offline
- env: RUST_OPTIONS="--enable-rust" TOR_RUST_DEPENDENCIES=true
- ## We check asciidoc with distcheck, to make sure we remove doc products
- - env: DISTCHECK="yes" ASCIIDOC_OPTIONS="" SKIP_MAKE_CHECK="yes"
- ## We check disable module dirauth
- - env: MODULES_OPTIONS="--disable-module-dirauth"
+
+ ## We check NSS
+ ## Use -std=gnu99 to turn off some newer features, and maybe turn on some
+ ## extra gcc warnings?
+ - env: NSS_OPTIONS="--enable-nss" C_DIALECT_OPTIONS="-std=gnu99"
+
+ ## We include a single coverage build with the best options for coverage
+ - env: COVERAGE_OPTIONS="--enable-coverage" HARDENING_OPTIONS=""
+
+ ## We clone our stem repo and run `make test-stem`
+ - env: TEST_STEM="yes" SKIP_MAKE_CHECK="yes"
+
## macOS builds are very slow, and we have a limited number of
## concurrent macOS jobs. We're not actively developing Rust, so it is
## the lowest priority.
@@ -72,11 +82,6 @@ matrix:
#- env: RUST_OPTIONS="--enable-rust --enable-cargo-online-mode"
# compiler: clang
# os: osx
- ## We run chutney on macOS, because macOS Travis has IPv6
- - env: CHUTNEY="yes" CHUTNEY_ALLOW_FAILURES="2" SKIP_MAKE_CHECK="yes"
- os: osx
- ## We clone our stem repo and run `make test-stem`
- - env: TEST_STEM="yes" SKIP_MAKE_CHECK="yes"
## Allow the build to report success (with non-required sub-builds
## continuing to run) if all required sub-builds have succeeded.
@@ -88,13 +93,17 @@ matrix:
## macOS rust and chutney are very slow, so we let the build finish before
## they are done. We'd like to fast finish, but still eventually show
## any failures in the build status. But Travis doesn't have that ability.
- - env: RUST_OPTIONS="--enable-rust --enable-cargo-online-mode"
- compiler: clang
- os: osx
- - env: CHUTNEY="yes" CHUTNEY_ALLOW_FAILURES="2" SKIP_MAKE_CHECK="yes"
- os: osx
- ## test-stem sometimes hangs on Travis
- - env: TEST_STEM="yes" SKIP_MAKE_CHECK="yes"
+
+ ## Since this job is disabled, there's not much point having an exception
+ ## for it
+ #- env: RUST_OPTIONS="--enable-rust --enable-cargo-online-mode"
+ # compiler: clang
+ # os: osx
+
+ ## Since we're actively developing IPv6, we want to require the IPv6
+ ## chutney tests
+ #- env: CHUTNEY="yes" CHUTNEY_ALLOW_FAILURES="2" SKIP_MAKE_CHECK="yes"
+ # os: osx
## (Linux only) Use a recent Linux image (Ubuntu Bionic)
dist: bionic
diff --git a/changes/bug29819 b/changes/bug29819
new file mode 100644
index 0000000000..d37ac83d66
--- /dev/null
+++ b/changes/bug29819
@@ -0,0 +1,8 @@
+ o Minor bugfixes (linux seccomp sandbox):
+ - Correct how we use libseccomp. Particularly, stop assuming that
+ rules are applied in a particular order or that more rules are
+ processed after the first match. Neither is the case! In libseccomp
+ <2.4.0 this lead to some rules having no effect. Libseccomp 2.4.0
+ changed how rules are generated leading to a different ordering
+ which in turn lead to a fatal crash during startup. Fixes bug
+ 29819; bugfix on 0.2.5.1-alpha. Patch by Peter Gerber.
diff --git a/changes/bug32753 b/changes/bug32753
new file mode 100644
index 0000000000..6f59c7729d
--- /dev/null
+++ b/changes/bug32753
@@ -0,0 +1,3 @@
+ o Minor bugfixes (bridges):
+ - Lowercase the value of BridgeDistribution from torrc before adding it to
+ the descriptor. Fixes bug 32753; bugfix on 0.3.2.3-alpha.
diff --git a/changes/ticket33075 b/changes/ticket33075
new file mode 100644
index 0000000000..69698d90b3
--- /dev/null
+++ b/changes/ticket33075
@@ -0,0 +1,4 @@
+ o Testing:
+ - Stop allowing failures on the Travis CI stem tests job. It looks like all
+ the stem hangs we were seeing are now fixed, but let's make sure we see
+ them if they happen again. Closes ticket 33075.
diff --git a/changes/ticket33194 b/changes/ticket33194
new file mode 100644
index 0000000000..b87e55348e
--- /dev/null
+++ b/changes/ticket33194
@@ -0,0 +1,4 @@
+ o Testing:
+ - Remove a redundant distcheck job. Closes ticket 33194.
+ - Sort the Travis jobs in order of speed. Putting the slowest jobs first
+ takes full advantage of Travis job concurrency. Closes ticket 33194.
diff --git a/changes/ticket33195 b/changes/ticket33195
new file mode 100644
index 0000000000..11abd4816e
--- /dev/null
+++ b/changes/ticket33195
@@ -0,0 +1,4 @@
+ o Testing:
+ - Stop allowing the Chutney IPv6 Travis job to fail. This job was
+ previously configured to fast_finish (which requires allow_failure), to
+ speed up the build. Closes ticket 33195.
diff --git a/changes/ticket33212 b/changes/ticket33212
new file mode 100644
index 0000000000..aeb09e0c67
--- /dev/null
+++ b/changes/ticket33212
@@ -0,0 +1,4 @@
+ o Minor bugfixes (rust, build):
+ - Fix a syntax warning given by newer versions of Rust, and creating
+ problems for our continuous integration.
+ Fixes bug 33212; bugfix on 0.3.5.1-alpha.
diff --git a/src/app/config/config.c b/src/app/config/config.c
index 0b1b758d96..cbca7d3899 100644
--- a/src/app/config/config.c
+++ b/src/app/config/config.c
@@ -6839,7 +6839,7 @@ check_bridge_distribution_setting(const char *bd)
};
unsigned i;
for (i = 0; i < ARRAY_LENGTH(RECOGNIZED); ++i) {
- if (!strcmp(bd, RECOGNIZED[i]))
+ if (!strcasecmp(bd, RECOGNIZED[i]))
return 0;
}
diff --git a/src/feature/relay/router.c b/src/feature/relay/router.c
index 1dbaf2ed66..e91550a78c 100644
--- a/src/feature/relay/router.c
+++ b/src/feature/relay/router.c
@@ -2635,15 +2635,20 @@ router_dump_router_to_string(routerinfo_t *router,
}
if (options->BridgeRelay) {
- const char *bd;
+ char *bd = NULL;
+
if (options->BridgeDistribution && strlen(options->BridgeDistribution)) {
- bd = options->BridgeDistribution;
+ bd = tor_strdup(options->BridgeDistribution);
} else {
- bd = "any";
+ bd = tor_strdup("any");
}
- if (strchr(bd, '\n') || strchr(bd, '\r'))
- bd = escaped(bd);
+
+ // Make sure our value is lowercased in the descriptor instead of just
+ // forwarding what the user wrote in their torrc directly.
+ tor_strlower(bd);
+
smartlist_add_asprintf(chunks, "bridge-distribution-request %s\n", bd);
+ tor_free(bd);
}
if (router->onion_curve25519_pkey) {
diff --git a/src/lib/sandbox/sandbox.c b/src/lib/sandbox/sandbox.c
index e2356a1720..8f577b0660 100644
--- a/src/lib/sandbox/sandbox.c
+++ b/src/lib/sandbox/sandbox.c
@@ -491,24 +491,6 @@ 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));
- 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));
- if (rc != 0) {
- log_err(LD_BUG,"(Sandbox) failed to add openat syscall, received "
- "libseccomp error %d", rc);
- return rc;
- }
-
return 0;
}
@@ -562,23 +544,6 @@ sb_chown(scmp_filter_ctx ctx, sandbox_cfg_t *filter)
return 0;
}
-static int
-sb__sysctl(scmp_filter_ctx ctx, sandbox_cfg_t *filter)
-{
- int rc;
- (void) filter;
- (void) ctx;
-
- rc = seccomp_rule_add_0(ctx, SCMP_ACT_ERRNO(EPERM), SCMP_SYS(_sysctl));
- if (rc != 0) {
- log_err(LD_BUG,"(Sandbox) failed to add _sysctl syscall, "
- "received libseccomp error %d", rc);
- return rc;
- }
-
- return 0;
-}
-
/**
* Function responsible for setting up the rename syscall for
* the seccomp filter sandbox.
@@ -1141,7 +1106,6 @@ static sandbox_filter_func_t filter_func[] = {
sb_chmod,
sb_open,
sb_openat,
- sb__sysctl,
sb_rename,
#ifdef __NR_fcntl64
sb_fcntl64,
@@ -1518,14 +1482,14 @@ install_syscall_filter(sandbox_cfg_t* cfg)
int rc = 0;
scmp_filter_ctx ctx;
- ctx = seccomp_init(SCMP_ACT_TRAP);
+ ctx = seccomp_init(SCMP_ACT_ERRNO(EPERM));
if (ctx == NULL) {
log_err(LD_BUG,"(Sandbox) failed to initialise libseccomp context");
rc = -1;
goto end;
}
- // protectign sandbox parameter strings
+ // protecting sandbox parameter strings
if ((rc = prot_strings(ctx, cfg))) {
goto end;
}
diff --git a/src/rust/protover/protover.rs b/src/rust/protover/protover.rs
index 2661d811c4..06fdf56c69 100644
--- a/src/rust/protover/protover.rs
+++ b/src/rust/protover/protover.rs
@@ -26,7 +26,7 @@ const FIRST_TOR_VERSION_TO_ADVERTISE_PROTOCOLS: &'static str = "0.2.9.3-alpha";
/// before concluding that someone is trying to DoS us
///
/// C_RUST_COUPLED: protover.c `MAX_PROTOCOLS_TO_EXPAND`
-const MAX_PROTOCOLS_TO_EXPAND: usize = (1 << 16);
+const MAX_PROTOCOLS_TO_EXPAND: usize = 1 << 16;
/// The maximum size an `UnknownProtocol`'s name may be.
pub(crate) const MAX_PROTOCOL_NAME_LENGTH: usize = 100;
diff --git a/src/test/test_config.c b/src/test/test_config.c
index 8f011ce1f1..855725411a 100644
--- a/src/test/test_config.c
+++ b/src/test/test_config.c
@@ -5620,11 +5620,27 @@ test_config_check_bridge_distribution_setting_not_a_bridge(void *arg)
static void
test_config_check_bridge_distribution_setting_valid(void *arg)
{
- int ret = check_bridge_distribution_setting("https");
-
(void)arg;
- tt_int_op(ret, OP_EQ, 0);
+ // Check all the possible values we support right now.
+ tt_int_op(check_bridge_distribution_setting("none"), OP_EQ, 0);
+ tt_int_op(check_bridge_distribution_setting("any"), OP_EQ, 0);
+ tt_int_op(check_bridge_distribution_setting("https"), OP_EQ, 0);
+ tt_int_op(check_bridge_distribution_setting("email"), OP_EQ, 0);
+ tt_int_op(check_bridge_distribution_setting("moat"), OP_EQ, 0);
+
+ // Check all the possible values we support right now with weird casing.
+ tt_int_op(check_bridge_distribution_setting("NoNe"), OP_EQ, 0);
+ tt_int_op(check_bridge_distribution_setting("anY"), OP_EQ, 0);
+ tt_int_op(check_bridge_distribution_setting("hTTps"), OP_EQ, 0);
+ tt_int_op(check_bridge_distribution_setting("emAIl"), OP_EQ, 0);
+ tt_int_op(check_bridge_distribution_setting("moAt"), OP_EQ, 0);
+
+ // Invalid values.
+ tt_int_op(check_bridge_distribution_setting("x\rx"), OP_EQ, -1);
+ tt_int_op(check_bridge_distribution_setting("x\nx"), OP_EQ, -1);
+ tt_int_op(check_bridge_distribution_setting("\t\t\t"), OP_EQ, -1);
+
done:
return;
}