Thank you for your reply.

-static void exfat_get_uniname_from_ext_entry(struct super_block *sb,
-               struct exfat_chain *p_dir, int entry, unsigned short *uniname)
+static int exfat_get_uniname_from_name_entries(struct exfat_entry_set_cache 
*es,
+               struct exfat_uni_name *uniname)
  {
-       int i;
-       struct exfat_entry_set_cache *es;
+       int n, l, i;
        struct exfat_dentry *ep;

-       es = exfat_get_dentry_set(sb, p_dir, entry, ES_ALL_ENTRIES);
-       if (!es)
-               return;
+       uniname->name_len = es->de_stream->name_len;
+       if (uniname->name_len == 0)
+               return -EIO;
Can we validate ->name_len and name entry ->type in exfat_get_dentry_set() ?

Yes.
As I wrote in a previous email, entry type validation, name-length validation, 
and name
extraction should not be separated, so implement all of these in 
exfat_get_dentry_set().
It can be easily implemented by adding uniname to exfat_entry_set_cache and 
calling
exfat_get_uniname_from_name_entries() from exfat_get_dentry_set().

However, that would be over-implementation.
Not all callers of exfat_get_dentry_set() need a name.
It is enough to validate the name when it is needed.
This is a file-system driver, not fsck.
Validation is possible in exfat_get_dentry_set(), but unnecessary.

Why do you want to validate the name in exfat_get_dentry_set()?


BR
---
Tetsuhiro Kohada <kohada...@gmail.com>

Reply via email to