jffs2: Prevent rtime decompress memory corruption
authorKinsey Moore <kinsey.moore@oarcorp.com>
Tue, 23 Jul 2024 20:58:05 +0000 (15:58 -0500)
committerRichard Weinberger <richard@nod.at>
Thu, 14 Nov 2024 19:56:19 +0000 (20:56 +0100)
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>
fs/jffs2/compr_rtime.c

index 79e771a..2b9ef71 100644 (file)
@@ -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++];