Check hostname before using it in send_resolved_hostname_cell()

Also, turn an absent hostname into a BUG(), not a crash.

Found by scan-build.

Closes ticket 28879; bugfix on 0.1.2.7-alpha
This commit is contained in:
Nick Mathewson 2018-12-17 09:14:16 -05:00
parent 94a7998158
commit 16199a54a2
2 changed files with 9 additions and 1 deletions

5
changes/ticket28879 Normal file
View File

@ -0,0 +1,5 @@
o Minor bugfixes (correctness):
- Fix an unreached code-path where we checked the value of "hostname"
inside send_resolved_hostnam_cell(). Previously, we used it before
checking it; now we check it first. Fixes bug 28879; bugfix on
0.1.2.7-alpha.

View File

@ -586,8 +586,11 @@ send_resolved_hostname_cell,(edge_connection_t *conn,
char buf[RELAY_PAYLOAD_SIZE];
size_t buflen;
uint32_t ttl;
if (BUG(!hostname))
return;
size_t namelen = strlen(hostname);
tor_assert(hostname);
tor_assert(namelen < 256);
ttl = dns_clip_ttl(conn->address_ttl);