summaryrefslogtreecommitdiff
path: root/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib
diff options
context:
space:
mode:
authorjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>2009-05-04 20:00:04 +0000
committerjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>2009-05-04 20:00:04 +0000
commit19a4a0a0ac0176d6f88788afc5207465e8be983e (patch)
tree74b934c6b6fad47d1e69eb2d481404ebe73bbe52 /IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib
parentf580c1bd27953e9544771c4a388abd79d3394a13 (diff)
downloadedk2-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.c47
-rw-r--r--IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf (renamed from IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Dxe/LzmaCustomDecompressLib.inf)11
-rw-r--r--IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaDecompress.c38
-rw-r--r--IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Pei/LzmaCustomDecompressLib.inf55
-rw-r--r--IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Pei/LzmaPeiMemory.c54
-rw-r--r--IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/UefiLzma.h2
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__