[BTRFS][UBTRFS][SHELLBTRFS] Upgrade to 1.7.7 (#4417)

v1.7.7 (2021-04-12):

- Fixed deadlock on high load
- Fixed free space issue when installing Genshin Impact
- Fixed issue when copying files with wildcards in command prompt
- Increased speed of directory lookups
This commit is contained in:
Vincent Franchomme 2022-04-28 21:35:05 +02:00 committed by Hermès BÉLUSCA - MAÏTO
parent c982533ea9
commit 98654b54b4
9 changed files with 37 additions and 33 deletions

View file

@ -326,7 +326,7 @@ static NTSTATUS query_dir_item(fcb* fcb, ccb* ccb, void* buf, LONG* len, PIRP Ir
TRACE("FileBothDirectoryInformation\n");
needed = sizeof(FILE_BOTH_DIR_INFORMATION) - sizeof(WCHAR) + de->name.Length;
needed = offsetof(FILE_BOTH_DIR_INFORMATION, FileName) + de->name.Length;
if (needed > *len) {
TRACE("buffer overflow - %li > %lu\n", needed, *len);
@ -366,7 +366,7 @@ static NTSTATUS query_dir_item(fcb* fcb, ccb* ccb, void* buf, LONG* len, PIRP Ir
TRACE("FileDirectoryInformation\n");
needed = sizeof(FILE_DIRECTORY_INFORMATION) - sizeof(WCHAR) + de->name.Length;
needed = offsetof(FILE_DIRECTORY_INFORMATION, FileName) + de->name.Length;
if (needed > *len) {
TRACE("buffer overflow - %li > %lu\n", needed, *len);
@ -404,7 +404,7 @@ static NTSTATUS query_dir_item(fcb* fcb, ccb* ccb, void* buf, LONG* len, PIRP Ir
TRACE("FileFullDirectoryInformation\n");
needed = sizeof(FILE_FULL_DIR_INFORMATION) - sizeof(WCHAR) + de->name.Length;
needed = offsetof(FILE_FULL_DIR_INFORMATION, FileName) + de->name.Length;
if (needed > *len) {
TRACE("buffer overflow - %li > %lu\n", needed, *len);
@ -443,7 +443,7 @@ static NTSTATUS query_dir_item(fcb* fcb, ccb* ccb, void* buf, LONG* len, PIRP Ir
TRACE("FileIdBothDirectoryInformation\n");
needed = sizeof(FILE_ID_BOTH_DIR_INFORMATION) - sizeof(WCHAR) + de->name.Length;
needed = offsetof(FILE_ID_BOTH_DIR_INFORMATION, FileName) + de->name.Length;
if (needed > *len) {
TRACE("buffer overflow - %li > %lu\n", needed, *len);
@ -484,7 +484,7 @@ static NTSTATUS query_dir_item(fcb* fcb, ccb* ccb, void* buf, LONG* len, PIRP Ir
TRACE("FileIdFullDirectoryInformation\n");
needed = sizeof(FILE_ID_FULL_DIR_INFORMATION) - sizeof(WCHAR) + de->name.Length;
needed = offsetof(FILE_ID_FULL_DIR_INFORMATION, FileName) + de->name.Length;
if (needed > *len) {
TRACE("buffer overflow - %li > %lu\n", needed, *len);
@ -529,7 +529,7 @@ static NTSTATUS query_dir_item(fcb* fcb, ccb* ccb, void* buf, LONG* len, PIRP Ir
TRACE("FileIdExtdDirectoryInformation\n");
needed = offsetof(FILE_ID_EXTD_DIR_INFORMATION, FileName[0]) + de->name.Length;
needed = offsetof(FILE_ID_EXTD_DIR_INFORMATION, FileName) + de->name.Length;
if (needed > *len) {
TRACE("buffer overflow - %li > %lu\n", needed, *len);
@ -572,7 +572,7 @@ static NTSTATUS query_dir_item(fcb* fcb, ccb* ccb, void* buf, LONG* len, PIRP Ir
TRACE("FileIdExtdBothDirectoryInformation\n");
needed = offsetof(FILE_ID_EXTD_BOTH_DIR_INFORMATION, FileName[0]) + de->name.Length;
needed = offsetof(FILE_ID_EXTD_BOTH_DIR_INFORMATION, FileName) + de->name.Length;
if (needed > *len) {
TRACE("buffer overflow - %li > %lu\n", needed, *len);
@ -622,7 +622,7 @@ static NTSTATUS query_dir_item(fcb* fcb, ccb* ccb, void* buf, LONG* len, PIRP Ir
TRACE("FileNamesInformation\n");
needed = sizeof(FILE_NAMES_INFORMATION) - sizeof(WCHAR) + de->name.Length;
needed = offsetof(FILE_NAMES_INFORMATION, FileName) + de->name.Length;
if (needed > *len) {
TRACE("buffer overflow - %li > %lu\n", needed, *len);
@ -839,7 +839,8 @@ static NTSTATUS query_directory(PIRP Irp) {
if (FsRtlDoesNameContainWildCards(IrpSp->Parameters.QueryDirectory.FileName)) {
has_wildcard = true;
specific_file = false;
}
} else if (!initial)
return STATUS_NO_MORE_FILES;
}
if (ccb->query_string.Buffer)