[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:
Hermès Bélusca-Maïto
2025-10-19 20:42:21 +02:00
parent ad10c08b3d
commit eec9ca1305

View File

@@ -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;
}