Fix winChkName() to match when the last slot contains nothing but the
terminating zero (it was treated as length missmatch). The mtools create such slots if the name len is the product of 13 (max number of unicode chars fitting in directory slot). MFC after: 1 week
This commit is contained in:
parent
6e79dd65c3
commit
e62d4b517b
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user