mirror of
https://github.com/ntop/n2n.git
synced 2026-10-19 08:15:17 +00:00
fix: use snprintf to prevent stack buffer overflow in REGISTER_SUPER_ACK IPv6 handling (#1251)
sprintf(ip_tmp, "%s:%u", ...) in the REGISTER_SUPER_ACK decoder can overflow the 48-byte ip_tmp stack buffer when formatting an IPv6 address (up to 45 chars) with a port number, producing up to 52 bytes. Replace sprintf with snprintf(ip_tmp, sizeof(ip_tmp), ...) so the output is truncated to the buffer size.
This commit is contained in:
+1
-1
@@ -2559,7 +2559,7 @@ void process_udp (n2n_edge_t *eee, const struct sockaddr *sender_sock, const SOC
|
||||
inet_ntop(payload_sock.family,
|
||||
(payload_sock.family == AF_INET) ? (void*)&(payload_sock.addr.v4) : (void*)&(payload_sock.addr.v6),
|
||||
sn->ip_addr, N2N_EDGE_SN_HOST_SIZE - 1);
|
||||
sprintf(ip_tmp, "%s:%u", (char*)sn->ip_addr, (uint16_t)(payload_sock.port));
|
||||
snprintf(ip_tmp, sizeof(ip_tmp), "%s:%u", (char*)sn->ip_addr, (uint16_t)(payload_sock.port));
|
||||
memcpy(sn->ip_addr, ip_tmp, sizeof(ip_tmp));
|
||||
}
|
||||
sn_selection_criterion_default(&(sn->selection_criterion));
|
||||
|
||||
Reference in New Issue
Block a user