summaryrefslogtreecommitdiffstats
path: root/sys/fs/msdosfs/msdosfs_conv.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/fs/msdosfs/msdosfs_conv.c')
-rw-r--r--sys/fs/msdosfs/msdosfs_conv.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/fs/msdosfs/msdosfs_conv.c b/sys/fs/msdosfs/msdosfs_conv.c
index 32138c5..7b3591e 100644
--- a/sys/fs/msdosfs/msdosfs_conv.c
+++ b/sys/fs/msdosfs/msdosfs_conv.c
@@ -780,7 +780,14 @@ winChkName(un, unlen, wep, chksum, u2w_loaded, u2w, ul_loaded, ul)
*/
i = ((wep->weCnt&WIN_CNT) - 1) * WIN_CHARS;
un += i;
- if ((unlen -= i) <= 0)
+ unlen -= i;
+
+ /*
+ * unlen being zero must not be treated as length missmatch. It is
+ * possible if the entry is WIN_LAST and contains nothing but the
+ * terminating 0.
+ */
+ if (unlen < 0)
return -1;
if ((wep->weCnt&WIN_LAST) && unlen > WIN_CHARS)
return -1;
OpenPOWER on IntegriCloud