Unverified Commit 9d5c6317 authored by teor's avatar teor
Browse files

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.
parent ff148638
Loading
Loading
Loading
Loading

changes/bug27463

0 → 100644
+3 −0
Original line number Diff line number Diff line
  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.
+9 −0
Original line number Diff line number Diff line
@@ -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,