mirror of https://github.com/acidanthera/audk.git
NetworkPkg: Fix Duplicate FreePool Error in WCM
* REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1577 In WiFi Connection Manager scan process, the result received from WiFi device driver will be freed twice, and will cause unexpected errors, and even system crash. This issue also exists in some other places potentially, this patch is to fix these issues and also add Timer Cancelling before Close to avoid potential NULL reference. Cc: Ye Ting <ting.ye@intel.com> Cc: Fu Siyuan <siyuan.fu@intel.com> Cc: Wu Jiaxin <jiaxin.wu@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Wang Fan <fan.wang@intel.com> Reviewed-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-by: Wu Jiaxin <jiaxin.wu@intel.com>
This commit is contained in:
parent
407f5a0571
commit
a6c63ee6d5
|
@ -411,6 +411,7 @@ WifiMgrDxeDriverBindingStop (
|
|||
//
|
||||
// Close Event
|
||||
//
|
||||
gBS->SetTimer (Nic->TickTimer, TimerCancel, 0);
|
||||
gBS->CloseEvent (Nic->TickTimer);
|
||||
|
||||
//
|
||||
|
|
|
@ -253,6 +253,7 @@ UpdatePage(
|
|||
|
||||
if (Private->FileContext->FileName != NULL) {
|
||||
FreePool (Private->FileContext->FileName);
|
||||
Private->FileContext->FileName = NULL;
|
||||
}
|
||||
Private->FileContext->FileName = FileName;
|
||||
|
||||
|
|
|
@ -447,6 +447,8 @@ WifiMgrRefreshNetworkList (
|
|||
}
|
||||
FreePool (AKMListDisplay);
|
||||
FreePool (CipherListDisplay);
|
||||
AKMListDisplay = NULL;
|
||||
CipherListDisplay = NULL;
|
||||
|
||||
HiiCreateGotoOpCode (
|
||||
StartOpCodeHandle,
|
||||
|
@ -532,6 +534,8 @@ WifiMgrRefreshNetworkList (
|
|||
}
|
||||
FreePool (AKMListDisplay);
|
||||
FreePool (CipherListDisplay);
|
||||
AKMListDisplay = NULL;
|
||||
CipherListDisplay = NULL;
|
||||
|
||||
HiiCreateGotoOpCode (
|
||||
StartOpCodeHandle,
|
||||
|
@ -612,6 +616,8 @@ WifiMgrRefreshNetworkList (
|
|||
}
|
||||
FreePool (AKMListDisplay);
|
||||
FreePool (CipherListDisplay);
|
||||
AKMListDisplay = NULL;
|
||||
CipherListDisplay = NULL;
|
||||
|
||||
PortHelpToken = HiiSetString (Private->RegisteredHandle, 0, PortString, NULL);
|
||||
|
||||
|
@ -1657,6 +1663,7 @@ WifiMgrDxeHiiConfigAccessCallback (
|
|||
|
||||
ZeroMem (Profile->PrivateKeyData, Profile->PrivateKeyDataSize);
|
||||
FreePool (Profile->PrivateKeyData);
|
||||
Profile->PrivateKeyData = NULL;
|
||||
}
|
||||
|
||||
Status = WifiMgrReadFileToBuffer (
|
||||
|
@ -1700,12 +1707,14 @@ WifiMgrDxeHiiConfigAccessCallback (
|
|||
|
||||
ZeroMem (Profile->CACertData, Profile->CACertSize);
|
||||
FreePool (Profile->CACertData);
|
||||
Profile->CACertData = NULL;
|
||||
}
|
||||
} else if (Private->FileType == FileTypeClientCert) {
|
||||
if (Profile->ClientCertData != NULL) {
|
||||
|
||||
ZeroMem (Profile->ClientCertData, Profile->ClientCertSize);
|
||||
FreePool (Profile->ClientCertData);
|
||||
Profile->ClientCertData = NULL;
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
|
|
|
@ -212,7 +212,6 @@ WifiMgrOnScanFinished (
|
|||
}
|
||||
}
|
||||
|
||||
FreePool (Result);
|
||||
gBS->SignalEvent (Nic->Private->NetworkListRefreshEvent);
|
||||
|
||||
//
|
||||
|
|
Loading…
Reference in New Issue