]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
fs/ntfs3: Check if more than chunk-size bytes are written
authorAndrew Ballance <andrewjballance@gmail.com>
Wed, 15 May 2024 12:38:33 +0000 (07:38 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 8 Nov 2024 15:25:53 +0000 (16:25 +0100)
[ Upstream commit 9931122d04c6d431b2c11b5bb7b10f28584067f0 ]

A incorrectly formatted chunk may decompress into
more than LZNT_CHUNK_SIZE bytes and a index out of bounds
will occur in s_max_off.

Signed-off-by: Andrew Ballance <andrewjballance@gmail.com>
Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/ntfs3/lznt.c

index 28f654561f279a5d09ddd4a1352930b0fefb5416..09db01c1098cdcc1eaed9639750cbfdfd6d41208 100644 (file)
@@ -236,6 +236,9 @@ static inline ssize_t decompress_chunk(u8 *unc, u8 *unc_end, const u8 *cmpr,
 
        /* Do decompression until pointers are inside range. */
        while (up < unc_end && cmpr < cmpr_end) {
+               // return err if more than LZNT_CHUNK_SIZE bytes are written
+               if (up - unc > LZNT_CHUNK_SIZE)
+                       return -EINVAL;
                /* Correct index */
                while (unc + s_max_off[index] < up)
                        index += 1;