mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-03 21:48:15 +00:00 
			
		
		
		
	Update the LZ4 compression module based on LZ4 v1.8.3 in order to use the newest LZ4_decompress_safe_partial() which can now decode exactly the nb of bytes requested. Signed-off-by: Huang Jianan <jnhuang95@gmail.com>
		
			
				
	
	
		
			74 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* SPDX-License-Identifier: GPL-2.0+ */
 | 
						|
/*
 | 
						|
 * Copyright 2019 Google LLC
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef __LZ4_H
 | 
						|
#define __LZ4_H
 | 
						|
 | 
						|
/**
 | 
						|
 * ulz4fn() - Decompress LZ4 data
 | 
						|
 *
 | 
						|
 * @src: Source data to decompress
 | 
						|
 * @srcn: Length of source data
 | 
						|
 * @dst: Destination for uncompressed data
 | 
						|
 * @dstn: Returns length of uncompressed data
 | 
						|
 * Return: 0 if OK, -EPROTONOSUPPORT if the magic number or version number are
 | 
						|
 *	not recognised or independent blocks are used, -EINVAL if the reserved
 | 
						|
 *	fields are non-zero, or input is overrun, -EENOBUFS if the destination
 | 
						|
 *	buffer is overrun, -EEPROTO if the compressed data causes an error in
 | 
						|
 *	the decompression algorithm
 | 
						|
 */
 | 
						|
int ulz4fn(const void *src, size_t srcn, void *dst, size_t *dstn);
 | 
						|
 | 
						|
/**
 | 
						|
 * LZ4_decompress_safe() - Decompression protected against buffer overflow
 | 
						|
 * @source: source address of the compressed data
 | 
						|
 * @dest: output buffer address of the uncompressed data
 | 
						|
 *	which must be already allocated
 | 
						|
 * @compressedSize: is the precise full size of the compressed block
 | 
						|
 * @maxDecompressedSize: is the size of 'dest' buffer
 | 
						|
 *
 | 
						|
 * Decompresses data from 'source' into 'dest'.
 | 
						|
 * If the source stream is detected malformed, the function will
 | 
						|
 * stop decoding and return a negative result.
 | 
						|
 * This function is protected against buffer overflow exploits,
 | 
						|
 * including malicious data packets. It never writes outside output buffer,
 | 
						|
 * nor reads outside input buffer.
 | 
						|
 *
 | 
						|
 * Return: number of bytes decompressed into destination buffer
 | 
						|
 *	(necessarily <= maxDecompressedSize)
 | 
						|
 *	or a negative result in case of error
 | 
						|
 */
 | 
						|
int LZ4_decompress_safe(const char *source, char *dest,
 | 
						|
	int compressedSize, int maxDecompressedSize);
 | 
						|
 | 
						|
/**
 | 
						|
 * LZ4_decompress_safe_partial() - Decompress a block of size 'compressedSize'
 | 
						|
 *	at position 'source' into buffer 'dest'
 | 
						|
 * @source: source address of the compressed data
 | 
						|
 * @dest: output buffer address of the decompressed data which must be
 | 
						|
 *	already allocated
 | 
						|
 * @compressedSize: is the precise full size of the compressed block.
 | 
						|
 * @targetOutputSize: the decompression operation will try
 | 
						|
 *	to stop as soon as 'targetOutputSize' has been reached
 | 
						|
 * @maxDecompressedSize: is the size of destination buffer
 | 
						|
 *
 | 
						|
 * This function decompresses a compressed block of size 'compressedSize'
 | 
						|
 * at position 'source' into destination buffer 'dest'
 | 
						|
 * of size 'maxDecompressedSize'.
 | 
						|
 * The function tries to stop decompressing operation as soon as
 | 
						|
 * 'targetOutputSize' has been reached, reducing decompression time.
 | 
						|
 * This function never writes outside of output buffer,
 | 
						|
 * and never reads outside of input buffer.
 | 
						|
 * It is therefore protected against malicious data packets.
 | 
						|
 *
 | 
						|
 * Return: the number of bytes decoded in the destination buffer
 | 
						|
 *	(necessarily <= maxDecompressedSize)
 | 
						|
 *	or a negative result in case of error
 | 
						|
 *
 | 
						|
 */
 | 
						|
int LZ4_decompress_safe_partial(const char *src, char *dst,
 | 
						|
	int compressedSize, int targetOutputSize, int dstCapacity);
 | 
						|
#endif
 |