mirror of
https://github.com/SoftEtherVPN/SoftEtherVPN.git
synced 2026-03-06 16:30:10 +03:00
Fix dangling pointer
Previously, The address of a local stack variable was passed to a new thread. Fix dangling pointer by switching to dynamic allocation. This problem is also known as CVE-2025-25568.
This commit is contained in:
@ -99,6 +99,8 @@ void CheckNetworkAcceptThread(THREAD *thread, void *param)
|
|||||||
|
|
||||||
Disconnect(s);
|
Disconnect(s);
|
||||||
ReleaseSock(s);
|
ReleaseSock(s);
|
||||||
|
|
||||||
|
Free(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -155,15 +157,15 @@ void CheckNetworkListenThread(THREAD *thread, void *param)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CHECK_NETWORK_2 c;
|
CHECK_NETWORK_2 *c;
|
||||||
THREAD *t;
|
THREAD *t;
|
||||||
|
|
||||||
Zero(&c, sizeof(c));
|
c = ZeroMalloc(sizeof(CHECK_NETWORK_2));
|
||||||
c.s = new_sock;
|
c->s = new_sock;
|
||||||
c.k = pri;
|
c->k = pri;
|
||||||
c.x = x;
|
c->x = x;
|
||||||
|
|
||||||
t = NewThread(CheckNetworkAcceptThread, &c);
|
t = NewThread(CheckNetworkAcceptThread, c);
|
||||||
Insert(o, t);
|
Insert(o, t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user