diff options
author | Kinsey Moore <kinsey.moore@oarcorp.com> | 2024-07-23 23:58:05 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2024-12-14 22:04:14 +0300 |
commit | dc39b08fcc3831b0bc46add91ba93cd2aab50716 (patch) | |
tree | 18010172a613d620e8567c33c95d8c8e203dd922 /fs/jffs2/compr_rtime.c | |
parent | 547b7f8fdebc77c0ff50c66d7fa2038d73a59ab6 (diff) | |
download | linux-dc39b08fcc3831b0bc46add91ba93cd2aab50716.tar.xz |
jffs2: Prevent rtime decompress memory corruption
commit fe051552f5078fa02d593847529a3884305a6ffe upstream.
The rtime decompression routine does not fully check bounds during the
entirety of the decompression pass and can corrupt memory outside the
decompression buffer if the compressed data is corrupted. This adds the
required check to prevent this failure mode.
Cc: stable@vger.kernel.org
Signed-off-by: Kinsey Moore <kinsey.moore@oarcorp.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'fs/jffs2/compr_rtime.c')
-rw-r--r-- | fs/jffs2/compr_rtime.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/jffs2/compr_rtime.c b/fs/jffs2/compr_rtime.c index 79e771ab624f..2b9ef713b844 100644 --- a/fs/jffs2/compr_rtime.c +++ b/fs/jffs2/compr_rtime.c @@ -95,6 +95,9 @@ static int jffs2_rtime_decompress(unsigned char *data_in, positions[value]=outpos; if (repeat) { + if ((outpos + repeat) >= destlen) { + return 1; + } if (backoffs + repeat >= outpos) { while(repeat) { cpage_out[outpos++] = cpage_out[backoffs++]; |