mirror of
https://github.com/reactos/reactos.git
synced 2026-06-08 00:46:10 +08:00
[FREELDR] fs.c: Fix path device name lookup
Suppose the list of devices contains, for example listed in this order: `multi(0)disk(0)rdisk(0)partition(1)`, followed by: `multi(0)disk(0)rdisk(0)`, then if someone attempts to open `multi(0)disk(0)rdisk(0)`, the code would erroneously open `multi(0)disk(0)rdisk(0)partition(1)` instead. Device name lookup now verifies that the device name being tested has the same length as the one being opened. Noticed by user "Xen", see: https://reactos.org/forum/viewtopic.php?p=144840#p144840 > Wrong name comparison in ArcOpen (can open "device()partition()" > instead of "device()" that was really requested)
This commit is contained in:
@@ -257,7 +257,7 @@ ARC_STATUS ArcOpen(CHAR* Path, OPENMODE OpenMode, ULONG* FileId)
|
||||
pEntry = pEntry->Flink)
|
||||
{
|
||||
pDevice = CONTAINING_RECORD(pEntry, DEVICE, ListEntry);
|
||||
if (strncmp(pDevice->DeviceName, DeviceName, Length) == 0)
|
||||
if ((strlen(pDevice->DeviceName) == Length) && (strncmp(pDevice->DeviceName, DeviceName, Length) == 0))
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user