dirparse: reject routerstatus entries with malformed protover

Contrary to its name, protover_contains_long_protocol_names()
detects all parse errors, not just long names.
This commit is contained in:
cypherpunks 2020-02-08 20:20:54 +00:00
parent 5d330997f6
commit b3affc23ef

View File

@ -13,6 +13,7 @@
#include "core/or/or.h" #include "core/or/or.h"
#include "app/config/config.h" #include "app/config/config.h"
#include "core/or/protover.h"
#include "core/or/versions.h" #include "core/or/versions.h"
#include "feature/client/entrynodes.h" #include "feature/client/entrynodes.h"
#include "feature/dirauth/dirvote.h" #include "feature/dirauth/dirvote.h"
@ -451,6 +452,10 @@ routerstatus_parse_entry_from_string(memarea_t *area,
} }
} }
// If the protover line is malformed, reject this routerstatus.
if (protocols && protover_contains_long_protocol_names(protocols)) {
goto err;
}
summarize_protover_flags(&rs->pv, protocols, version); summarize_protover_flags(&rs->pv, protocols, version);
} }