aboutsummaryrefslogtreecommitdiff
path: root/src/feature/dirparse
diff options
context:
space:
mode:
authorNeel Chauhan <neel@neelc.org>2019-08-25 20:22:57 -0400
committerGeorge Kadianakis <desnacked@riseup.net>2019-09-05 17:02:45 +0300
commitbe4a60945d724ca964d9d53f57cad6190a500077 (patch)
treec016a3384edd307268d5ff2ff422505c6e1d9764 /src/feature/dirparse
parent6ba05eea8efcfc1f9b4a382ee1849e49ea242891 (diff)
downloadtor-be4a60945d724ca964d9d53f57cad6190a500077.tar.gz
tor-be4a60945d724ca964d9d53f57cad6190a500077.zip
Check IPv6 exit policies on microdescriptors in node_exit_policy_rejects_all()
Diffstat (limited to 'src/feature/dirparse')
-rw-r--r--src/feature/dirparse/microdesc_parse.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/feature/dirparse/microdesc_parse.c b/src/feature/dirparse/microdesc_parse.c
index 22cc1e272e..e02dfcf11a 100644
--- a/src/feature/dirparse/microdesc_parse.c
+++ b/src/feature/dirparse/microdesc_parse.c
@@ -92,6 +92,12 @@ find_start_of_next_microdesc(const char *s, const char *eos)
#undef NEXT_LINE
}
+static inline int
+policy_is_reject_star_or_null(struct short_policy_t *policy)
+{
+ return !policy || short_policy_is_reject_star(policy);
+}
+
/** Parse as many microdescriptors as are found from the string starting at
* <b>s</b> and ending at <b>eos</b>. If allow_annotations is set, read any
* annotations we recognize and ignore ones we don't.
@@ -250,6 +256,11 @@ microdescs_parse_from_string(const char *s, const char *eos,
md->ipv6_exit_policy = parse_short_policy(tok->args[0]);
}
+ if (policy_is_reject_star_or_null(md->exit_policy) &&
+ policy_is_reject_star_or_null(md->ipv6_exit_policy)) {
+ md->policy_is_reject_star = 1;
+ }
+
smartlist_add(result, md);
okay = 1;