mirror of
https://github.com/torvalds/linux.git
synced 2026-09-11 20:13:02 +02:00
selftests: mptcp: fix an UAF in mptcp_connect.c
At the end of 'sock_connect_mptcp()', it calls 'freeaddrinfo(addr)',
the 'peer' pointer (which points into 'addr') remains. Later, the main
loop uses this peer pointer for reconnection attempts. If the memory has
been freed and reused, the address data could be overwritten, resulting
in an invalid remote address.
This patch keeps the addrinfo list allocated for the whole process
lifetime so "peer" remains valid across reconnects; the memory will be
released at exit() time.
Fixes: 05be5e273c ("selftests: mptcp: add disconnect tests")
Cc: stable@vger.kernel.org
Suggested-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Gang Yan <yangang@kylinos.cn>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://patch.msgid.link/20260908-net-mptcp-misc-fixes-7-3-rc1-v2-7-df1de70348b6@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
85c580b0d8
commit
730444f094
|
|
@ -381,6 +381,9 @@ static int sock_connect_mptcp(const char * const remoteaddr,
|
|||
|
||||
hints.ai_family = pf;
|
||||
|
||||
/* Keep the resolved address alive for the whole execution: it is
|
||||
* used again when reconnecting, and will be released at exit time.
|
||||
*/
|
||||
xgetaddrinfo(remoteaddr, port, &hints, &addr);
|
||||
for (a = addr; a; a = a->ai_next) {
|
||||
sock = socket(a->ai_family, a->ai_socktype, proto);
|
||||
|
|
@ -421,7 +424,6 @@ static int sock_connect_mptcp(const char * const remoteaddr,
|
|||
sock = -1;
|
||||
}
|
||||
|
||||
freeaddrinfo(addr);
|
||||
if (sock != -1)
|
||||
SOCK_TEST_TCPULP(sock, proto);
|
||||
return sock;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user