mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 23:53:32 +01:00
Expect a 20-byte nul-padded-and-terminated nickname
svn:r1480
This commit is contained in:
parent
1e2b008700
commit
41387bea08
@ -326,7 +326,7 @@ rend_service_introduce(circuit_t *circuit, const char *request, int request_len)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* min key length plus digest length */
|
||||
/* min key length plus digest length plus nickname length */
|
||||
if (request_len < 148) {
|
||||
log_fn(LOG_WARN, "Got a truncated INTRODUCE2 cell on circ %d",
|
||||
circuit->n_circ_id);
|
||||
@ -357,9 +357,9 @@ rend_service_introduce(circuit_t *circuit, const char *request, int request_len)
|
||||
log_fn(LOG_WARN, "Couldn't decrypt INTRODUCE2 cell");
|
||||
return -1;
|
||||
}
|
||||
ptr=memchr(buf,0,len);
|
||||
ptr=memchr(buf,0,MAX_NICKNAME_LEN+1);
|
||||
if (!ptr || ptr == buf) {
|
||||
log_fn(LOG_WARN, "Couldn't find a null-terminated nickname in INTRODUCE2 cell");
|
||||
log_fn(LOG_WARN, "Couldn't find a null-padded nickname in INTRODUCE2 cell");
|
||||
return -1;
|
||||
}
|
||||
if (strspn(buf,LEGAL_NICKNAME_CHARACTERS) != ptr-buf) {
|
||||
@ -368,8 +368,8 @@ rend_service_introduce(circuit_t *circuit, const char *request, int request_len)
|
||||
}
|
||||
/* Okay, now we know that the nickname is at the start of the buffer. */
|
||||
rp_nickname = buf;
|
||||
++ptr;
|
||||
len -= (ptr-buf);
|
||||
ptr = buf+(MAX_NICKNAME_LEN+1);
|
||||
len -= (MAX_NICKNAME_LEN+1);
|
||||
if (len != 20+128) {
|
||||
log_fn(LOG_WARN, "Bad length for INTRODUCE2 cell.");
|
||||
return -1;
|
||||
|
Loading…
Reference in New Issue
Block a user