fs/ntfs3: Make checks in run_unpack more clear
authorKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
Mon, 19 Aug 2024 13:21:31 +0000 (16:21 +0300)
committerKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
Tue, 3 Sep 2024 13:58:43 +0000 (16:58 +0300)
Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3/run.c

index cb8cf0161177b944bbafb5eb96297f607620343c..58e988cd80490dff9b9930a0783d6e1b06fb99f0 100644 (file)
@@ -959,7 +959,7 @@ int run_unpack(struct runs_tree *run, struct ntfs_sb_info *sbi, CLST ino,
                 * Large positive number requires to store 5 bytes
                 * e.g.: 05 FF 7E FF FF 00 00 00
                 */
-               if (size_size > 8)
+               if (size_size > sizeof(len))
                        return -EINVAL;
 
                len = run_unpack_s64(run_buf, size_size, 0);
@@ -971,7 +971,7 @@ int run_unpack(struct runs_tree *run, struct ntfs_sb_info *sbi, CLST ino,
 
                if (!offset_size)
                        lcn = SPARSE_LCN64;
-               else if (offset_size <= 8) {
+               else if (offset_size <= sizeof(s64)) {
                        s64 dlcn;
 
                        /* Initial value of dlcn is -1 or 0. */
@@ -984,8 +984,10 @@ int run_unpack(struct runs_tree *run, struct ntfs_sb_info *sbi, CLST ino,
                                return -EINVAL;
                        lcn = prev_lcn + dlcn;
                        prev_lcn = lcn;
-               } else
+               } else {
+                       /* The size of 'dlcn' can't be > 8. */
                        return -EINVAL;
+               }
 
                next_vcn = vcn64 + len;
                /* Check boundary. */