diff --git a/common/LZMA/LzmaCompress.c b/common/LZMA/LzmaCompress.c index 2bde912..25ca4e3 100644 --- a/common/LZMA/LzmaCompress.c +++ b/common/LZMA/LzmaCompress.c @@ -25,8 +25,8 @@ static ISzAlloc SzAllocForLzma = { &AllocForLzma, &FreeForLzma }; SRes OnProgress(void *p, UInt64 inSize, UInt64 outSize) { - (void)p; (void)inSize; (void)outSize; - return SZ_OK; + (void)p; (void)inSize; (void)outSize; + return SZ_OK; } static ICompressProgress g_ProgressCallback = { &OnProgress }; @@ -34,77 +34,77 @@ static ICompressProgress g_ProgressCallback = { &OnProgress }; STATIC UINT64 EFIAPI -RShiftU64( - UINT64 Operand, - UINT32 Count +RShiftU64 ( + UINT64 Operand, + UINT32 Count ) { - return Operand >> Count; + return Operand >> Count; } VOID SetEncodedSizeOfBuf( - UINT64 EncodedSize, - UINT8* EncodedData + UINT64 EncodedSize, + UINT8* EncodedData ) { - INT32 Index; + INT32 Index; - EncodedData[LZMA_PROPS_SIZE] = EncodedSize & 0xFF; - for (Index = LZMA_PROPS_SIZE + 1; Index <= LZMA_PROPS_SIZE + 7; Index++) - { - EncodedSize = RShiftU64(EncodedSize, 8); - EncodedData[Index] = EncodedSize & 0xFF; - } + EncodedData[LZMA_PROPS_SIZE] = EncodedSize & 0xFF; + for (Index = LZMA_PROPS_SIZE + 1; Index <= LZMA_PROPS_SIZE + 7; Index++) + { + EncodedSize = RShiftU64(EncodedSize, 8); + EncodedData[Index] = EncodedSize & 0xFF; + } } -INT32 +USTATUS EFIAPI -LzmaCompress( - CONST UINT8 *Source, - UINTN SourceSize, - UINT8 *Destination, - UINTN *DestinationSize +LzmaCompress ( + CONST UINT8 *Source, + UINT32 SourceSize, + UINT8 *Destination, + UINT32 *DestinationSize ) { - SRes LzmaResult; - CLzmaEncProps props; - SizeT propsSize = LZMA_PROPS_SIZE; - SizeT destLen = SourceSize + SourceSize / 3 + 128; + SRes LzmaResult; + CLzmaEncProps props; + SizeT propsSize = LZMA_PROPS_SIZE; + SizeT destLen = SourceSize + SourceSize / 3 + 128; - if (*DestinationSize < destLen) - { - *DestinationSize = (UINTN)destLen; - return EFI_BUFFER_TOO_SMALL; - } + if (*DestinationSize < (UINT32)destLen) + { + *DestinationSize = (UINT32)destLen; + return EFI_BUFFER_TOO_SMALL; + } - LzmaEncProps_Init(&props); - // TOOD: need to detect this instead of hardcoding - props.dictSize = LZMA_DICTIONARY_SIZE; - props.level = 9; - props.fb = 273; + LzmaEncProps_Init(&props); + // TODO: need to detect this instead of hardcoding + props.dictSize = LZMA_DICTIONARY_SIZE; + props.level = 9; + props.fb = 273; - LzmaResult = LzmaEncode( - (Byte*)((UINT8*)Destination + LZMA_HEADER_SIZE), - &destLen, - Source, - SourceSize, - &props, - (UINT8*)Destination, - &propsSize, - props.writeEndMark, - &g_ProgressCallback, - &SzAllocForLzma, - &SzAllocForLzma); + LzmaResult = LzmaEncode( + (Byte*)((UINT8*)Destination + LZMA_HEADER_SIZE), + &destLen, + Source, + (SizeT)SourceSize, + &props, + (UINT8*)Destination, + &propsSize, + props.writeEndMark, + &g_ProgressCallback, + &SzAllocForLzma, + &SzAllocForLzma); - *DestinationSize = destLen + LZMA_HEADER_SIZE; + *DestinationSize = (UINT32)(destLen + LZMA_HEADER_SIZE); - SetEncodedSizeOfBuf(SourceSize, Destination); + SetEncodedSizeOfBuf(SourceSize, Destination); - if (LzmaResult == SZ_OK) { - return EFI_SUCCESS; - } - else { - return EFI_INVALID_PARAMETER; - } + if (LzmaResult == SZ_OK) { + return EFI_SUCCESS; + } + else { + return EFI_INVALID_PARAMETER; + } } diff --git a/common/LZMA/LzmaCompress.h b/common/LZMA/LzmaCompress.h index afed363..94ec9ed 100644 --- a/common/LZMA/LzmaCompress.h +++ b/common/LZMA/LzmaCompress.h @@ -24,14 +24,14 @@ extern "C" { #define LZMA_DICTIONARY_SIZE 0x800000 #define _LZMA_SIZE_OPT - INT32 - EFIAPI - LzmaCompress( - const UINT8 *Source, - UINTN SourceSize, - UINT8 *Destination, - UINTN *DestinationSize - ); + USTATUS + EFIAPI + LzmaCompress ( + const UINT8 *Source, + UINT32 SourceSize, + UINT8 *Destination, + UINT32 *DestinationSize + ); #ifdef __cplusplus } diff --git a/common/LZMA/LzmaDecompress.c b/common/LZMA/LzmaDecompress.c index 03a3799..8ff8283 100644 --- a/common/LZMA/LzmaDecompress.c +++ b/common/LZMA/LzmaDecompress.c @@ -19,10 +19,10 @@ WITHWARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. UINT64 EFIAPI -LShiftU64( -UINT64 Operand, -UINT32 Count -) +LShiftU64 ( + UINT64 Operand, + UINT32 Count + ) { return Operand << Count; } @@ -39,12 +39,12 @@ Get the size of the uncompressed buffer by parsing EncodeData header. @return The size of the uncompressed buffer. */ UINT64 -GetDecodedSizeOfBuf( -UINT8 *EncodedData -) +GetDecodedSizeOfBuf ( + UINT8 *EncodedData + ) { UINT64 DecodedSize; - INT32 Index; + INT32 Index; // Parse header DecodedSize = 0; @@ -85,18 +85,27 @@ DestinationSize and the size of the scratch buffer was returned ScratchSize. */ -INT32 +USTATUS EFIAPI -LzmaGetInfo( -CONST VOID *Source, -UINTN SourceSize, -UINTN *DestinationSize -) +LzmaGetInfo ( + CONST VOID *Source, + UINT32 SourceSize, + UINT32 *DestinationSize + ) { - ASSERT(SourceSize >= LZMA_HEADER_SIZE); (void)SourceSize; + UINT64 DecodedSize; + ASSERT(SourceSize >= LZMA_HEADER_SIZE); + (void)SourceSize; - *DestinationSize = (UINTN)GetDecodedSizeOfBuf((UINT8*)Source); - return U_SUCCESS; + DecodedSize = GetDecodedSizeOfBuf((UINT8*)Source); + + if (DecodedSize <= UINT32_MAX) { + *DestinationSize = (UINT32)DecodedSize; + return U_SUCCESS; + } + else { + return U_INVALID_PARAMETER; + } } /* @@ -118,13 +127,13 @@ the uncompressed buffer is returned Destination. The source buffer specified by Source is corrupted (not a valid compressed format). */ -INT32 +USTATUS EFIAPI -LzmaDecompress( -CONST VOID *Source, -UINTN SourceSize, -VOID *Destination -) +LzmaDecompress ( + CONST VOID *Source, + UINT32 SourceSize, + VOID *Destination + ) { SRes LzmaResult; ELzmaStatus Status; diff --git a/common/LZMA/LzmaDecompress.h b/common/LZMA/LzmaDecompress.h index fe89b86..82a162c 100644 --- a/common/LZMA/LzmaDecompress.h +++ b/common/LZMA/LzmaDecompress.h @@ -23,13 +23,6 @@ extern "C" { #define LZMA_HEADER_SIZE (LZMA_PROPS_SIZE + 8) - UINT64 - EFIAPI - LShiftU64( - UINT64 Operand, - UINT32 Count - ); - /* Given a Lzma compressed source buffer, this function retrieves the size of the uncompressed buffer and the size of the scratch buffer required @@ -57,12 +50,12 @@ extern "C" { buffer was returned ScratchSize. */ - INT32 + USTATUS EFIAPI - LzmaGetInfo( - const VOID *Source, - UINT32 SourceSize, - UINT32 *DestinationSize + LzmaGetInfo ( + CONST VOID *Source, + UINT32 SourceSize, + UINT32 *DestinationSize ); /* @@ -84,12 +77,12 @@ extern "C" { The source buffer specified by Source is corrupted (not a valid compressed format). */ - INT32 + USTATUS EFIAPI - LzmaDecompress( - const VOID *Source, - UINT32 SourceSize, - VOID *Destination + LzmaDecompress ( + CONST VOID *Source, + UINT32 SourceSize, + VOID *Destination ); #ifdef __cplusplus