mirror of
https://github.com/SoftEtherVPN/SoftEtherVPN.git
synced 2025-11-19 09:51:35 +03:00
v4.19-9599-beta
This commit is contained in:
@ -562,25 +562,36 @@ NTSTATUS NeoNdisDispatch(DEVICE_OBJECT *DeviceObject, IRP *Irp)
|
||||
if (stack->Parameters.Read.Length == NEO_EXCHANGE_BUFFER_SIZE)
|
||||
{
|
||||
// Address check
|
||||
MDL *mdl = IoAllocateMdl(buf, NEO_EXCHANGE_BUFFER_SIZE, false, false, NULL);
|
||||
|
||||
if (mdl != NULL)
|
||||
bool check_ok = true;
|
||||
__try
|
||||
{
|
||||
MmProbeAndLockPages(mdl, KernelMode, IoWriteAccess);
|
||||
ProbeForWrite(buf, NEO_EXCHANGE_BUFFER_SIZE, 1);
|
||||
}
|
||||
__except (EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
check_ok = false;
|
||||
}
|
||||
|
||||
if (NeoIsKernelAddress(buf) == FALSE)
|
||||
if (check_ok)
|
||||
{
|
||||
// Address check
|
||||
MDL *mdl = IoAllocateMdl(buf, NEO_EXCHANGE_BUFFER_SIZE, false, false, NULL);
|
||||
|
||||
if (mdl != NULL)
|
||||
{
|
||||
MmProbeAndLockPages(mdl, KernelMode, IoWriteAccess);
|
||||
}
|
||||
|
||||
// Read
|
||||
NeoRead(buf);
|
||||
Irp->IoStatus.Information = NEO_EXCHANGE_BUFFER_SIZE;
|
||||
ok = true;
|
||||
}
|
||||
|
||||
if (mdl != NULL)
|
||||
{
|
||||
MmUnlockPages(mdl);
|
||||
IoFreeMdl(mdl);
|
||||
if (mdl != NULL)
|
||||
{
|
||||
MmUnlockPages(mdl);
|
||||
IoFreeMdl(mdl);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -603,25 +614,38 @@ NTSTATUS NeoNdisDispatch(DEVICE_OBJECT *DeviceObject, IRP *Irp)
|
||||
if (stack->Parameters.Write.Length == NEO_EXCHANGE_BUFFER_SIZE)
|
||||
{
|
||||
// Address check
|
||||
MDL *mdl = IoAllocateMdl(buf, NEO_EXCHANGE_BUFFER_SIZE, false, false, NULL);
|
||||
|
||||
if (mdl != NULL)
|
||||
bool check_ok = true;
|
||||
__try
|
||||
{
|
||||
MmProbeAndLockPages(mdl, KernelMode, IoReadAccess);
|
||||
ProbeForRead(buf, NEO_EXCHANGE_BUFFER_SIZE, 1);
|
||||
}
|
||||
__except (EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
check_ok = false;
|
||||
}
|
||||
|
||||
if (NeoIsKernelAddress(buf) == FALSE)
|
||||
if (check_ok)
|
||||
{
|
||||
// Address check
|
||||
MDL *mdl = IoAllocateMdl(buf, NEO_EXCHANGE_BUFFER_SIZE, false, false, NULL);
|
||||
|
||||
if (mdl != NULL)
|
||||
{
|
||||
MmProbeAndLockPages(mdl, KernelMode, IoReadAccess);
|
||||
}
|
||||
|
||||
ProbeForRead(buf, NEO_EXCHANGE_BUFFER_SIZE, 1);
|
||||
|
||||
// Write
|
||||
NeoWrite(buf);
|
||||
Irp->IoStatus.Information = stack->Parameters.Write.Length;
|
||||
ok = true;
|
||||
}
|
||||
|
||||
if (mdl != NULL)
|
||||
{
|
||||
MmUnlockPages(mdl);
|
||||
IoFreeMdl(mdl);
|
||||
if (mdl != NULL)
|
||||
{
|
||||
MmUnlockPages(mdl);
|
||||
IoFreeMdl(mdl);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1644,20 +1668,6 @@ PACKET_BUFFER *NeoNewPacketBuffer()
|
||||
return p;
|
||||
}
|
||||
|
||||
// Check whether the specified address is kernel memory
|
||||
BOOL NeoIsKernelAddress(void *addr)
|
||||
{
|
||||
#if 0
|
||||
if ((ULONG)addr >= (ULONG)0x80000000)
|
||||
{
|
||||
// Kernel memory
|
||||
return TRUE;
|
||||
}
|
||||
#endif // CPU_64
|
||||
// User memory
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// Reset the event
|
||||
void NeoReset(NEO_EVENT *event)
|
||||
{
|
||||
|
||||
@ -337,7 +337,6 @@ NEO_EVENT *NeoCreateWin9xEvent(DWORD h);
|
||||
void NeoFreeEvent(NEO_EVENT *event);
|
||||
void NeoSet(NEO_EVENT *event);
|
||||
void NeoReset(NEO_EVENT *event);
|
||||
BOOL NeoIsKernelAddress(void *addr);
|
||||
|
||||
#endif // NEO_DEVICE_DRIVER
|
||||
|
||||
|
||||
@ -79,7 +79,7 @@
|
||||
IgnoreImportLibrary="true"
|
||||
LinkLibraryDependencies="false"
|
||||
AdditionalOptions="/driver /subsystem:native,5.00 /FULLBUILD /align:0x80 /osversion:5.00 /STACK:0x40000,0x1000 /MERGE:_PAGE=PAGE /MERGE:_TEXT=.text /NODEFAULTLIB /stub:C:\WINDDK\7600.16385.0\lib\win7\stub512.com /ALIGN:4096"
|
||||
AdditionalDependencies="wdm.lib ndis.lib ntoskrnl.lib fwpkclnt.lib "$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res""
|
||||
AdditionalDependencies="bufferoverflowK.lib wdm.lib ndis.lib ntoskrnl.lib fwpkclnt.lib "$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res""
|
||||
OutputFile="$(OutDir)\Neo6_x86_unsigned.sys"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="C:\WINDDK\7600.16385.0\lib\win7\i386"
|
||||
@ -121,7 +121,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)Neo6_x86.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:0
$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)Neo6_x86_win10.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:2"
|
||||
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)Neo6_x86.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:0
$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)Neo6_x86_win10.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:2
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
@ -227,7 +227,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)Neo6_x64.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:0
$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)Neo6_x64_win10.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:2"
|
||||
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)Neo6_x64.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:0
$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)Neo6_x64_win10.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:2
"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
|
||||
Reference in New Issue
Block a user