Make HSFETCH take the decoded length into account, not the base32 one

This commit is contained in:
Neel Chauhan 2020-06-16 14:38:08 -07:00 committed by David Goulet
parent 285dbeefa1
commit c8fd7b7040
2 changed files with 6 additions and 1 deletions

5
changes/bug34400 Normal file
View File

@ -0,0 +1,5 @@
o Minor bugfixes (v2 onion services):
- For HSFETCH commands on v2 onion services addresses, check the length of
bytes decoded, not the base32 length. This takes the behavior introduced
in commit a517daa56f5848d25ba79617a1a7b82ed2b0a7c0 into consideration.
Fixes bug 34400; bugfix on 0.4.1.1-alpha. Patch by Neel Chauhan.

View File

@ -1430,7 +1430,7 @@ handle_control_hsfetch(control_connection_t *conn,
rend_valid_descriptor_id(arg1 + v2_str_len) && rend_valid_descriptor_id(arg1 + v2_str_len) &&
base32_decode(digest, sizeof(digest), arg1 + v2_str_len, base32_decode(digest, sizeof(digest), arg1 + v2_str_len,
REND_DESC_ID_V2_LEN_BASE32) == REND_DESC_ID_V2_LEN_BASE32) ==
REND_DESC_ID_V2_LEN_BASE32) { sizeof(digest)) {
/* We have a well formed version 2 descriptor ID. Keep the decoded value /* We have a well formed version 2 descriptor ID. Keep the decoded value
* of the id. */ * of the id. */
desc_id = digest; desc_id = digest;