aboutsummaryrefslogtreecommitdiff
path: root/src/feature/nodelist/routerset.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2019-10-01 09:42:10 -0400
committerNick Mathewson <nickm@torproject.org>2019-10-01 09:45:12 -0400
commit39640728c332980daf7ca639827735a1c359669a (patch)
treebc8104a221760d32ec7d7c48b958d5d349cceb6b /src/feature/nodelist/routerset.c
parent53116ca0b71898b46a6d678407fb1b03c2ab8a93 (diff)
downloadtor-39640728c332980daf7ca639827735a1c359669a.tar.gz
tor-39640728c332980daf7ca639827735a1c359669a.zip
Add comments to try to prevent recurrence of #31495.
There is a bad design choice in two of our configuration types, where the empty string encodes a value that is not the same as the default value. This design choice, plus an implementation mistake, meant that config_dup() did not preserve the value of routerset_t, and thereby caused bug #31495. This comment-only patch documents the two types with the problem, and suggests that implementors try to avoid it in the future. Closes ticket 31907.
Diffstat (limited to 'src/feature/nodelist/routerset.c')
-rw-r--r--src/feature/nodelist/routerset.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/feature/nodelist/routerset.c b/src/feature/nodelist/routerset.c
index 73c2b1b1de..9a205d39b7 100644
--- a/src/feature/nodelist/routerset.c
+++ b/src/feature/nodelist/routerset.c
@@ -473,6 +473,13 @@ routerset_free_(routerset_t *routerset)
* routerset_t** passed as <b>target</b>. On success return 0; on failure
* return -1 and store an error message into *<b>errmsg</b>.
**/
+/*
+ * Warning: For this type, the default value (NULL) and "" are sometimes
+ * considered different values. That is generally risky, and best avoided for
+ * other types in the future. For cases where we want the default to be "all
+ * routers" (like EntryNodes) we should add a new routerset value indicating
+ * "all routers" (see #31908)
+ */
static int
routerset_kv_parse(void *target, const config_line_t *line, char **errmsg,
const void *params)