lzo: add a function to check the validity of the header

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Jean-Jacques Hiblot 2017-09-15 12:57:28 +02:00 committed by Tom Rini
parent 02035d0086
commit d753f942ec
2 changed files with 21 additions and 5 deletions

View File

@ -31,6 +31,9 @@ int lzo1x_decompress_safe(const unsigned char *src, size_t src_len,
int lzop_decompress(const unsigned char *src, size_t src_len,
unsigned char *dst, size_t *dst_len);
/* check if the header is valid (based on magic numbers) */
bool lzop_is_valid_header(const unsigned char *src);
/*
* Return values (< 0 = Error)
*/

View File

@ -30,16 +30,29 @@ static const unsigned char lzop_magic[] = {
#define HEADER_HAS_FILTER 0x00000800L
bool lzop_is_valid_header(const unsigned char *src)
{
int i;
/* read magic: 9 first bytes */
for (i = 0; i < ARRAY_SIZE(lzop_magic); i++) {
if (*src++ != lzop_magic[i])
return false;
}
return true;
}
static inline const unsigned char *parse_header(const unsigned char *src)
{
u16 version;
int i;
/* read magic: 9 first bytes */
for (i = 0; i < ARRAY_SIZE(lzop_magic); i++) {
if (*src++ != lzop_magic[i])
return NULL;
}
if (!lzop_is_valid_header(src))
return NULL;
/* skip header */
src += 9;
/* get version (2bytes), skip library version (2),
* 'need to be extracted' version (2) and
* method (1) */