win: work around sharepoint scandir bug
It has been reported that for SharePoint connections mapped as a drive, uv_fs_scandir() returns "." and ".." entries when the expectation is that they should be filtered out. After some investigation it looks like the driver returns ".\0" and "..\0" for those entries, that is, it includes the zero byte in the filename length. Rewrite the filter to catch those entries as well. Fixes: https://github.com/nodejs/node/issues/4002 PR-URL: https://github.com/libuv/libuv/pull/636 Reviewed-By: Alexis Campailla <orangemocha@nodejs.org> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
This commit is contained in:
parent
70d5014266
commit
d03abfd400
10
src/win/fs.c
10
src/win/fs.c
@ -901,7 +901,15 @@ void fs__scandir(uv_fs_t* req) {
|
||||
/* Compute the length of the filename in WCHARs. */
|
||||
wchar_len = info->FileNameLength / sizeof info->FileName[0];
|
||||
|
||||
/* Skip over '.' and '..' entries. */
|
||||
/* Skip over '.' and '..' entries. It has been reported that
|
||||
* the SharePoint driver includes the terminating zero byte in
|
||||
* the filename length. Strip those first.
|
||||
*/
|
||||
while (wchar_len > 0 && info->FileName[wchar_len - 1] == L'\0')
|
||||
wchar_len -= 1;
|
||||
|
||||
if (wchar_len == 0)
|
||||
continue;
|
||||
if (wchar_len == 1 && info->FileName[0] == L'.')
|
||||
continue;
|
||||
if (wchar_len == 2 && info->FileName[0] == L'.' &&
|
||||
|
||||
Loading…
Reference in New Issue
Block a user