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>
diff --git a/lib/lzo/lzo1x_decompress.c b/lib/lzo/lzo1x_decompress.c
index ccc90b8..65fef0b 100644
--- a/lib/lzo/lzo1x_decompress.c
+++ b/lib/lzo/lzo1x_decompress.c
@@ -30,16 +30,29 @@
#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) */