mirror of https://github.com/acidanthera/audk.git
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
This commit is contained in:
parent
f580c1bd27
commit
19a4a0a0ac
|
@ -201,8 +201,7 @@
|
||||||
|
|
||||||
[Components.common]
|
[Components.common]
|
||||||
IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLib.inf
|
IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLib.inf
|
||||||
IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Pei/LzmaCustomDecompressLib.inf
|
IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
|
||||||
IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Dxe/LzmaCustomDecompressLib.inf
|
|
||||||
IntelFrameworkModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
|
IntelFrameworkModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
|
||||||
IntelFrameworkModulePkg/Library/PciIncompatibleDeviceSupportLib/PciIncompatibleDeviceSupportLib.inf
|
IntelFrameworkModulePkg/Library/PciIncompatibleDeviceSupportLib/PciIncompatibleDeviceSupportLib.inf
|
||||||
IntelFrameworkModulePkg/Library/PeiS3Lib/PeiS3Lib.inf
|
IntelFrameworkModulePkg/Library/PeiS3Lib/PeiS3Lib.inf
|
||||||
|
|
|
@ -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 };
|
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
[Defines]
|
[Defines]
|
||||||
INF_VERSION = 0x00010005
|
INF_VERSION = 0x00010005
|
||||||
BASE_NAME = LzmaDxeDecompressLib
|
BASE_NAME = LzmaDecompressLib
|
||||||
FILE_GUID = 35194660-7421-44ad-9636-e44885f092d1
|
FILE_GUID = 35194660-7421-44ad-9636-e44885f092d1
|
||||||
MODULE_TYPE = BASE
|
MODULE_TYPE = BASE
|
||||||
VERSION_STRING = 1.0
|
VERSION_STRING = 1.0
|
||||||
|
@ -33,11 +33,10 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
[Sources.common]
|
[Sources.common]
|
||||||
LzmaDxeMemory.c
|
LzmaDecompress.c
|
||||||
../LzmaDecompress.c
|
Sdk/C/LzFind.c
|
||||||
../Sdk/C/LzFind.c
|
Sdk/C/LzmaDec.c
|
||||||
../Sdk/C/LzmaDec.c
|
GuidedSectionExtraction.c
|
||||||
../GuidedSectionExtraction.c
|
|
||||||
|
|
||||||
[Packages]
|
[Packages]
|
||||||
MdePkg/MdePkg.dec
|
MdePkg/MdePkg.dec
|
|
@ -29,7 +29,43 @@
|
||||||
#include "Sdk/C/7zVersion.h"
|
#include "Sdk/C/7zVersion.h"
|
||||||
#include "Sdk/C/LzmaDec.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)
|
#define LZMA_HEADER_SIZE (LZMA_PROPS_SIZE + 8)
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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 };
|
|
||||||
|
|
|
@ -37,5 +37,7 @@ typedef int ptrdiff_t;
|
||||||
#define memcpy CopyMem
|
#define memcpy CopyMem
|
||||||
#define memmove CopyMem
|
#define memmove CopyMem
|
||||||
|
|
||||||
|
#define _LZMA_SIZE_OPT
|
||||||
|
|
||||||
#endif // __UEFILZMA_H__
|
#endif // __UEFILZMA_H__
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue