diff options
| author | Semen Ustimenko <semenu@FreeBSD.org> | 2002-10-29 01:03:44 +0000 |
|---|---|---|
| committer | Semen Ustimenko <semenu@FreeBSD.org> | 2002-10-29 01:03:44 +0000 |
| commit | e62d4b517b5b4e9b3100bba5eb80514c8e9cd7ae (patch) | |
| tree | 8f7d393eb5387ef5855a7b5e8fd9840997ca5c31 /sys | |
| parent | 6e79dd65c34570dbdc2d856ef6df2743a8db1d9d (diff) | |
Notes
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/fs/msdosfs/msdosfs_conv.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/fs/msdosfs/msdosfs_conv.c b/sys/fs/msdosfs/msdosfs_conv.c index 32138c51b6f5..7b3591e57666 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; |
