]> git.proxmox.com Git - mirror_edk2.git/blobdiff - CryptoPkg/Library/BaseCryptLib/SysCall/RuntimeMemAllocation.c
CryptoPkg/BaseCryptLib: Fix buffer overflow issue in realloc wrapper
[mirror_edk2.git] / CryptoPkg / Library / BaseCryptLib / SysCall / RuntimeMemAllocation.c
index 19c30dc66d055695a93cefe2e58459827bfd272f..463f2bf8557bfb0036bc0467d9f9b55b24cd7684 100644 (file)
@@ -2,7 +2,7 @@
   Light-weight Memory Management Routines for OpenSSL-based Crypto\r
   Library at Runtime Phase.\r
 \r
-Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -13,9 +13,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 **/\r
 \r
-#include <OpenSslSupport.h>\r
+#include <CrtLibSupport.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
 #include <Library/UefiRuntimeLib.h>\r
+#include <Library/MemoryAllocationLib.h>\r
 #include <Guid/EventGroup.h>\r
 \r
 //----------------------------------------------------------------\r
@@ -282,7 +283,7 @@ RuntimeFreeMem (
   UINTN  StartOffset;\r
   UINTN  StartPageIndex;\r
 \r
-  StartOffset    = (UINTN) ((UINT8 *)Buffer - mRTPageTable->DataAreaBase);\r
+  StartOffset    = (UINTN)Buffer - (UINTN)mRTPageTable->DataAreaBase;\r
   StartPageIndex = RT_SIZE_TO_PAGES (mRTPageTable->Pages[RT_SIZE_TO_PAGES(StartOffset)].StartPageOffset);\r
 \r
   while (StartPageIndex < mRTPageTable->PageCount) {\r
@@ -403,7 +404,7 @@ void *realloc (void *ptr, size_t size)
   //\r
   // Get Original Size of ptr\r
   //\r
-  StartOffset    = (UINTN) ((UINT8 *)ptr - mRTPageTable->DataAreaBase);\r
+  StartOffset    = (UINTN)ptr - (UINTN)mRTPageTable->DataAreaBase;\r
   StartPageIndex = RT_SIZE_TO_PAGES (mRTPageTable->Pages[RT_SIZE_TO_PAGES (StartOffset)].StartPageOffset);\r
   PageCount      = 0;\r
   while (StartPageIndex < mRTPageTable->PageCount) {\r