fs: KASAN error in nls uniname cmp [1/1]
authorchangqing.gao <changqing.gao@amlogic.com>
Mon, 1 Apr 2019 05:57:55 +0000 (13:57 +0800)
committerTao Zeng <tao.zeng@amlogic.com>
Wed, 3 Apr 2019 02:06:42 +0000 (19:06 -0700)
PD#SWPL-6404

Problem:
KASAN error:global-out-of-bounds in nls_uniname_cmp

Solution:
Append "\0\0" to the string of UNI_CUR_DIR_NAME and UNI_PAR_DIR_NAME

Verify:
x301

Change-Id: Ic94e837ed7874d337207c31eedfc966b46ab8ecd
Signed-off-by: changqing.gao <changqing.gao@amlogic.com>
fs/exfat/exfat_nls.c
fs/exfat/exfat_nls.h

index be7fbf9..2f2f491 100644 (file)
@@ -106,7 +106,7 @@ s32 nls_uniname_cmp(struct super_block *sb, u16 *a, u16 *b)
        for (i = 0; i < MAX_NAME_LENGTH; i++, a++, b++) {
                if (nls_upper(sb, *a) != nls_upper(sb, *b))
                        return 1;
-               if (*a == 0x0)
+               if ((*a == 0x0) || (*b == 0x0))
                        return 0;
        }
        return 0;
index cdc1755..ef88abc 100644 (file)
 #define DOS_PAR_DIR_NAME        "..         "
 
 #ifdef __LITTLE_ENDIAN
-#define UNI_CUR_DIR_NAME        ".\0"
-#define UNI_PAR_DIR_NAME        ".\0.\0"
+#define UNI_CUR_DIR_NAME        ".\0\0\0"
+#define UNI_PAR_DIR_NAME        ".\0.\0\0\0"
 #else
-#define UNI_CUR_DIR_NAME        "\0."
-#define UNI_PAR_DIR_NAME        "\0.\0."
+#define UNI_CUR_DIR_NAME        "\0.\0\0"
+#define UNI_PAR_DIR_NAME        "\0.\0.\0\0"
 #endif
 
 /*----------------------------------------------------------------------*/