From 9b4b5abe489f4d4c2d425976a52a389722e0f625 Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Fri, 9 Sep 2016 14:55:15 -0700 Subject: [PATCH] tst: winfsp-tests: reparse point testing --- tst/winfsp-tests/reparse-test.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tst/winfsp-tests/reparse-test.c b/tst/winfsp-tests/reparse-test.c index a6d06daf..68355716 100644 --- a/tst/winfsp-tests/reparse-test.c +++ b/tst/winfsp-tests/reparse-test.c @@ -58,11 +58,26 @@ void reparse_setget_dotest(ULONG Flags, PWSTR Prefix, ULONG FileInfoTimeout) ASSERT(Success); ASSERT(ReparseDataBuf.G.ReparseTag == 0x1234); - ASSERT(ReparseDataBuf.G.ReparseDataLength == strlen(datstr) + 1); + ASSERT(ReparseDataBuf.G.ReparseDataLength == strlen(datstr)); ASSERT(ReparseDataBuf.G.Reserved == 0); ASSERT(0 == memcmp(&ReparseDataBuf.G.ReparseGuid, &reparse_guid, sizeof reparse_guid)); ASSERT(0 == memcmp(ReparseDataBuf.G.GenericReparseBuffer.DataBuffer, datstr, strlen(datstr))); + CloseHandle(Handle); + + Handle = CreateFileW(FilePath, + FILE_WRITE_ATTRIBUTES, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, + 0, OPEN_EXISTING, 0, 0); + ASSERT(INVALID_HANDLE_VALUE == Handle); + ASSERT(ERROR_CANT_ACCESS_FILE == GetLastError()); + + Handle = CreateFileW(FilePath, + FILE_WRITE_ATTRIBUTES, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, + 0, OPEN_EXISTING, FILE_FLAG_OPEN_REPARSE_POINT, 0); + ASSERT(INVALID_HANDLE_VALUE != Handle); + + ReparseDataBuf.G.ReparseDataLength = 0; + Success = DeviceIoControl(Handle, FSCTL_DELETE_REPARSE_POINT, &ReparseDataBuf, REPARSE_GUID_DATA_BUFFER_HEADER_SIZE + ReparseDataBuf.G.ReparseDataLength, 0, 0,