diff options
| author | Andrey Smirnov <[email protected]> | 2018-12-20 23:28:38 -0800 |
|---|---|---|
| committer | Greg Kroah-Hartman <[email protected]> | 2019-01-22 10:23:17 +0100 |
| commit | 5158c36ec9d0b3343f58987cec7ebfd866331fd0 (patch) | |
| tree | f8196351408508243cc62de53c24ae76ffa886ce /include/linux | |
| parent | 8092e79204e7884f4bee3584ecfe6cf4a124d129 (diff) | |
ihex: Check if zero-length record is at the end of the blob
When verifying the validity of IHEX file we need to make sure that
zero-length record we found is located at the end of the file. Not
doing that could result in an invalid file with a bogus zero-length in
the middle short-circuiting the check and being reported as valid.
Cc: Chris Healy <[email protected]>
Cc: Kyle McMartin <[email protected]>
Cc: Andrew Morton <[email protected]>
Cc: Masahiro Yamada <[email protected]>
Cc: David Woodhouse <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: linux-kernel <[email protected]>
Signed-off-by: Andrey Smirnov <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/ihex.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/ihex.h b/include/linux/ihex.h index 9c701521176b..9130f307a420 100644 --- a/include/linux/ihex.h +++ b/include/linux/ihex.h @@ -49,7 +49,7 @@ static inline int ihex_validate_fw(const struct firmware *fw) for (; rec <= end; rec = __ihex_next_binrec(rec)) { /* Zero length marks end of records */ - if (!be16_to_cpu(rec->len)) + if (rec == end && !be16_to_cpu(rec->len)) return 0; } return -EINVAL; |