diff options
author | Star Zeng <star.zeng@intel.com> | 2017-05-11 17:34:34 +0800 |
---|---|---|
committer | Guo Mang <mang.guo@intel.com> | 2017-07-12 11:24:44 +0800 |
commit | 5014e0fd7d272f75afb7986058c84530629baf98 (patch) | |
tree | e083b840f6fa446d07255625fcd15e0318230be9 | |
parent | 1e462a8940332f87ad15542800145d78af8cc9a1 (diff) | |
download | edk2-platforms-5014e0fd7d272f75afb7986058c84530629baf98.tar.xz |
MdeModulePkg SmiHandlerProfile: Fix memory leak in DumpSmiChildContext
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=530
In DumpSmiChildContext() of SmiHandlerProfile.c and
SmiHandlerProfileInfo.c, the return buffer from
ConvertDevicePathToText() should be freed after used.
Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
(cherry picked from commit fb1c81a1e5d299c0cb0783cbfe7e727202c2c471)
-rw-r--r-- | Core/MdeModulePkg/Application/SmiHandlerProfileInfo/SmiHandlerProfileInfo.c | 8 | ||||
-rw-r--r-- | Core/MdeModulePkg/Core/PiSmmCore/SmiHandlerProfile.c | 8 |
2 files changed, 14 insertions, 2 deletions
diff --git a/Core/MdeModulePkg/Application/SmiHandlerProfileInfo/SmiHandlerProfileInfo.c b/Core/MdeModulePkg/Application/SmiHandlerProfileInfo/SmiHandlerProfileInfo.c index 84a1c8ee53..2419cd2959 100644 --- a/Core/MdeModulePkg/Application/SmiHandlerProfileInfo/SmiHandlerProfileInfo.c +++ b/Core/MdeModulePkg/Application/SmiHandlerProfileInfo/SmiHandlerProfileInfo.c @@ -535,6 +535,8 @@ DumpSmiChildContext ( IN UINTN ContextSize
)
{
+ CHAR16 *Str;
+
if (CompareGuid (HandlerType, &gEfiSmmSwDispatch2ProtocolGuid)) {
Print(L" SwSmi=\"0x%x\"", ((EFI_SMM_SW_REGISTER_CONTEXT *)Context)->SwSmiInputValue);
} else if (CompareGuid (HandlerType, &gEfiSmmSxDispatch2ProtocolGuid)) {
@@ -555,7 +557,11 @@ DumpSmiChildContext ( Print(L" IoTrapType=\"%a\"", IoTrapTypeToString(((EFI_SMM_IO_TRAP_REGISTER_CONTEXT *)Context)->Type));
} else if (CompareGuid (HandlerType, &gEfiSmmUsbDispatch2ProtocolGuid)) {
Print(L" UsbType=\"0x%x\"", UsbTypeToString(((SMI_HANDLER_PROFILE_USB_REGISTER_CONTEXT *)Context)->Type));
- Print(L" UsbDevicePath=\"%s\"", ConvertDevicePathToText((EFI_DEVICE_PATH_PROTOCOL *)(((SMI_HANDLER_PROFILE_USB_REGISTER_CONTEXT *)Context) + 1), TRUE, TRUE));
+ Str = ConvertDevicePathToText((EFI_DEVICE_PATH_PROTOCOL *)(((SMI_HANDLER_PROFILE_USB_REGISTER_CONTEXT *)Context) + 1), TRUE, TRUE);
+ Print(L" UsbDevicePath=\"%s\"", Str);
+ if (Str != NULL) {
+ FreePool (Str);
+ }
} else {
Print(L" Context=\"");
InternalDumpData (Context, ContextSize);
diff --git a/Core/MdeModulePkg/Core/PiSmmCore/SmiHandlerProfile.c b/Core/MdeModulePkg/Core/PiSmmCore/SmiHandlerProfile.c index ad3b54ace4..63dcf6e3a1 100644 --- a/Core/MdeModulePkg/Core/PiSmmCore/SmiHandlerProfile.c +++ b/Core/MdeModulePkg/Core/PiSmmCore/SmiHandlerProfile.c @@ -356,6 +356,8 @@ DumpSmiChildContext ( IN UINTN ContextSize
)
{
+ CHAR16 *Str;
+
if (CompareGuid (HandlerType, &gEfiSmmSwDispatch2ProtocolGuid)) {
DEBUG ((DEBUG_INFO, " SwSmi - 0x%x\n", ((EFI_SMM_SW_REGISTER_CONTEXT *)Context)->SwSmiInputValue));
} else if (CompareGuid (HandlerType, &gEfiSmmSxDispatch2ProtocolGuid)) {
@@ -376,7 +378,11 @@ DumpSmiChildContext ( DEBUG ((DEBUG_INFO, " IoTrapType - 0x%x\n", ((EFI_SMM_IO_TRAP_REGISTER_CONTEXT *)Context)->Type));
} else if (CompareGuid (HandlerType, &gEfiSmmUsbDispatch2ProtocolGuid)) {
DEBUG ((DEBUG_INFO, " UsbType - 0x%x\n", ((SMI_HANDLER_PROFILE_USB_REGISTER_CONTEXT *)Context)->Type));
- DEBUG ((DEBUG_INFO, " UsbDevicePath - %s\n", ConvertDevicePathToText((EFI_DEVICE_PATH_PROTOCOL *)(((SMI_HANDLER_PROFILE_USB_REGISTER_CONTEXT *)Context) + 1), TRUE, TRUE)));
+ Str = ConvertDevicePathToText((EFI_DEVICE_PATH_PROTOCOL *)(((SMI_HANDLER_PROFILE_USB_REGISTER_CONTEXT *)Context) + 1), TRUE, TRUE);
+ DEBUG ((DEBUG_INFO, " UsbDevicePath - %s\n", Str));
+ if (Str != NULL) {
+ FreePool (Str);
+ }
} else {
DEBUG ((DEBUG_INFO, " Context - "));
InternalDumpData (Context, ContextSize);
|