mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 04:13:28 +01:00
hs: Silence a spurious warning in rend_client_send_introduction()
gcc 8 warns that extend_info_t.nickname might be truncated by strncpy(). But it doesn't know that nickname can either contain a hex id, or a nicknames. hex ids are only used for general and HSDir circuits. Fixes bug 27463; bugfix on 0.1.1.2-alpha.
This commit is contained in:
parent
ff1486385a
commit
9d5c6317b5
3
changes/bug27463
Normal file
3
changes/bug27463
Normal file
@ -0,0 +1,3 @@
|
||||
o Minor bugfixes (onion services):
|
||||
- Silence a spurious compiler warning in rend_client_send_introduction().
|
||||
Fixes bug 27463; bugfix on 0.1.1.2-alpha.
|
@ -269,6 +269,15 @@ rend_client_send_introduction(origin_circuit_t *introcirc,
|
||||
dh_offset = v3_shift+7+DIGEST_LEN+2+klen+REND_COOKIE_LEN;
|
||||
} else {
|
||||
/* Version 0. */
|
||||
|
||||
/* Some compilers are smart enough to work out that nickname can be more
|
||||
* than 19 characters, when it's a hexdigest. They warn that strncpy()
|
||||
* will truncate hexdigests without NUL-terminating them. But we only put
|
||||
* hexdigests in HSDir and general circuit exits. */
|
||||
if (BUG(strlen(rendcirc->build_state->chosen_exit->nickname)
|
||||
> MAX_NICKNAME_LEN)) {
|
||||
goto perm_err;
|
||||
}
|
||||
strncpy(tmp, rendcirc->build_state->chosen_exit->nickname,
|
||||
(MAX_NICKNAME_LEN+1)); /* nul pads */
|
||||
memcpy(tmp+MAX_NICKNAME_LEN+1, rendcirc->rend_data->rend_cookie,
|
||||
|
Loading…
Reference in New Issue
Block a user