All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] lz4: fix LZ4_decompress_safe_partial read out of bound
@ 2021-11-11  7:17 Guo Xuenan
  2021-11-11  8:50 ` [PATCH v2] " Guo Xuenan
  0 siblings, 1 reply; 8+ messages in thread
From: Guo Xuenan @ 2021-11-11  7:17 UTC (permalink / raw)
  To: akpm
  Cc: linux-kernel, hsiangkao, terrelln, cyan, cy.fan, fangwei1,
	wangli74, guoxuenan, syzbot+63d688f1d899c588fb71, hsiangkao

When partialDecoding, it is EOF if we've either, filled the output
buffer or can't proceed with reading an offset for following match.

As reported by KASAN[1], LZ4_decompress_safe_partial may lead
to erofs decoding read out of bound. Fortunately, lz4 upstream has
fixed it [2]. current decompression routine was ported from lz4 v1.8.3,
so, we can fix it, before bumping lib/lz4 to v1.9.+.

[1] https://syzkaller.appspot.com/bug?extid=63d688f1d899c588fb71
[2] https://github.com/lz4/lz4/commit/c5d6f8a8be3927c0bec91bcc58667a6cfad244ad#

Reported-by: syzbot+63d688f1d899c588fb71@syzkaller.appspotmail.com
Cc: hsiangkao@linux.alibaba.com
Cc: terrelln@fb.com
Cc: cyan@fb.com
Cc: cy.fan@huawei.com
Signed-off-by: Guo Xuenan <guoxuenan@huawei.com>
---
 lib/lz4/lz4_decompress.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/lib/lz4/lz4_decompress.c b/lib/lz4/lz4_decompress.c
index 926f4823d5ea..fd1728d94bab 100644
--- a/lib/lz4/lz4_decompress.c
+++ b/lib/lz4/lz4_decompress.c
@@ -271,8 +271,12 @@ static FORCE_INLINE int LZ4_decompress_generic(
 			ip += length;
 			op += length;
 
-			/* Necessarily EOF, due to parsing restrictions */
-			if (!partialDecoding || (cpy == oend))
+			/* Necessarily EOF when !partialDecoding.
+			 * When partialDecoding, it is EOF if we've either
+			 * filled the output buffer or
+			 * can't proceed with reading an offset for following match.
+			 */
+			if (!partialDecoding || (cpy == oend) || (ip >= (iend - 2)))
 				break;
 		} else {
 			/* may overwrite up to WILDCOPYLENGTH beyond cpy */
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2022-04-06  5:55 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-11  7:17 [PATCH] lz4: fix LZ4_decompress_safe_partial read out of bound Guo Xuenan
2021-11-11  8:50 ` [PATCH v2] " Guo Xuenan
2021-11-11 10:50   ` [PATCH v3] " Guo Xuenan
2021-11-19 18:23     ` Nick Terrell
2022-04-02  4:55       ` Gao Xiang
2022-04-04 21:21         ` Andrew Morton
2022-04-04 22:28           ` Gao Xiang
2022-04-06  0:41             ` Guo Xuenan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.