Reject authenticated INIT requests claiming another node identity
This commit is contained in:
1 parent
d9aede4138
commit
2f6ff9303e
1 file changed
+4
-1
@@ -246,12 +246,15 @@ static void request_boundaries(unsigned established) {
|
||||
unsigned rejected = 0, accepted = 0;
|
||||
for (unsigned variant = 0; variant < 2; variant++) {
|
||||
request.code = variant ? ETCP_INIT_REQUEST_NOINIT : ETCP_INIT_REQUEST;
|
||||
for (unsigned length = 0; length < sizeof(request); length++) {
|
||||
for (unsigned invalid = 0; invalid < sizeof(request) + sizeof(request.node_id); invalid++) {
|
||||
unsigned length = invalid < sizeof(request) ? invalid : sizeof(request);
|
||||
if (invalid >= sizeof(request)) request.node_id[invalid - sizeof(request)] ^= 1;
|
||||
struct ETCP_CONN before_conn; struct ETCP_LINK before_link;
|
||||
if (established) { memcpy(&before_conn, ep[1].conn, sizeof(before_conn)); memcpy(&before_link, first_link(1), sizeof(before_link)); }
|
||||
int connections = ep[1].inst->connections->count, pool_free = ep[1].inst->pkt_pool->free_count;
|
||||
size_t errors = ep[1].socket->pkt_format_errors;
|
||||
send_init_request_body(&request, length, 0);
|
||||
if (invalid >= sizeof(request)) request.node_id[invalid - sizeof(request)] ^= 1;
|
||||
DEBUG_DEBUG(DEBUG_CATEGORY_DEBUG, "INIT_REQUEST boundary: established=%u code=%u body=%u errors=%zu->%zu",
|
||||
established, request.code, length, errors, ep[1].socket->pkt_format_errors);
|
||||
CHECK(ep[1].socket->pkt_format_errors == errors + 1 && ep[1].socket->errorcode != 0);
|
||||
|
||||
Reference in new issue
Block a user