fs/ntfs3: Fix endian problem

Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
This commit is contained in:
Konstantin Komarov 2023-05-08 13:41:24 +04:00
parent 33e70701ed
commit d5ca773358
No known key found for this signature in database
GPG Key ID: A9B0331F832407B6
2 changed files with 6 additions and 7 deletions

View File

@ -236,6 +236,7 @@ struct ATTRIB *ni_find_attr(struct ntfs_inode *ni, struct ATTRIB *attr,
return attr; return attr;
out: out:
ntfs_inode_err(&ni->vfs_inode, "failed to parse mft record");
ntfs_set_state(ni->mi.sbi, NTFS_DIRTY_ERROR); ntfs_set_state(ni->mi.sbi, NTFS_DIRTY_ERROR);
return NULL; return NULL;
} }
@ -1643,14 +1644,13 @@ int ni_delete_all(struct ntfs_inode *ni)
* Return: File name attribute by its value. * Return: File name attribute by its value.
*/ */
struct ATTR_FILE_NAME *ni_fname_name(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_dir, const struct MFT_REF *home_dir,
struct mft_inode **mi, struct mft_inode **mi,
struct ATTR_LIST_ENTRY **le) struct ATTR_LIST_ENTRY **le)
{ {
struct ATTRIB *attr = NULL; struct ATTRIB *attr = NULL;
struct ATTR_FILE_NAME *fname; struct ATTR_FILE_NAME *fname;
struct le_str *fns;
if (le) if (le)
*le = NULL; *le = NULL;
@ -1674,10 +1674,9 @@ next:
if (uni->len != fname->name_len) if (uni->len != fname->name_len)
goto next; goto next;
fns = (struct le_str *)&fname->name_len; if (ntfs_cmp_names(uni->name, uni->len, fname->name, uni->len, NULL,
if (ntfs_cmp_names_cpu(uni, fns, NULL, false)) false))
goto next; goto next;
return fname; return fname;
} }
@ -2915,7 +2914,7 @@ int ni_remove_name(struct ntfs_inode *dir_ni, struct ntfs_inode *ni,
/* Find name in record. */ /* Find name in record. */
mi_get_ref(&dir_ni->mi, &de_name->home); 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); &de_name->home, &mi, &le);
if (!fname) if (!fname)
return -ENOENT; return -ENOENT;

View File

@ -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); struct mft_inode *mi, struct ATTR_LIST_ENTRY *le);
int ni_delete_all(struct ntfs_inode *ni); int ni_delete_all(struct ntfs_inode *ni);
struct ATTR_FILE_NAME *ni_fname_name(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, const struct MFT_REF *home,
struct mft_inode **mi, struct mft_inode **mi,
struct ATTR_LIST_ENTRY **entry); struct ATTR_LIST_ENTRY **entry);