summaryrefslogtreecommitdiff
path: root/payloads/libpayload/liblz4/lz4_wrapper.c
diff options
context:
space:
mode:
Diffstat (limited to 'payloads/libpayload/liblz4/lz4_wrapper.c')
-rw-r--r--payloads/libpayload/liblz4/lz4_wrapper.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/payloads/libpayload/liblz4/lz4_wrapper.c b/payloads/libpayload/liblz4/lz4_wrapper.c
index d125ce336f..3d17fe6742 100644
--- a/payloads/libpayload/liblz4/lz4_wrapper.c
+++ b/payloads/libpayload/liblz4/lz4_wrapper.c
@@ -141,6 +141,9 @@ size_t ulz4fn(const void *src, size_t srcn, void *dst, size_t dstn)
}
while (1) {
+ if ((size_t)(in - src) + sizeof(struct lz4_block_header) > srcn)
+ break; /* input overrun */
+
struct lz4_block_header b = { .raw = le32toh(*(uint32_t *)in) };
in += sizeof(struct lz4_block_header);