mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-23 00:43:00 -05:00
dll: relative symbolic link resolution testing
This commit is contained in:
parent
ccec269dd6
commit
ea2cc54677
@ -967,10 +967,6 @@ static NTSTATUS GetReparsePointByName(
|
|||||||
if (0 == (FileNode->FileInfo.FileAttributes & FILE_ATTRIBUTE_REPARSE_POINT))
|
if (0 == (FileNode->FileInfo.FileAttributes & FILE_ATTRIBUTE_REPARSE_POINT))
|
||||||
return STATUS_NOT_A_REPARSE_POINT;
|
return STATUS_NOT_A_REPARSE_POINT;
|
||||||
|
|
||||||
if (IsDirectory &&
|
|
||||||
0 == (FileNode->FileInfo.FileAttributes & FILE_ATTRIBUTE_DIRECTORY))
|
|
||||||
return STATUS_NOT_A_DIRECTORY;
|
|
||||||
|
|
||||||
if (0 != Buffer)
|
if (0 != Buffer)
|
||||||
{
|
{
|
||||||
if (FileNode->ReparseDataSize > *PSize)
|
if (FileNode->ReparseDataSize > *PSize)
|
||||||
|
@ -426,7 +426,7 @@ static BOOL my_namecheck_fn(ULONG Flags, PWSTR Prefix, void *memfs, PWSTR FileNa
|
|||||||
SYMBOLIC_LINK_FLAG_DIRECTORY))
|
SYMBOLIC_LINK_FLAG_DIRECTORY))
|
||||||
#define my_symlink(LinkName, FileName) ASSERT(my_symlink_fn(Flags, Prefix, memfs, LinkName, FileName, 0))
|
#define my_symlink(LinkName, FileName) ASSERT(my_symlink_fn(Flags, Prefix, memfs, LinkName, FileName, 0))
|
||||||
#define my_namecheck(FileName, Expected)ASSERT(my_namecheck_fn(Flags, Prefix, memfs, FileName, Expected))
|
#define my_namecheck(FileName, Expected)ASSERT(my_namecheck_fn(Flags, Prefix, memfs, FileName, Expected))
|
||||||
#define my_notexist(FileName) ASSERT(!my_namecheck_fn(Flags, Prefix, memfs, FileName, L""))
|
#define my_failcheck(FileName) ASSERT(!my_namecheck_fn(Flags, Prefix, memfs, FileName, L""))
|
||||||
|
|
||||||
static void reparse_symlink_relative_dotest(ULONG Flags, PWSTR Prefix, ULONG FileInfoTimeout)
|
static void reparse_symlink_relative_dotest(ULONG Flags, PWSTR Prefix, ULONG FileInfoTimeout)
|
||||||
{
|
{
|
||||||
@ -442,29 +442,34 @@ static void reparse_symlink_relative_dotest(ULONG Flags, PWSTR Prefix, ULONG Fil
|
|||||||
|
|
||||||
my_symlink(L"\\l0", L"NON-EXISTANT");
|
my_symlink(L"\\l0", L"NON-EXISTANT");
|
||||||
my_symlink(L"\\loop", L"loop");
|
my_symlink(L"\\loop", L"loop");
|
||||||
|
my_symlink(L"\\lf", L"\\1");
|
||||||
|
my_symlinkd(L"\\ld", L"\\1\\1.1\\1.1.1");
|
||||||
my_symlink(L"\\1\\1.1\\l1.1.1", L"1.1.1");
|
my_symlink(L"\\1\\1.1\\l1.1.1", L"1.1.1");
|
||||||
my_symlinkd(L"\\2\\l1", L"..\\1");
|
my_symlinkd(L"\\2\\l1", L"..\\1\\.");
|
||||||
my_symlinkd(L"\\1\\l2", L"..\\.\\2");
|
my_symlinkd(L"\\1\\l2", L"..\\.\\2");
|
||||||
my_symlinkd(L"\\2\\a1", L"\\1");
|
my_symlinkd(L"\\2\\a1", L"\\1");
|
||||||
my_symlinkd(L"\\1\\a2", L"\\2");
|
my_symlinkd(L"\\1\\a2", L"\\2");
|
||||||
|
|
||||||
my_notexist(L"\\l0");
|
my_failcheck(L"\\l0");
|
||||||
ASSERT(ERROR_FILE_NOT_FOUND == GetLastError());
|
ASSERT(ERROR_FILE_NOT_FOUND == GetLastError());
|
||||||
my_notexist(L"\\loop");
|
my_failcheck(L"\\loop");
|
||||||
ASSERT(ERROR_CANT_RESOLVE_FILENAME == GetLastError());
|
ASSERT(ERROR_CANT_RESOLVE_FILENAME == GetLastError());
|
||||||
|
|
||||||
my_namecheck(L"\\1\\1.1\\l1.1.1", L"\\1\\1.1\\1.1.1");
|
/* NTFS open with FILE_FLAG_BACKUP_SEMANTICS does not care about SYMLINK/SYMLINKD difference! */
|
||||||
|
my_namecheck(L"\\lf", L"\\1");
|
||||||
|
my_namecheck(L"\\ld", L"\\1\\1.1\\1.1.1");
|
||||||
|
|
||||||
|
my_namecheck(L"\\1\\1.1\\l1.1.1", L"\\1\\1.1\\1.1.1");
|
||||||
my_namecheck(L"\\2\\l1\\1.1\\l1.1.1", L"\\1\\1.1\\1.1.1");
|
my_namecheck(L"\\2\\l1\\1.1\\l1.1.1", L"\\1\\1.1\\1.1.1");
|
||||||
my_namecheck(L"\\1\\l2\\l1\\1.1\\l1.1.1", L"\\1\\1.1\\1.1.1");
|
my_namecheck(L"\\1\\l2\\l1\\1.1\\l1.1.1", L"\\1\\1.1\\1.1.1");
|
||||||
|
|
||||||
my_namecheck(L"\\2\\a1\\1.1\\l1.1.1", L"\\1\\1.1\\1.1.1");
|
my_namecheck(L"\\2\\a1\\1.1\\l1.1.1", L"\\1\\1.1\\1.1.1");
|
||||||
my_namecheck(L"\\2\\l1\\1.1\\l1.1.1", L"\\1\\1.1\\1.1.1");
|
my_namecheck(L"\\2\\l1\\1.1\\l1.1.1", L"\\1\\1.1\\1.1.1");
|
||||||
|
|
||||||
my_namecheck(L"\\1\\a2\\l1\\1.1\\l1.1.1", L"\\1\\1.1\\1.1.1");
|
my_namecheck(L"\\1\\a2\\l1\\1.1\\l1.1.1", L"\\1\\1.1\\1.1.1");
|
||||||
my_namecheck(L"\\1\\a2\\a1\\1.1\\l1.1.1", L"\\1\\1.1\\1.1.1");
|
my_namecheck(L"\\1\\a2\\a1\\1.1\\l1.1.1", L"\\1\\1.1\\1.1.1");
|
||||||
my_namecheck(L"\\1\\a2\\a1\\l2\\l1\\1.1\\l1.1.1", L"\\1\\1.1\\1.1.1");
|
my_namecheck(L"\\1\\a2\\a1\\l2\\l1\\1.1\\l1.1.1", L"\\1\\1.1\\1.1.1");
|
||||||
|
|
||||||
|
my_rmdir(L"\\ld");
|
||||||
|
my_unlink(L"\\lf");
|
||||||
my_rmdir(L"\\1\\a2");
|
my_rmdir(L"\\1\\a2");
|
||||||
my_rmdir(L"\\2\\a1");
|
my_rmdir(L"\\2\\a1");
|
||||||
my_rmdir(L"\\1\\l2");
|
my_rmdir(L"\\1\\l2");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user