diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index e6dc03ffa..f2b5cdbf1 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -3115,6 +3115,11 @@ restart: /* One of the inner path components is invalid, or the path contains invalid characters. Bail out with ENOENT. + STATUS_IO_REPARSE_TAG_NOT_HANDLED is returned when trying to + traversing a WSL symlink. For all practical purposes it's + equivalent to traversing SYSTEM- or LNK-type symlink returning + STATUS_OBJECT_PATH_NOT_FOUND. + Note that additional STATUS_OBJECT_PATH_INVALID and STATUS_OBJECT_PATH_SYNTAX_BAD status codes exist. The first one is seemingly not generated by NtQueryInformationFile, the latter @@ -3123,6 +3128,7 @@ restart: error in get_nt_native_path. Both status codes are deliberately not tested here unless proved necessary. */ if (status == STATUS_OBJECT_PATH_NOT_FOUND + || status == STATUS_IO_REPARSE_TAG_NOT_HANDLED || status == STATUS_OBJECT_NAME_INVALID || status == STATUS_BAD_NETWORK_PATH || status == STATUS_BAD_NETWORK_NAME