Reject most directory documents with an internal NUL.
(Specifically, we reject all the ones that aren't NUL-terminated, since a NUL-terminated thing can't have a NUL in the middle.) Another fix for #8037.
This commit is contained in:
parent
acd72d4e3e
commit
0cf2c01dbd
|
@ -2,3 +2,7 @@
|
|||
- Correctly store microdescriptors and extrainfo descriptors with
|
||||
an internal NUL byte. Fixes bug 8037; bugfix on 0.2.0.1-alpha.
|
||||
Bug reported by "cypherpunks".
|
||||
|
||||
o Minor features:
|
||||
- Reject as invalid most directory objects containing a
|
||||
NUL. Belt-and-suspender fix for bug 8037.
|
||||
|
|
|
@ -3902,8 +3902,15 @@ tokenize_string(memarea_t *area,
|
|||
tor_assert(area);
|
||||
|
||||
s = &start;
|
||||
if (!end)
|
||||
if (!end) {
|
||||
end = start+strlen(start);
|
||||
} else {
|
||||
/* it's only meaningful to check for nuls if we got an end-of-string ptr */
|
||||
if (memchr(start, '\0', end-start)) {
|
||||
log_warn(LD_DIR, "parse error: internal NUL character.");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
for (i = 0; i < NIL_; ++i)
|
||||
counts[i] = 0;
|
||||
|
||||
|
|
Loading…
Reference in New Issue