]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
fs/ntfs3: handle hdr_first_de() return value
authorAndrey Vatoropin <a.vatoropin@crpt.ru>
Tue, 18 Mar 2025 13:42:18 +0000 (13:42 +0000)
committerKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
Mon, 28 Apr 2025 09:17:08 +0000 (12:17 +0300)
The hdr_first_de() function returns a pointer to a struct NTFS_DE. This
pointer may be NULL. To handle the NULL error effectively, it is important
to implement an error handler. This will help manage potential errors
consistently.

Additionally, error handling for the return value already exists at other
points where this function is called.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: 82cae269cfa9 ("fs/ntfs3: Add initialization of super block")
Signed-off-by: Andrey Vatoropin <a.vatoropin@crpt.ru>
Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3/index.c

index 78d20e4baa2c9a26acd3441888a2f5d554383448..1bf2a6593dec66cdef98b87490c4f597c716e547 100644 (file)
@@ -2182,6 +2182,10 @@ static int indx_get_entry_to_replace(struct ntfs_index *indx,
 
                e = hdr_first_de(&n->index->ihdr);
                fnd_push(fnd, n, e);
+               if (!e) {
+                       err = -EINVAL;
+                       goto out;
+               }
 
                if (!de_is_last(e)) {
                        /*
@@ -2203,6 +2207,10 @@ static int indx_get_entry_to_replace(struct ntfs_index *indx,
 
        n = fnd->nodes[level];
        te = hdr_first_de(&n->index->ihdr);
+       if (!te) {
+               err = -EINVAL;
+               goto out;
+       }
        /* Copy the candidate entry into the replacement entry buffer. */
        re = kmalloc(le16_to_cpu(te->size) + sizeof(u64), GFP_NOFS);
        if (!re) {