From 5f2e9eb89332341fa633a1690f3337aeca9361de Mon Sep 17 00:00:00 2001 From: Aleksandar Andrejevic Date: Tue, 12 May 2015 03:47:10 +0000 Subject: [PATCH] [NTVDM] Fix the XMS driver (again): - Don't return handle information for unallocated handles. - Don't allow freeing unallocated handles. svn path=/trunk/; revision=67676 --- reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/himem.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/himem.c b/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/himem.c index 1f2e8a0a878..b699cff16c1 100644 --- a/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/himem.c +++ b/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/himem.c @@ -281,7 +281,7 @@ static CHAR XmsFree(WORD Handle) DWORD BlockNumber; PXMS_HANDLE HandleEntry = GetHandleRecord(Handle); - if (HandleEntry == NULL) return XMS_STATUS_INVALID_HANDLE; + if (HandleEntry == NULL || HandleEntry->Handle == 0) return XMS_STATUS_INVALID_HANDLE; if (HandleEntry->LockCount) return XMS_STATUS_LOCKED; BlockNumber = (HandleEntry->Address - XMS_ADDRESS) / XMS_BLOCK_SIZE; @@ -540,7 +540,7 @@ static VOID WINAPI XmsBopProcedure(LPWORD Stack) { PXMS_HANDLE Entry = GetHandleRecord(getDX()); - if (Entry) + if (Entry && Entry->Handle != 0) { INT i; UCHAR Handles = 0;