diff options
Diffstat (limited to 'ntapi.local.patch')
-rw-r--r-- | ntapi.local.patch | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/ntapi.local.patch b/ntapi.local.patch deleted file mode 100644 index d69de097..00000000 --- a/ntapi.local.patch +++ /dev/null @@ -1,67 +0,0 @@ -diff --git a/include/ntapi/nt_mount.h b/include/ntapi/nt_mount.h -index 8a7258a..cf2deac 100644 ---- a/include/ntapi/nt_mount.h -+++ b/include/ntapi/nt_mount.h -@@ -10,6 +10,10 @@ - #define __DEVICE_PATH_PREFIX_LEN (8 * sizeof(wchar16_t)) - #define __DEVICE_PATH_PREFIX_HASH (0xDA6FA40B) - -+/* {'\\','D','e','v','i','c','e','\\',M','u','p','\\'} */ -+#define __DEVICE_MUP_PATH_PREFIX_LEN (12 * sizeof(wchar16_t)) -+#define __DEVICE_MUP_PATH_PREFIX_HASH (0x0CEBB5F6) -+ - /* {'\\','?','?','\\','V','o','l','u','m','e','{'} */ - #define __VOLUME_PATH_PREFIX_LEN (11 * sizeof(wchar16_t)) - #define __VOLUME_PATH_PREFIX_HASH (0xFEBA8529) -diff --git a/src/fs/ntapi_tt_statfs.c b/src/fs/ntapi_tt_statfs.c -index 114cc8e..8bc43e2 100644 ---- a/src/fs/ntapi_tt_statfs.c -+++ b/src/fs/ntapi_tt_statfs.c -@@ -23,7 +23,7 @@ int32_t __stdcall __ntapi_tt_statfs( - nt_oa oa; - nt_iosb iosb; - nt_unicode_string * sdev; -- uint32_t hash; -+ uint32_t hash,hash_mup; - wchar16_t * wch; - wchar16_t * wch_mark; - uint32_t offset; -@@ -156,6 +156,14 @@ int32_t __stdcall __ntapi_tt_statfs( - if (hash != __DEVICE_PATH_PREFIX_HASH) - return NT_STATUS_INVALID_HANDLE; - -+ hash_mup = __ntapi->tt_buffer_crc32( -+ 0, -+ sdev->buffer, -+ __DEVICE_MUP_PATH_PREFIX_LEN); -+ -+ if (hash_mup == __DEVICE_MUP_PATH_PREFIX_HASH) -+ sdev->buffer[__DEVICE_MUP_PATH_PREFIX_LEN - 1] = 0; -+ - wch_mark = sdev->buffer + __DEVICE_PATH_PREFIX_LEN/sizeof(wchar16_t); - wch = wch_mark; - while (*wch != '\\') wch++; -@@ -190,6 +198,9 @@ int32_t __stdcall __ntapi_tt_statfs( - statfs->nt_control_flags = 0; - statfs->nt_padding = 0; - -+ if (hash_mup == __DEVICE_MUP_PATH_PREFIX_HASH) -+ return NT_STATUS_SUCCESS; -+ - if (!(flags & NT_STATFS_VOLUME_GUID)) { - statfs->nt_drive_letter = 0; - pguid = (uint64_t *)&(statfs->nt_volume_guid); -diff --git a/src/fs/ntapi_tt_open_physical_parent_directory.c b/src/fs/ntapi_tt_open_physical_parent_directory.c -index 68d282b..742607d 100644 ---- a/src/fs/ntapi_tt_open_physical_parent_directory.c -+++ b/src/fs/ntapi_tt_open_physical_parent_directory.c -@@ -37,6 +37,9 @@ int32_t __stdcall __ntapi_tt_open_physical_parent_directory( - return NT_STATUS_BAD_FILE_TYPE; - - wch = path->buffer + (path->strlen / sizeof(uint16_t)); -+ if ((&wch[-1] >= path->buffer) && (wch[-1] == '\\') && -+ (&wch[-2] >= path->buffer)) -+ wch = &wch[-1]; - while ((--wch >= path->buffer) && (*wch != '\\')); - - if (wch == path->buffer ) |