diff options
author | Andrey Smirnov <andrew.smirnov@gmail.com> | 2018-12-21 10:28:38 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-01-22 12:23:17 +0300 |
commit | 5158c36ec9d0b3343f58987cec7ebfd866331fd0 (patch) | |
tree | f8196351408508243cc62de53c24ae76ffa886ce /include/linux/ihex.h | |
parent | 8092e79204e7884f4bee3584ecfe6cf4a124d129 (diff) | |
download | linux-5158c36ec9d0b3343f58987cec7ebfd866331fd0.tar.xz |
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 <cphealy@gmail.com>
Cc: Kyle McMartin <kyle@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-kernel <linux-kernel@vger.kernel.org>
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/linux/ihex.h')
-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; |