re: fs/ntfs3: Add option "nocase"

From: Colin King (gmail)
Date: Tue Oct 04 2022 - 17:22:42 EST


Hi,

Static analysis with clang scan build has detected an issue in the following commit:

commit a3a956c78efaa202b1d75190136671cf6e87bfbe
Author: Konstantin Komarov <almaz.alexandrovich@xxxxxxxxxxxxxxxxxxxx>
Date: Fri Sep 23 12:42:18 2022 +0300

fs/ntfs3: Add option "nocase"


The issue is as follows in fs/ntfs3/index.c in function ntfs_d_compare:

/* First try fast implementation. */
for (;;) {
if (!lm--) {
ret = len1 == len2 ? 0 : 1;
goto out;
}

if ((c1 = *n1++) == (c2 = *n2++))
continue;

if (c1 >= 0x80 || c2 >= 0x80)
break;

if (toupper(c1) != toupper(c2)) {
ret = 1;
goto out;
}
}

...
...

out:
__putname(uni1);
return ret;
}

The exits in the for-loop via label out are ending up with __putname() being called on an uninitialized uni1 pointer.

Colin