Prevent changes to other options from removing . from AutomapHostsSuffixes

This happened because we changed AutomapHostsSuffixes to replace "."
with "", since a suffix of "" means "match everything."  But our
option handling code for CSV options likes to remove empty entries
when it re-parses stuff.

Instead, let "." remain ".", and treat it specially when we're
checking for a match.

Fixes bug 12509; bugfix on 0.2.0.1-alpha.
This commit is contained in:
Nick Mathewson 2015-01-04 17:28:54 -05:00
parent 0872d8e3cf
commit 8ef6cdc39f
4 changed files with 9 additions and 11 deletions

4
changes/bug12509 Normal file
View File

@ -0,0 +1,4 @@
o Minor bugfixes (automapping):
- Prevent changes to other optoins from removing the wildcard value "."
from "AutomapHostsSuffixes".

View File

@ -226,6 +226,8 @@ addressmap_address_should_automap(const char *address,
return 0;
SMARTLIST_FOREACH_BEGIN(suffix_list, const char *, suffix) {
if (!strcmp(suffix, "."))
return 1;
if (!strcasecmpend(address, suffix))
return 1;
} SMARTLIST_FOREACH_END(suffix);

View File

@ -3398,15 +3398,6 @@ options_validate(or_options_t *old_options, or_options_t *options,
AF_INET6, 1, msg)<0)
return -1;
if (options->AutomapHostsSuffixes) {
SMARTLIST_FOREACH(options->AutomapHostsSuffixes, char *, suf,
{
size_t len = strlen(suf);
if (len && suf[len-1] == '.')
suf[len-1] = '\0';
});
}
if (options->TestingTorNetwork &&
!(options->DirAuthorities ||
(options->AlternateDirAuthority &&

View File

@ -3646,8 +3646,9 @@ typedef struct {
* hostname ending with one of the suffixes in
* <b>AutomapHostsSuffixes</b>, map it to a
* virtual address. */
smartlist_t *AutomapHostsSuffixes; /**< List of suffixes for
* <b>AutomapHostsOnResolve</b>. */
/** List of suffixes for <b>AutomapHostsOnResolve</b>. The special value
* "." means "match everything." */
smartlist_t *AutomapHostsSuffixes;
int RendPostPeriod; /**< How often do we post each rendezvous service
* descriptor? Remember to publish them independently. */
int KeepalivePeriod; /**< How often do we send padding cells to keep