mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-26 19:33:31 +00:00
[MOUNTMGR] Few fixes and improvements (#7896)
- `MountMgrVolumeMountPointChanged()`: Set status code in all failure paths and correct the check for remote or removable media. - `DeleteRemoteDatabaseEntry()`: Do not allow the database with size of zero. - `QueryVolumeName()`: Use reparse point file reference when no file name is supplied.
This commit is contained in:
@@ -255,8 +255,8 @@ DeleteRemoteDatabaseEntry(IN HANDLE Database,
|
||||
return STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
/* Validate parameters: ensure we won't get negative size */
|
||||
if (Entry->EntrySize + StartingOffset > DatabaseSize)
|
||||
/* Validate parameters: ensure we won't get zero or negative size */
|
||||
if (Entry->EntrySize + StartingOffset >= DatabaseSize)
|
||||
{
|
||||
/* If we get invalid parameters, truncate the whole database
|
||||
* starting the wrong entry. We can't rely on the rest
|
||||
@@ -1303,12 +1303,14 @@ QueryVolumeName(IN HANDLE RootDirectory,
|
||||
PFILE_NAME_INFORMATION FileNameInfo;
|
||||
PREPARSE_DATA_BUFFER ReparseDataBuffer;
|
||||
|
||||
UNREFERENCED_PARAMETER(ReparsePointInformation);
|
||||
|
||||
if (!FileName)
|
||||
{
|
||||
UNICODE_STRING Reference;
|
||||
|
||||
Reference.Length = Reference.MaximumLength = sizeof(ReparsePointInformation->FileReference);
|
||||
Reference.Buffer = (PWSTR)&(ReparsePointInformation->FileReference);
|
||||
InitializeObjectAttributes(&ObjectAttributes,
|
||||
NULL,
|
||||
&Reference,
|
||||
OBJ_KERNEL_HANDLE,
|
||||
RootDirectory,
|
||||
NULL);
|
||||
|
||||
@@ -2062,13 +2062,17 @@ MountMgrVolumeMountPointChanged(IN PDEVICE_EXTENSION DeviceExtension,
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
/* Mount points can be stored only on storage disks */
|
||||
if (FsDeviceInfo.DeviceType != FILE_DEVICE_DISK && FsDeviceInfo.DeviceType != FILE_DEVICE_VIRTUAL_DISK)
|
||||
{
|
||||
Status = STATUS_INVALID_PARAMETER;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
if (FsDeviceInfo.Characteristics != (FILE_REMOTE_DEVICE | FILE_REMOVABLE_MEDIA))
|
||||
/* And they can be on local fixed disks only */
|
||||
if (FsDeviceInfo.Characteristics & (FILE_REMOTE_DEVICE | FILE_REMOVABLE_MEDIA))
|
||||
{
|
||||
Status = STATUS_INVALID_PARAMETER;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user