From: qhuang8 Date: Tue, 12 May 2009 02:29:22 +0000 (+0000) Subject: Minor update the function interface for three re-allocate pool APIs to check the... X-Git-Tag: edk2-stable201903~17974 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=56304569090565f5b8a24c365de38f47c7b0217c Minor update the function interface for three re-allocate pool APIs to check the conformance of OldBuffer only when the memory allocation succeeds. In this way the assert condition is covered by CopyMem () API in BaseMemoryLib. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8296 6f19259b-4bc3-4df7-8a09-765794883524 --- diff --git a/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/MemoryAllocationLib.c b/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/MemoryAllocationLib.c index 5939f2278c..5a51659893 100644 --- a/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/MemoryAllocationLib.c +++ b/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/MemoryAllocationLib.c @@ -663,8 +663,8 @@ AllocateReservedCopyPool ( If NewSize is 0, then a valid buffer of 0 size is returned. If there is not enough memory remaining to satisfy the request, then NULL is returned. - If the smaller of NewSize and OldSize is greater than (MAX_ADDRESS - OldBuffer + 1), - then ASSERT(). + If the allocation of the new buffer is successful and the smaller of NewSize and OldSize + is greater than (MAX_ADDRESS - OldBuffer + 1), then ASSERT(). @param PoolType The type of pool to allocate. @param OldSize The size, in bytes, of OldBuffer. @@ -685,10 +685,6 @@ InternalReallocatePool ( { VOID *NewBuffer; - // - // Check the boundary for OldBuffer even if the allocation failure. - // - ASSERT (OldBuffer == NULL || MIN (OldSize, NewSize) <= MAX_ADDRESS - (UINTN) OldBuffer + 1); NewBuffer = InternalAllocateZeroPool (PoolType, NewSize); if (NewBuffer != NULL && OldBuffer != NULL) { CopyMem (NewBuffer, OldBuffer, MIN (OldSize, NewSize)); @@ -707,8 +703,8 @@ InternalReallocatePool ( If NewSize is 0, then a valid buffer of 0 size is returned. If there is not enough memory remaining to satisfy the request, then NULL is returned. - If the smaller of NewSize and OldSize is greater than (MAX_ADDRESS - OldBuffer + 1), - then ASSERT(). + If the allocation of the new buffer is successful and the smaller of NewSize and OldSize + is greater than (MAX_ADDRESS - OldBuffer + 1), then ASSERT(). @param OldSize The size, in bytes, of OldBuffer. @param NewSize The size, in bytes, of the buffer to reallocate. @@ -739,8 +735,8 @@ ReallocatePool ( If NewSize is 0, then a valid buffer of 0 size is returned. If there is not enough memory remaining to satisfy the request, then NULL is returned. - If the smaller of NewSize and OldSize is greater than (MAX_ADDRESS - OldBuffer + 1), - then ASSERT(). + If the allocation of the new buffer is successful and the smaller of NewSize and OldSize + is greater than (MAX_ADDRESS - OldBuffer + 1), then ASSERT(). @param OldSize The size, in bytes, of OldBuffer. @param NewSize The size, in bytes, of the buffer to reallocate. @@ -771,8 +767,8 @@ ReallocateRuntimePool ( If NewSize is 0, then a valid buffer of 0 size is returned. If there is not enough memory remaining to satisfy the request, then NULL is returned. - If the smaller of NewSize and OldSize is greater than (MAX_ADDRESS - OldBuffer + 1), - then ASSERT(). + If the allocation of the new buffer is successful and the smaller of NewSize and OldSize + is greater than (MAX_ADDRESS - OldBuffer + 1), then ASSERT(). @param OldSize The size, in bytes, of OldBuffer. @param NewSize The size, in bytes, of the buffer to reallocate. diff --git a/MdePkg/Include/Library/MemoryAllocationLib.h b/MdePkg/Include/Library/MemoryAllocationLib.h index 597aeecaef..5199e17ce8 100644 --- a/MdePkg/Include/Library/MemoryAllocationLib.h +++ b/MdePkg/Include/Library/MemoryAllocationLib.h @@ -390,8 +390,8 @@ AllocateReservedCopyPool ( If NewSize is 0, then a valid buffer of 0 size is returned. If there is not enough memory remaining to satisfy the request, then NULL is returned. - If NewSize is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). - If OldSize is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). + If the allocation of the new buffer is successful and the smaller of NewSize and OldSize + is greater than (MAX_ADDRESS - OldBuffer + 1), then ASSERT(). @param OldSize The size, in bytes, of OldBuffer. @param NewSize The size, in bytes, of the buffer to reallocate. @@ -419,8 +419,8 @@ ReallocatePool ( If NewSize is 0, then a valid buffer of 0 size is returned. If there is not enough memory remaining to satisfy the request, then NULL is returned. - If NewSize is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). - If OldSize is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). + If the allocation of the new buffer is successful and the smaller of NewSize and OldSize + is greater than (MAX_ADDRESS - OldBuffer + 1), then ASSERT(). @param OldSize The size, in bytes, of OldBuffer. @param NewSize The size, in bytes, of the buffer to reallocate. @@ -448,8 +448,8 @@ ReallocateRuntimePool ( If NewSize is 0, then a valid buffer of 0 size is returned. If there is not enough memory remaining to satisfy the request, then NULL is returned. - If NewSize is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). - If OldSize is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). + If the allocation of the new buffer is successful and the smaller of NewSize and OldSize + is greater than (MAX_ADDRESS - OldBuffer + 1), then ASSERT(). @param OldSize The size, in bytes, of OldBuffer. @param NewSize The size, in bytes, of the buffer to reallocate. diff --git a/MdePkg/Library/PeiMemoryAllocationLib/MemoryAllocationLib.c b/MdePkg/Library/PeiMemoryAllocationLib/MemoryAllocationLib.c index 6e0517fe4d..81b49a6b3e 100644 --- a/MdePkg/Library/PeiMemoryAllocationLib/MemoryAllocationLib.c +++ b/MdePkg/Library/PeiMemoryAllocationLib/MemoryAllocationLib.c @@ -648,8 +648,8 @@ AllocateReservedCopyPool ( If NewSize is 0, then a valid buffer of 0 size is returned. If there is not enough memory remaining to satisfy the request, then NULL is returned. - If the smaller of NewSize and OldSize is greater than (MAX_ADDRESS - OldBuffer + 1), - then ASSERT(). + If the allocation of the new buffer is successful and the smaller of NewSize and OldSize + is greater than (MAX_ADDRESS - OldBuffer + 1), then ASSERT(). @param PoolType The type of pool to allocate. @param OldSize The size, in bytes, of OldBuffer. @@ -670,10 +670,6 @@ InternalReallocatePool ( { VOID *NewBuffer; - // - // Check the boundary for OldBuffer even if the allocation failure. - // - ASSERT (OldBuffer == NULL || MIN (OldSize, NewSize) <= MAX_ADDRESS - (UINTN) OldBuffer + 1); NewBuffer = InternalAllocateZeroPool (PoolType, NewSize); if (NewBuffer != NULL && OldBuffer != NULL) { CopyMem (NewBuffer, OldBuffer, MIN (OldSize, NewSize)); @@ -692,8 +688,8 @@ InternalReallocatePool ( If NewSize is 0, then a valid buffer of 0 size is returned. If there is not enough memory remaining to satisfy the request, then NULL is returned. - If the smaller of NewSize and OldSize is greater than (MAX_ADDRESS - OldBuffer + 1), - then ASSERT(). + If the allocation of the new buffer is successful and the smaller of NewSize and OldSize + is greater than (MAX_ADDRESS - OldBuffer + 1), then ASSERT(). @param OldSize The size, in bytes, of OldBuffer. @param NewSize The size, in bytes, of the buffer to reallocate. @@ -724,8 +720,8 @@ ReallocatePool ( If NewSize is 0, then a valid buffer of 0 size is returned. If there is not enough memory remaining to satisfy the request, then NULL is returned. - If the smaller of NewSize and OldSize is greater than (MAX_ADDRESS - OldBuffer + 1), - then ASSERT(). + If the allocation of the new buffer is successful and the smaller of NewSize and OldSize + is greater than (MAX_ADDRESS - OldBuffer + 1), then ASSERT(). @param OldSize The size, in bytes, of OldBuffer. @param NewSize The size, in bytes, of the buffer to reallocate. @@ -756,8 +752,8 @@ ReallocateRuntimePool ( If NewSize is 0, then a valid buffer of 0 size is returned. If there is not enough memory remaining to satisfy the request, then NULL is returned. - If the smaller of NewSize and OldSize is greater than (MAX_ADDRESS - OldBuffer + 1), - then ASSERT(). + If the allocation of the new buffer is successful and the smaller of NewSize and OldSize + is greater than (MAX_ADDRESS - OldBuffer + 1), then ASSERT(). @param OldSize The size, in bytes, of OldBuffer. @param NewSize The size, in bytes, of the buffer to reallocate. diff --git a/MdePkg/Library/UefiMemoryAllocationLib/MemoryAllocationLib.c b/MdePkg/Library/UefiMemoryAllocationLib/MemoryAllocationLib.c index 668372223c..2688837527 100644 --- a/MdePkg/Library/UefiMemoryAllocationLib/MemoryAllocationLib.c +++ b/MdePkg/Library/UefiMemoryAllocationLib/MemoryAllocationLib.c @@ -663,8 +663,8 @@ AllocateReservedCopyPool ( If NewSize is 0, then a valid buffer of 0 size is returned. If there is not enough memory remaining to satisfy the request, then NULL is returned. - If the smaller of NewSize and OldSize is greater than (MAX_ADDRESS - OldBuffer + 1), - then ASSERT(). + If the allocation of the new buffer is successful and the smaller of NewSize and OldSize + is greater than (MAX_ADDRESS - OldBuffer + 1), then ASSERT(). @param PoolType The type of pool to allocate. @param OldSize The size, in bytes, of OldBuffer. @@ -685,10 +685,6 @@ InternalReallocatePool ( { VOID *NewBuffer; - // - // Check the boundary for OldBuffer even if the allocation failure. - // - ASSERT (OldBuffer == NULL || MIN (OldSize, NewSize) <= MAX_ADDRESS - (UINTN) OldBuffer + 1); NewBuffer = InternalAllocateZeroPool (PoolType, NewSize); if (NewBuffer != NULL && OldBuffer != NULL) { CopyMem (NewBuffer, OldBuffer, MIN (OldSize, NewSize)); @@ -707,8 +703,8 @@ InternalReallocatePool ( If NewSize is 0, then a valid buffer of 0 size is returned. If there is not enough memory remaining to satisfy the request, then NULL is returned. - If the smaller of NewSize and OldSize is greater than (MAX_ADDRESS - OldBuffer + 1), - then ASSERT(). + If the allocation of the new buffer is successful and the smaller of NewSize and OldSize + is greater than (MAX_ADDRESS - OldBuffer + 1), then ASSERT(). @param OldSize The size, in bytes, of OldBuffer. @param NewSize The size, in bytes, of the buffer to reallocate. @@ -739,8 +735,8 @@ ReallocatePool ( If NewSize is 0, then a valid buffer of 0 size is returned. If there is not enough memory remaining to satisfy the request, then NULL is returned. - If the smaller of NewSize and OldSize is greater than (MAX_ADDRESS - OldBuffer + 1), - then ASSERT(). + If the allocation of the new buffer is successful and the smaller of NewSize and OldSize + is greater than (MAX_ADDRESS - OldBuffer + 1), then ASSERT(). @param OldSize The size, in bytes, of OldBuffer. @param NewSize The size, in bytes, of the buffer to reallocate. @@ -771,8 +767,8 @@ ReallocateRuntimePool ( If NewSize is 0, then a valid buffer of 0 size is returned. If there is not enough memory remaining to satisfy the request, then NULL is returned. - If the smaller of NewSize and OldSize is greater than (MAX_ADDRESS - OldBuffer + 1), - then ASSERT(). + If the allocation of the new buffer is successful and the smaller of NewSize and OldSize + is greater than (MAX_ADDRESS - OldBuffer + 1), then ASSERT(). @param OldSize The size, in bytes, of OldBuffer. @param NewSize The size, in bytes, of the buffer to reallocate.