diff options
author | jljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524> | 2009-05-04 20:00:04 +0000 |
---|---|---|
committer | jljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524> | 2009-05-04 20:00:04 +0000 |
commit | 19a4a0a0ac0176d6f88788afc5207465e8be983e (patch) | |
tree | 74b934c6b6fad47d1e69eb2d481404ebe73bbe52 /IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib | |
parent | f580c1bd27953e9544771c4a388abd79d3394a13 (diff) | |
download | edk2-platforms-19a4a0a0ac0176d6f88788afc5207465e8be983e.tar.xz |
Merge PEI & DXE LzmaCustomDecompressLib. A previous implementation
was causing the LZMA decompression code to request a large buffer,
which caused an ASSERT to fail for PEI's AllocatePool. The
current implementation, which uses the LzmaDecode function, does
not have this issue and therefore both the PEI & DXE versions can
use AllocatePool/FreePool.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8236 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib')
-rw-r--r-- | IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Dxe/LzmaDxeMemory.c | 47 | ||||
-rw-r--r-- | IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf (renamed from IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Dxe/LzmaCustomDecompressLib.inf) | 11 | ||||
-rw-r--r-- | IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaDecompress.c | 38 | ||||
-rw-r--r-- | IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Pei/LzmaCustomDecompressLib.inf | 55 | ||||
-rw-r--r-- | IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Pei/LzmaPeiMemory.c | 54 | ||||
-rw-r--r-- | IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/UefiLzma.h | 2 |
6 files changed, 44 insertions, 163 deletions
diff --git a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Dxe/LzmaDxeMemory.c b/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Dxe/LzmaDxeMemory.c deleted file mode 100644 index 29733069e0..0000000000 --- a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Dxe/LzmaDxeMemory.c +++ /dev/null @@ -1,47 +0,0 @@ -/** @file
- LZMA Memory Allocation for DXE
-
- Copyright (c) 2006 - 2009, Intel Corporation<BR>
- All rights reserved. This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include <Uefi.h>
-#include <Library/DebugLib.h>
-#include <Library/MemoryAllocationLib.h>
-#include "Sdk/C/Types.h"
-
-STATIC
-VOID *
-SzAlloc(
- void *p,
- size_t size
- )
-{
- void *np;
- p = p;
- np = AllocatePool(size);
- return np;
-}
-
-STATIC
-VOID
-SzFree(
- void *p,
- void *address
- )
-{
- p = p;
- if (address != NULL) {
- FreePool(address);
- }
-}
-
-ISzAlloc g_Alloc = { SzAlloc, SzFree };
-
diff --git a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Dxe/LzmaCustomDecompressLib.inf b/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf index cfeed7c01c..9b4d78447d 100644 --- a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Dxe/LzmaCustomDecompressLib.inf +++ b/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf @@ -16,7 +16,7 @@ [Defines]
INF_VERSION = 0x00010005
- BASE_NAME = LzmaDxeDecompressLib
+ BASE_NAME = LzmaDecompressLib
FILE_GUID = 35194660-7421-44ad-9636-e44885f092d1
MODULE_TYPE = BASE
VERSION_STRING = 1.0
@@ -33,11 +33,10 @@ #
[Sources.common]
- LzmaDxeMemory.c
- ../LzmaDecompress.c
- ../Sdk/C/LzFind.c
- ../Sdk/C/LzmaDec.c
- ../GuidedSectionExtraction.c
+ LzmaDecompress.c
+ Sdk/C/LzFind.c
+ Sdk/C/LzmaDec.c
+ GuidedSectionExtraction.c
[Packages]
MdePkg/MdePkg.dec
diff --git a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaDecompress.c b/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaDecompress.c index f1729825c7..439e15beab 100644 --- a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaDecompress.c +++ b/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaDecompress.c @@ -29,7 +29,43 @@ #include "Sdk/C/7zVersion.h"
#include "Sdk/C/LzmaDec.h"
-extern ISzAlloc g_Alloc;
+/**
+ Allocation routine used by LZMA decompression.
+
+ @param p Pointer to the ISzAlloc instance
+ @param size The size in bytes to be allocated
+
+ @return The allocated pointer address, or NULL on failure
+**/
+STATIC
+VOID *
+SzAlloc (
+ void *p,
+ size_t size
+ )
+{
+ return AllocatePool (size);
+}
+
+/**
+ Free routine used by LZMA decompression.
+
+ @param p Pointer to the ISzAlloc instance
+ @param address The address to be freed
+**/
+STATIC
+VOID
+SzFree (
+ void *p,
+ void *address
+ )
+{
+ if (address != NULL) {
+ FreePool (address);
+ }
+}
+
+STATIC ISzAlloc g_Alloc = { SzAlloc, SzFree };
#define LZMA_HEADER_SIZE (LZMA_PROPS_SIZE + 8)
diff --git a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Pei/LzmaCustomDecompressLib.inf b/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Pei/LzmaCustomDecompressLib.inf deleted file mode 100644 index a9b347be10..0000000000 --- a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Pei/LzmaCustomDecompressLib.inf +++ /dev/null @@ -1,55 +0,0 @@ -#/** @file
-# LZMA GUIDed Section Extraction Protocol Library
-#
-# Uefi Decompression library instance
-# Copyright (c) 2006, 2009, Intel Corporation.
-#
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-#
-#**/
-
-[Defines]
- INF_VERSION = 0x00010005
- BASE_NAME = LzmaPeiDecompressLib
- FILE_GUID = 6725ae86-6ed1-43bd-aeec-0517c0749d70
- MODULE_TYPE = BASE
- VERSION_STRING = 1.0
- LIBRARY_CLASS = BASE
- EDK_RELEASE_VERSION = 0x00020000
- EFI_SPECIFICATION_VERSION = 0x00020000
-
- CONSTRUCTOR = LzmaDecompressLibConstructor
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-# VALID_ARCHITECTURES = IA32 X64 IPF EBC
-#
-
-[Sources.common]
- LzmaPeiMemory.c
- ../LzmaDecompress.c
- ../Sdk/C/LzFind.c
- ../Sdk/C/LzmaDec.c
- ../GuidedSectionExtraction.c
-
-[Packages]
- MdePkg/MdePkg.dec
- IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
-
-[Guids]
- gLzmaCustomDecompressGuid
-
-[LibraryClasses]
- BaseLib
- DebugLib
- BaseMemoryLib
- MemoryAllocationLib
- ExtractGuidedSectionLib
-
diff --git a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Pei/LzmaPeiMemory.c b/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Pei/LzmaPeiMemory.c deleted file mode 100644 index a6824f17f3..0000000000 --- a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Pei/LzmaPeiMemory.c +++ /dev/null @@ -1,54 +0,0 @@ -/** @file
- LZMA Memory Allocation for PEI
-
- AllocatePool does not work for large blocks during PEI, so we must
- use AllocatePages.
-
- Copyright (c) 2006 - 2009, Intel Corporation<BR>
- All rights reserved. This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include <Uefi.h>
-#include <Library/DebugLib.h>
-#include <Library/MemoryAllocationLib.h>
-#include "Sdk/C/Types.h"
-
-STATIC
-VOID *
-SzAlloc(
- void *p,
- size_t size
- )
-{
- void *np;
- p = p;
- if (size > EFI_PAGE_SIZE) {
- np = AllocatePages(EFI_SIZE_TO_PAGES(size));
- } else {
- np = AllocatePool(size);
- }
- return np;
-}
-
-STATIC
-VOID
-SzFree(
- void *p,
- void *address
- )
-{
- p = p;
- if (address != NULL) {
- FreePool(address);
- }
-}
-
-ISzAlloc g_Alloc = { SzAlloc, SzFree };
-
diff --git a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/UefiLzma.h b/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/UefiLzma.h index f6db7f15cb..fdd013c5e3 100644 --- a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/UefiLzma.h +++ b/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/UefiLzma.h @@ -37,5 +37,7 @@ typedef int ptrdiff_t; #define memcpy CopyMem
#define memmove CopyMem
+#define _LZMA_SIZE_OPT
+
#endif // __UEFILZMA_H__
|