lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 8 May 2023 16:39:42 +0400
From:   Konstantin Komarov <almaz.alexandrovich@...agon-software.com>
To:     <ntfs3@...ts.linux.dev>
CC:     Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
        <linux-fsdevel@...r.kernel.org>
Subject: [PATCH 09/10] fs/ntfs3: Fix endian problem

Signed-off-by: Konstantin Komarov <almaz.alexandrovich@...agon-software.com>
---
  fs/ntfs3/frecord.c | 11 +++++------
  fs/ntfs3/ntfs_fs.h |  2 +-
  2 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/fs/ntfs3/frecord.c b/fs/ntfs3/frecord.c
index be59bd399fd1..16bd9faa2d28 100644
--- a/fs/ntfs3/frecord.c
+++ b/fs/ntfs3/frecord.c
@@ -236,6 +236,7 @@ struct ATTRIB *ni_find_attr(struct ntfs_inode *ni, 
struct ATTRIB *attr,
      return attr;

  out:
+    ntfs_inode_err(&ni->vfs_inode, "failed to parse mft record");
      ntfs_set_state(ni->mi.sbi, NTFS_DIRTY_ERROR);
      return NULL;
  }
@@ -1643,14 +1644,13 @@ int ni_delete_all(struct ntfs_inode *ni)
   * Return: File name attribute by its value.
   */
  struct ATTR_FILE_NAME *ni_fname_name(struct ntfs_inode *ni,
-                     const struct cpu_str *uni,
+                     const struct le_str *uni,
                       const struct MFT_REF *home_dir,
                       struct mft_inode **mi,
                       struct ATTR_LIST_ENTRY **le)
  {
      struct ATTRIB *attr = NULL;
      struct ATTR_FILE_NAME *fname;
-    struct le_str *fns;

      if (le)
          *le = NULL;
@@ -1674,10 +1674,9 @@ struct ATTR_FILE_NAME *ni_fname_name(struct 
ntfs_inode *ni,
      if (uni->len != fname->name_len)
          goto next;

-    fns = (struct le_str *)&fname->name_len;
-    if (ntfs_cmp_names_cpu(uni, fns, NULL, false))
+    if (ntfs_cmp_names(uni->name, uni->len, fname->name, uni->len, NULL,
+               false))
          goto next;
-
      return fname;
  }

@@ -2915,7 +2914,7 @@ int ni_remove_name(struct ntfs_inode *dir_ni, 
struct ntfs_inode *ni,
      /* Find name in record. */
      mi_get_ref(&dir_ni->mi, &de_name->home);

-    fname = ni_fname_name(ni, (struct cpu_str *)&de_name->name_len,
+    fname = ni_fname_name(ni, (struct le_str *)&de_name->name_len,
                    &de_name->home, &mi, &le);
      if (!fname)
          return -ENOENT;
diff --git a/fs/ntfs3/ntfs_fs.h b/fs/ntfs3/ntfs_fs.h
index 98b61e4b3215..00fa782fcada 100644
--- a/fs/ntfs3/ntfs_fs.h
+++ b/fs/ntfs3/ntfs_fs.h
@@ -543,7 +543,7 @@ void ni_remove_attr_le(struct ntfs_inode *ni, struct 
ATTRIB *attr,
                 struct mft_inode *mi, struct ATTR_LIST_ENTRY *le);
  int ni_delete_all(struct ntfs_inode *ni);
  struct ATTR_FILE_NAME *ni_fname_name(struct ntfs_inode *ni,
-                     const struct cpu_str *uni,
+                     const struct le_str *uni,
                       const struct MFT_REF *home,
                       struct mft_inode **mi,
                       struct ATTR_LIST_ENTRY **entry);
-- 
2.34.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ