From 8b87c9d4efa248332c8716f2f1e970061dbe530c Mon Sep 17 00:00:00 2001 From: domosekai <54519668+domosekai@users.noreply.github.com> Date: Wed, 21 Jul 2021 11:13:43 +0000 Subject: [PATCH] Cedar/Proto_PPP.c: Fix memory leak in EAP-MSCHAPv2 Fixes: #1420 (Implement EAP-MSCHAPv2) --- src/Cedar/Proto_PPP.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Cedar/Proto_PPP.c b/src/Cedar/Proto_PPP.c index ee3eb88d..7d274471 100644 --- a/src/Cedar/Proto_PPP.c +++ b/src/Cedar/Proto_PPP.c @@ -272,10 +272,11 @@ void PPPThread(THREAD *thread, void *param) p->Eap_PacketId = p->NextId; // Do not increase NextId so that MSCHAPv2 could use the same id lcp = BuildMSCHAP2ChallengePacket(p); BUF *b = BuildLCPData(lcp); + FreePPPLCP(lcp); lcpEap = BuildEAPPacketEx(PPP_EAP_CODE_REQUEST, p->Eap_PacketId, PPP_EAP_TYPE_MSCHAPV2, b->Size); eapPacket = lcpEap->Data; Copy(eapPacket->Data, b->Buf, b->Size); - Free(b); + FreeBuf(b); PPPSetStatus(p, PPP_STATUS_AUTHENTICATING); if (PPPSendAndRetransmitRequest(p, PPP_PROTOCOL_EAP, lcpEap) == false) { @@ -1103,11 +1104,12 @@ bool PPPProcessCHAPResponsePacketEx(PPP_SESSION *p, PPP_PACKET *pp, PPP_PACKET * else { BUF *b = BuildLCPData(lcp); + FreePPPLCP(lcp); p->Eap_PacketId = p->NextId++; lcp = BuildEAPPacketEx(PPP_EAP_CODE_REQUEST, p->Eap_PacketId, PPP_EAP_TYPE_MSCHAPV2, b->Size); PPP_EAP *eapPacket = lcp->Data; Copy(eapPacket->Data, b->Buf, b->Size); - Free(b); + FreeBuf(b); if (PPPSendAndRetransmitRequest(p, PPP_PROTOCOL_EAP, lcp) == false) { @@ -1160,11 +1162,12 @@ bool PPPProcessCHAPResponsePacketEx(PPP_SESSION *p, PPP_PACKET *pp, PPP_PACKET * else { BUF *b = BuildLCPData(lcp); + FreePPPLCP(lcp); p->Eap_PacketId = p->NextId++; lcp = BuildEAPPacketEx(PPP_EAP_CODE_REQUEST, p->Eap_PacketId, PPP_EAP_TYPE_MSCHAPV2, b->Size); PPP_EAP *eapPacket = lcp->Data; Copy(eapPacket->Data, b->Buf, b->Size); - Free(b); + FreeBuf(b); if (PPPSendAndRetransmitRequest(p, PPP_PROTOCOL_EAP, lcp) == false) {