1
0
mirror of https://github.com/SoftEtherVPN/SoftEtherVPN.git synced 2024-11-23 01:49:53 +03:00

Merge remote-tracking branch 'SoftEtherVPN/master' into rpmspec_update

* SoftEtherVPN/master:
  v4.19-9599-beta
This commit is contained in:
Jeff Tang 2016-01-05 10:52:25 -05:00
commit b72392117b
1085 changed files with 2275 additions and 1979 deletions

View File

@ -138,7 +138,7 @@
#define CEDAR_VER 419 #define CEDAR_VER 419
// Build Number // Build Number
#define CEDAR_BUILD 9582 #define CEDAR_BUILD 9599
// Beta number // Beta number
//#define BETA_NUMBER 3 //#define BETA_NUMBER 3
@ -159,10 +159,10 @@
// Specifies the build date // Specifies the build date
#define BUILD_DATE_Y 2015 #define BUILD_DATE_Y 2015
#define BUILD_DATE_M 10 #define BUILD_DATE_M 10
#define BUILD_DATE_D 6 #define BUILD_DATE_D 19
#define BUILD_DATE_HO 14 #define BUILD_DATE_HO 20
#define BUILD_DATE_MI 56 #define BUILD_DATE_MI 9
#define BUILD_DATE_SE 30 #define BUILD_DATE_SE 5
// Tolerable time difference // Tolerable time difference
#define ALLOW_TIMESTAMP_DIFF (UINT64)(3 * 24 * 60 * 60 * 1000) #define ALLOW_TIMESTAMP_DIFF (UINT64)(3 * 24 * 60 * 60 * 1000)

View File

@ -2392,10 +2392,12 @@ UINT PtTrafficServer(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
LIST *o; LIST *o;
UINT ret = ERR_NO_ERROR; UINT ret = ERR_NO_ERROR;
UINT port; UINT port;
bool nohup;
TTS *tts; TTS *tts;
PARAM args[] = PARAM args[] =
{ {
{"[port]", NULL, NULL, NULL, NULL}, {"[port]", NULL, NULL, NULL, NULL},
{"NOHUP", NULL, NULL, NULL, NULL},
}; };
// Get the parameter list // Get the parameter list
@ -2411,8 +2413,18 @@ UINT PtTrafficServer(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
port = TRAFFIC_DEFAULT_PORT; port = TRAFFIC_DEFAULT_PORT;
} }
nohup = GetParamYes(o, "nohup");
tts = NewTts(port, c, PtTrafficPrintProc); tts = NewTts(port, c, PtTrafficPrintProc);
if (nohup)
{
while (true)
{
SleepThread(10000);
}
}
c->Write(c, _UU("TTS_ENTER_TO_EXIT")); c->Write(c, _UU("TTS_ENTER_TO_EXIT"));
Free(c->ReadLine(c, L"", true)); Free(c->ReadLine(c, L"", true));
@ -14974,6 +14986,7 @@ UINT PsAccessAddEx(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
{"DELAY", CmdPrompt, _UU("CMD_AccessAddEx_Prompt_DELAY"), CmdEvalMinMax, &minmax_delay}, {"DELAY", CmdPrompt, _UU("CMD_AccessAddEx_Prompt_DELAY"), CmdEvalMinMax, &minmax_delay},
{"JITTER", CmdPrompt, _UU("CMD_AccessAddEx_Prompt_JITTER"), CmdEvalMinMax, &minmax_jitter}, {"JITTER", CmdPrompt, _UU("CMD_AccessAddEx_Prompt_JITTER"), CmdEvalMinMax, &minmax_jitter},
{"LOSS", CmdPrompt, _UU("CMD_AccessAddEx_Prompt_LOSS"), CmdEvalMinMax, &minmax_loss}, {"LOSS", CmdPrompt, _UU("CMD_AccessAddEx_Prompt_LOSS"), CmdEvalMinMax, &minmax_loss},
{"REDIRECTURL", NULL, NULL, NULL, NULL},
}; };
// If virtual HUB is not selected, it's an error // If virtual HUB is not selected, it's an error
@ -15017,6 +15030,7 @@ UINT PsAccessAddEx(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
a->Delay = GetParamInt(o, "DELAY"); a->Delay = GetParamInt(o, "DELAY");
a->Jitter = GetParamInt(o, "JITTER"); a->Jitter = GetParamInt(o, "JITTER");
a->Loss = GetParamInt(o, "LOSS"); a->Loss = GetParamInt(o, "LOSS");
StrCpy(a->RedirectUrl, sizeof(a->RedirectUrl), GetParamStr(o, "REDIRECTURL"));
// RPC call // RPC call
ret = ScAddAccess(ps->Rpc, &t); ret = ScAddAccess(ps->Rpc, &t);
@ -15178,6 +15192,7 @@ UINT PsAccessAddEx6(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
{"DELAY", CmdPrompt, _UU("CMD_AccessAddEx6_Prompt_DELAY"), CmdEvalMinMax, &minmax_delay}, {"DELAY", CmdPrompt, _UU("CMD_AccessAddEx6_Prompt_DELAY"), CmdEvalMinMax, &minmax_delay},
{"JITTER", CmdPrompt, _UU("CMD_AccessAddEx6_Prompt_JITTER"), CmdEvalMinMax, &minmax_jitter}, {"JITTER", CmdPrompt, _UU("CMD_AccessAddEx6_Prompt_JITTER"), CmdEvalMinMax, &minmax_jitter},
{"LOSS", CmdPrompt, _UU("CMD_AccessAddEx6_Prompt_LOSS"), CmdEvalMinMax, &minmax_loss}, {"LOSS", CmdPrompt, _UU("CMD_AccessAddEx6_Prompt_LOSS"), CmdEvalMinMax, &minmax_loss},
{"REDIRECTURL", NULL, NULL, NULL, NULL},
}; };
// If virtual HUB is not selected, it's an error // If virtual HUB is not selected, it's an error
@ -15233,6 +15248,7 @@ UINT PsAccessAddEx6(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
a->Delay = GetParamInt(o, "DELAY"); a->Delay = GetParamInt(o, "DELAY");
a->Jitter = GetParamInt(o, "JITTER"); a->Jitter = GetParamInt(o, "JITTER");
a->Loss = GetParamInt(o, "LOSS"); a->Loss = GetParamInt(o, "LOSS");
StrCpy(a->RedirectUrl, sizeof(a->RedirectUrl), GetParamStr(o, "REDIRECTURL"));
// RPC call // RPC call
ret = ScAddAccess(ps->Rpc, &t); ret = ScAddAccess(ps->Rpc, &t);

View File

@ -126,15 +126,57 @@
#include <Mayaqua/Mayaqua.h> #include <Mayaqua/Mayaqua.h>
#include <Cedar/Cedar.h> #include <Cedar/Cedar.h>
// Load the drivers hive
bool SuLoadDriversHive()
{
wchar_t config_dir[MAX_PATH];
wchar_t filename[MAX_PATH];
if (MsIsWindows10() == false)
{
return false;
}
MsEnablePrivilege(SE_RESTORE_NAME, true);
MsEnablePrivilege(SE_BACKUP_NAME, true);
CombinePathW(config_dir, sizeof(config_dir), MsGetSystem32DirW(), L"config");
CombinePathW(filename, sizeof(filename), config_dir, L"DRIVERS");
return MsRegLoadHive(REG_LOCAL_MACHINE, L"DRIVERS", filename);
}
// Unload the drivers hive
bool SuUnloadDriversHive()
{
// todo: always failed.
if (MsIsWindows10() == false)
{
return false;
}
return MsRegUnloadHive(REG_LOCAL_MACHINE, L"DRIVERS");
}
// Delete garbage inf files // Delete garbage inf files
void SuDeleteGarbageInfs() void SuDeleteGarbageInfs()
{ {
void *wow; void *wow;
bool load_hive = false;
Debug("SuDeleteGarbageInfs()\n");
wow = MsDisableWow64FileSystemRedirection(); wow = MsDisableWow64FileSystemRedirection();
load_hive = SuLoadDriversHive();
Debug("SuLoadDriversHive: %u\n", load_hive);
SuDeleteGarbageInfsInner(); SuDeleteGarbageInfsInner();
/*
if (load_hive)
{
Debug("SuUnloadDriversHive: %u\n", SuUnloadDriversHive());
}*/
MsRestoreWow64FileSystemRedirection(wow); MsRestoreWow64FileSystemRedirection(wow);
} }
void SuDeleteGarbageInfsInner() void SuDeleteGarbageInfsInner()
@ -343,7 +385,7 @@ bool SuInstallDriverInner(bool force)
Debug("InstallNdisProtocolDriver Ok.\n"); Debug("InstallNdisProtocolDriver Ok.\n");
// Copy manually because there are cases where .sys file is not copied successfully for some reason // Copy manually because there are cases where .sys file is not copied successfully for some reason
FileCopyW(src_sys, sys_fullpath); Debug("SuCopySysFile from %S to %s: ret = %u\n", src_sys, sys_fullpath, SuCopySysFile(src_sys, sys_fullpath));
ret = true; ret = true;
@ -372,6 +414,64 @@ bool SuInstallDriverInner(bool force)
return ret; return ret;
} }
// Copy a sys file
bool SuCopySysFile(wchar_t *src, wchar_t *dst)
{
wchar_t dst_rename[MAX_PATH];
UINT i;
if (src == NULL || dst == NULL)
{
return false;
}
if (FileCopyW(src, dst))
{
for (i = 1;i <= 100;i++)
{
UniFormat(dst_rename, sizeof(dst_rename), L"%s.old%u", dst, i);
FileDeleteW(dst_rename);
}
return true;
}
for (i = 1;;i++)
{
UniFormat(dst_rename, sizeof(dst_rename), L"%s.old%u", dst, i);
if (IsFileExistsW(dst_rename) == false)
{
break;
}
if (i >= 100)
{
return false;
}
}
if (MoveFileW(dst, dst_rename) == false)
{
return false;
}
if (FileCopyW(src, dst))
{
for (i = 1;i <= 100;i++)
{
UniFormat(dst_rename, sizeof(dst_rename), L"%s.old%u", dst, i);
FileDeleteW(dst_rename);
}
return true;
}
MoveFileW(dst_rename, dst);
return false;
}
// Get whether the current OS is supported by SeLow // Get whether the current OS is supported by SeLow
bool SuIsSupportedOs(bool on_install) bool SuIsSupportedOs(bool on_install)
{ {

View File

@ -173,9 +173,12 @@ int SuCmpAdaterList(void *p1, void *p2);
bool SuInstallDriver(bool force); bool SuInstallDriver(bool force);
bool SuInstallDriverInner(bool force); bool SuInstallDriverInner(bool force);
bool SuIsSupportedOs(bool on_install); bool SuIsSupportedOs(bool on_install);
bool SuCopySysFile(wchar_t *src, wchar_t *dst);
void SuDeleteGarbageInfs(); void SuDeleteGarbageInfs();
void SuDeleteGarbageInfsInner(); void SuDeleteGarbageInfsInner();
bool SuLoadDriversHive();
bool SuUnloadDriversHive();
#endif // SELOWUSER_H #endif // SELOWUSER_H

View File

@ -1,4 +1,4 @@
BUILD_NUMBER 9582 BUILD_NUMBER 9599
VERSION 419 VERSION 419
BUILD_NAME beta BUILD_NAME beta
BUILD_DATE 20151006_145630 BUILD_DATE 20151019_200905

View File

@ -12609,6 +12609,14 @@ NT_API *MsLoadNtApiFunctions()
(BOOL (__stdcall *)(HANDLE,DWORD,LPWSTR,PDWORD)) (BOOL (__stdcall *)(HANDLE,DWORD,LPWSTR,PDWORD))
GetProcAddress(nt->hKernel32, "QueryFullProcessImageNameW"); GetProcAddress(nt->hKernel32, "QueryFullProcessImageNameW");
nt->RegLoadKeyW =
(LSTATUS (__stdcall *)(HKEY,LPCWSTR,LPCWSTR))
GetProcAddress(nt->hAdvapi32, "RegLoadKeyW");
nt->RegUnLoadKeyW =
(LSTATUS (__stdcall *)(HKEY,LPCWSTR))
GetProcAddress(nt->hAdvapi32, "RegUnLoadKeyW");
if (info.dwMajorVersion >= 5) if (info.dwMajorVersion >= 5)
{ {
nt->UpdateDriverForPlugAndPlayDevicesW = nt->UpdateDriverForPlugAndPlayDevicesW =
@ -12957,6 +12965,59 @@ DWORD MsRegAccessMaskFor64BitEx(bool force32bit, bool force64bit)
return 0; return 0;
} }
// Load the hive
bool MsRegLoadHive(UINT root, wchar_t *keyname, wchar_t *filename)
{
LONG ret;
if (keyname == NULL || filename == NULL)
{
WHERE;
return false;
}
if (ms->nt == NULL || ms->nt->RegLoadKeyW == NULL || ms->nt->RegUnLoadKeyW == NULL)
{
WHERE;
return false;
}
ret = ms->nt->RegLoadKeyW(MsGetRootKeyFromInt(root), keyname, filename);
if (ret != ERROR_SUCCESS)
{
Debug("RegLoadKeyW: %S %S %u\n", keyname, filename, GetLastError());
return false;
}
WHERE;
return true;
}
// Unload the hive
bool MsRegUnloadHive(UINT root, wchar_t *keyname)
{
LONG ret;
if (keyname == NULL)
{
return false;
}
if (ms->nt == NULL || ms->nt->RegLoadKeyW == NULL || ms->nt->RegUnLoadKeyW == NULL)
{
return false;
}
ret = ms->nt->RegUnLoadKeyW(MsGetRootKeyFromInt(root), keyname);
if (ret != ERROR_SUCCESS)
{
Debug("RegUnLoadKeyW: %u\n", GetLastError());
return false;
}
return true;
}
// Delete the value // Delete the value
bool MsRegDeleteValue(UINT root, char *keyname, char *valuename) bool MsRegDeleteValue(UINT root, char *keyname, char *valuename)
{ {

View File

@ -495,6 +495,8 @@ typedef struct NT_API
BOOL (WINAPI *AddAccessAllowedAceEx)(PACL, DWORD, DWORD, DWORD, PSID); BOOL (WINAPI *AddAccessAllowedAceEx)(PACL, DWORD, DWORD, DWORD, PSID);
HRESULT (WINAPI *DwmIsCompositionEnabled)(BOOL *); HRESULT (WINAPI *DwmIsCompositionEnabled)(BOOL *);
BOOL (WINAPI *GetComputerNameExW)(COMPUTER_NAME_FORMAT, LPWSTR, LPDWORD); BOOL (WINAPI *GetComputerNameExW)(COMPUTER_NAME_FORMAT, LPWSTR, LPDWORD);
LONG (WINAPI *RegLoadKeyW)(HKEY, LPCWSTR, LPCWSTR);
LONG (WINAPI *RegUnLoadKeyW)(HKEY, LPCWSTR);
} NT_API; } NT_API;
typedef struct MS_EVENTLOG typedef struct MS_EVENTLOG
@ -725,6 +727,9 @@ bool MsRegDeleteValue(UINT root, char *keyname, char *valuename);
bool MsRegDeleteValueEx(UINT root, char *keyname, char *valuename, bool force32bit); bool MsRegDeleteValueEx(UINT root, char *keyname, char *valuename, bool force32bit);
bool MsRegDeleteValueEx2(UINT root, char *keyname, char *valuename, bool force32bit, bool force64bit); bool MsRegDeleteValueEx2(UINT root, char *keyname, char *valuename, bool force32bit, bool force64bit);
bool MsRegLoadHive(UINT root, wchar_t *keyname, wchar_t *filename);
bool MsRegUnloadHive(UINT root, wchar_t *keyname);
bool MsIsNt(); bool MsIsNt();
bool MsIsAdmin(); bool MsIsAdmin();
bool MsEnablePrivilege(char *name, bool enable); bool MsEnablePrivilege(char *name, bool enable);

View File

@ -442,25 +442,36 @@ NTSTATUS NeoNdisDispatch(DEVICE_OBJECT *DeviceObject, IRP *Irp)
if (stack->Parameters.Read.Length == NEO_EXCHANGE_BUFFER_SIZE) if (stack->Parameters.Read.Length == NEO_EXCHANGE_BUFFER_SIZE)
{ {
// Address check // Address check
MDL *mdl = IoAllocateMdl(buf, NEO_EXCHANGE_BUFFER_SIZE, false, false, NULL); bool check_ok = true;
__try
if (mdl != NULL)
{ {
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)
{ {
MDL *mdl = IoAllocateMdl(buf, NEO_EXCHANGE_BUFFER_SIZE, false, false, NULL);
if (mdl != NULL)
{
MmProbeAndLockPages(mdl, KernelMode, IoWriteAccess);
}
// Read // Read
NeoRead(buf); NeoRead(buf);
Irp->IoStatus.Information = NEO_EXCHANGE_BUFFER_SIZE; Irp->IoStatus.Information = NEO_EXCHANGE_BUFFER_SIZE;
ok = true; ok = true;
}
if (mdl != NULL) if (mdl != NULL)
{ {
MmUnlockPages(mdl); MmUnlockPages(mdl);
IoFreeMdl(mdl); IoFreeMdl(mdl);
}
} }
} }
} }
@ -485,25 +496,37 @@ NTSTATUS NeoNdisDispatch(DEVICE_OBJECT *DeviceObject, IRP *Irp)
if (stack->Parameters.Write.Length == NEO_EXCHANGE_BUFFER_SIZE) if (stack->Parameters.Write.Length == NEO_EXCHANGE_BUFFER_SIZE)
{ {
// Address check // Address check
MDL *mdl = IoAllocateMdl(buf, NEO_EXCHANGE_BUFFER_SIZE, false, false, NULL); bool check_ok = true;
__try
if (mdl != NULL)
{ {
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)
{ {
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 // Write
NeoWrite(buf); NeoWrite(buf);
Irp->IoStatus.Information = stack->Parameters.Write.Length; Irp->IoStatus.Information = stack->Parameters.Write.Length;
ok = true; ok = true;
}
if (mdl != NULL) if (mdl != NULL)
{ {
MmUnlockPages(mdl); MmUnlockPages(mdl);
IoFreeMdl(mdl); IoFreeMdl(mdl);
}
} }
} }
} }
@ -1387,20 +1410,6 @@ PACKET_BUFFER *NeoNewPacketBuffer()
return p; 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 // Reset the event
void NeoReset(NEO_EVENT *event) void NeoReset(NEO_EVENT *event)
{ {

View File

@ -328,7 +328,6 @@ NEO_EVENT *NeoCreateWin9xEvent(DWORD h);
void NeoFreeEvent(NEO_EVENT *event); void NeoFreeEvent(NEO_EVENT *event);
void NeoSet(NEO_EVENT *event); void NeoSet(NEO_EVENT *event);
void NeoReset(NEO_EVENT *event); void NeoReset(NEO_EVENT *event);
BOOL NeoIsKernelAddress(void *addr);
#endif // NEO_DEVICE_DRIVER #endif // NEO_DEVICE_DRIVER

View File

@ -562,25 +562,36 @@ NTSTATUS NeoNdisDispatch(DEVICE_OBJECT *DeviceObject, IRP *Irp)
if (stack->Parameters.Read.Length == NEO_EXCHANGE_BUFFER_SIZE) if (stack->Parameters.Read.Length == NEO_EXCHANGE_BUFFER_SIZE)
{ {
// Address check // Address check
MDL *mdl = IoAllocateMdl(buf, NEO_EXCHANGE_BUFFER_SIZE, false, false, NULL); bool check_ok = true;
__try
if (mdl != NULL)
{ {
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 // Read
NeoRead(buf); NeoRead(buf);
Irp->IoStatus.Information = NEO_EXCHANGE_BUFFER_SIZE; Irp->IoStatus.Information = NEO_EXCHANGE_BUFFER_SIZE;
ok = true; ok = true;
}
if (mdl != NULL) if (mdl != NULL)
{ {
MmUnlockPages(mdl); MmUnlockPages(mdl);
IoFreeMdl(mdl); IoFreeMdl(mdl);
}
} }
} }
} }
@ -603,25 +614,38 @@ NTSTATUS NeoNdisDispatch(DEVICE_OBJECT *DeviceObject, IRP *Irp)
if (stack->Parameters.Write.Length == NEO_EXCHANGE_BUFFER_SIZE) if (stack->Parameters.Write.Length == NEO_EXCHANGE_BUFFER_SIZE)
{ {
// Address check // Address check
MDL *mdl = IoAllocateMdl(buf, NEO_EXCHANGE_BUFFER_SIZE, false, false, NULL); bool check_ok = true;
__try
if (mdl != NULL)
{ {
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 // Write
NeoWrite(buf); NeoWrite(buf);
Irp->IoStatus.Information = stack->Parameters.Write.Length; Irp->IoStatus.Information = stack->Parameters.Write.Length;
ok = true; ok = true;
}
if (mdl != NULL) if (mdl != NULL)
{ {
MmUnlockPages(mdl); MmUnlockPages(mdl);
IoFreeMdl(mdl); IoFreeMdl(mdl);
}
} }
} }
} }
@ -1644,20 +1668,6 @@ PACKET_BUFFER *NeoNewPacketBuffer()
return p; 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 // Reset the event
void NeoReset(NEO_EVENT *event) void NeoReset(NEO_EVENT *event)
{ {

View File

@ -337,7 +337,6 @@ NEO_EVENT *NeoCreateWin9xEvent(DWORD h);
void NeoFreeEvent(NEO_EVENT *event); void NeoFreeEvent(NEO_EVENT *event);
void NeoSet(NEO_EVENT *event); void NeoSet(NEO_EVENT *event);
void NeoReset(NEO_EVENT *event); void NeoReset(NEO_EVENT *event);
BOOL NeoIsKernelAddress(void *addr);
#endif // NEO_DEVICE_DRIVER #endif // NEO_DEVICE_DRIVER

View File

@ -79,7 +79,7 @@
IgnoreImportLibrary="true" IgnoreImportLibrary="true"
LinkLibraryDependencies="false" 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" 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 &quot;$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res&quot;" AdditionalDependencies="bufferoverflowK.lib wdm.lib ndis.lib ntoskrnl.lib fwpkclnt.lib &quot;$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res&quot;"
OutputFile="$(OutDir)\Neo6_x86_unsigned.sys" OutputFile="$(OutDir)\Neo6_x86_unsigned.sys"
LinkIncremental="1" LinkIncremental="1"
AdditionalLibraryDirectories="C:\WINDDK\7600.16385.0\lib\win7\i386" AdditionalLibraryDirectories="C:\WINDDK\7600.16385.0\lib\win7\i386"
@ -121,7 +121,7 @@
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode &quot;$(TargetPath)&quot; /DEST:&quot;$(TargetDir)Neo6_x86.sys&quot; /COMMENT:&quot;VPN Software&quot; /KERNEL:yes /CERTID:0 /SHAMODE:0&#x0D;&#x0A;$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode &quot;$(TargetPath)&quot; /DEST:&quot;$(TargetDir)Neo6_x86_win10.sys&quot; /COMMENT:&quot;VPN Software&quot; /KERNEL:yes /CERTID:0 /SHAMODE:2" CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode &quot;$(TargetPath)&quot; /DEST:&quot;$(TargetDir)Neo6_x86.sys&quot; /COMMENT:&quot;VPN Software&quot; /KERNEL:yes /CERTID:0 /SHAMODE:0&#x0D;&#x0A;$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode &quot;$(TargetPath)&quot; /DEST:&quot;$(TargetDir)Neo6_x86_win10.sys&quot; /COMMENT:&quot;VPN Software&quot; /KERNEL:yes /CERTID:0 /SHAMODE:2&#x0D;&#x0A;"
/> />
</Configuration> </Configuration>
<Configuration <Configuration
@ -227,7 +227,7 @@
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode &quot;$(TargetPath)&quot; /DEST:&quot;$(TargetDir)Neo6_x64.sys&quot; /COMMENT:&quot;VPN Software&quot; /KERNEL:yes /CERTID:0 /SHAMODE:0&#x0D;&#x0A;$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode &quot;$(TargetPath)&quot; /DEST:&quot;$(TargetDir)Neo6_x64_win10.sys&quot; /COMMENT:&quot;VPN Software&quot; /KERNEL:yes /CERTID:0 /SHAMODE:2" CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode &quot;$(TargetPath)&quot; /DEST:&quot;$(TargetDir)Neo6_x64.sys&quot; /COMMENT:&quot;VPN Software&quot; /KERNEL:yes /CERTID:0 /SHAMODE:0&#x0D;&#x0A;$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode &quot;$(TargetPath)&quot; /DEST:&quot;$(TargetDir)Neo6_x64_win10.sys&quot; /COMMENT:&quot;VPN Software&quot; /KERNEL:yes /CERTID:0 /SHAMODE:2&#x0D;&#x0A;"
/> />
</Configuration> </Configuration>
</Configurations> </Configurations>

View File

@ -620,47 +620,61 @@ NTSTATUS SlDeviceReadProc(DEVICE_OBJECT *device_object, IRP *irp)
if (dst != NULL) if (dst != NULL)
{ {
MDL *mdl; // Address check
bool check_ok = true;
mdl = IoAllocateMdl(dst, irp_stack->Parameters.Read.Length, false, false, NULL); __try
if (mdl != NULL)
{ {
MmProbeAndLockPages(mdl, KernelMode, IoWriteAccess); ProbeForWrite(irp->UserBuffer, sizeof(SL_ADAPTER_INFO_LIST), 1);
}
__except (EXCEPTION_EXECUTE_HANDLER)
{
check_ok = false;
} }
SlZero(dst, sizeof(SL_ADAPTER_INFO_LIST)); if (check_ok)
dst->Signature = SL_SIGNATURE;
dst->SeLowVersion = SL_VER;
dst->EnumCompleted = sl->IsEnumCompleted ? 8 : 1;
SlLockList(sl->AdapterList);
{ {
UINT i; MDL *mdl;
dst->NumAdapters = MIN(SL_LIST_NUM(sl->AdapterList), SL_MAX_ADAPTER_INFO_LIST_ENTRY); mdl = IoAllocateMdl(dst, irp_stack->Parameters.Read.Length, false, false, NULL);
if (mdl != NULL)
for (i = 0;i < dst->NumAdapters;i++)
{ {
SL_ADAPTER *a = SL_LIST_DATA(sl->AdapterList, i); MmProbeAndLockPages(mdl, KernelMode, IoWriteAccess);
SL_ADAPTER_INFO *d = &dst->Adapters[i];
d->MtuSize = a->MtuSize;
SlCopy(d->MacAddress, a->MacAddress, 6);
SlCopy(d->AdapterId, a->AdapterId, sizeof(a->AdapterId));
strcpy(d->FriendlyName, a->FriendlyName);
d->SupportsVLanHw = a->SupportVLan;
} }
}
SlUnlockList(sl->AdapterList);
ret_size = sizeof(SL_ADAPTER_INFO); SlZero(dst, sizeof(SL_ADAPTER_INFO_LIST));
ret = STATUS_SUCCESS;
if (mdl != NULL) dst->Signature = SL_SIGNATURE;
{ dst->SeLowVersion = SL_VER;
MmUnlockPages(mdl); dst->EnumCompleted = sl->IsEnumCompleted ? 8 : 1;
IoFreeMdl(mdl);
SlLockList(sl->AdapterList);
{
UINT i;
dst->NumAdapters = MIN(SL_LIST_NUM(sl->AdapterList), SL_MAX_ADAPTER_INFO_LIST_ENTRY);
for (i = 0;i < dst->NumAdapters;i++)
{
SL_ADAPTER *a = SL_LIST_DATA(sl->AdapterList, i);
SL_ADAPTER_INFO *d = &dst->Adapters[i];
d->MtuSize = a->MtuSize;
SlCopy(d->MacAddress, a->MacAddress, 6);
SlCopy(d->AdapterId, a->AdapterId, sizeof(a->AdapterId));
strcpy(d->FriendlyName, a->FriendlyName);
d->SupportsVLanHw = a->SupportVLan;
}
}
SlUnlockList(sl->AdapterList);
ret_size = sizeof(SL_ADAPTER_INFO);
ret = STATUS_SUCCESS;
if (mdl != NULL)
{
MmUnlockPages(mdl);
IoFreeMdl(mdl);
}
} }
} }
} }
@ -680,75 +694,89 @@ NTSTATUS SlDeviceReadProc(DEVICE_OBJECT *device_object, IRP *irp)
} }
else else
{ {
UINT num = 0; // Address check
bool left = true; bool check_ok = true;
MDL *mdl; __try
mdl = IoAllocateMdl(buf, SL_EXCHANGE_BUFFER_SIZE, false, false, NULL);
if (mdl != NULL)
{ {
MmProbeAndLockPages(mdl, KernelMode, IoWriteAccess); ProbeForWrite(irp->UserBuffer, SL_EXCHANGE_BUFFER_SIZE, 1);
}
__except (EXCEPTION_EXECUTE_HANDLER)
{
check_ok = false;
} }
// Lock the receive queue if (check_ok)
SlLock(f->RecvLock);
{ {
while (true) UINT num = 0;
bool left = true;
MDL *mdl;
mdl = IoAllocateMdl(buf, SL_EXCHANGE_BUFFER_SIZE, false, false, NULL);
if (mdl != NULL)
{ {
SL_PACKET *q; MmProbeAndLockPages(mdl, KernelMode, IoWriteAccess);
if (num >= SL_MAX_PACKET_EXCHANGE) }
// Lock the receive queue
SlLock(f->RecvLock);
{
while (true)
{ {
if (f->RecvPacketHead == NULL) SL_PACKET *q;
if (num >= SL_MAX_PACKET_EXCHANGE)
{
if (f->RecvPacketHead == NULL)
{
left = false;
}
break;
}
q = f->RecvPacketHead;
if (q != NULL)
{
f->RecvPacketHead = f->RecvPacketHead->Next;
q->Next = NULL;
f->NumRecvPackets--;
if (f->RecvPacketHead == NULL)
{
f->RecvPacketTail = NULL;
}
}
else
{ {
left = false; left = false;
break;
} }
break; SL_SIZE_OF_PACKET(buf, num) = q->Size;
SlCopy(SL_ADDR_OF_PACKET(buf, num), q->Data, q->Size);
num++;
SlFree(q);
} }
q = f->RecvPacketHead;
if (q != NULL)
{
f->RecvPacketHead = f->RecvPacketHead->Next;
q->Next = NULL;
f->NumRecvPackets--;
if (f->RecvPacketHead == NULL)
{
f->RecvPacketTail = NULL;
}
}
else
{
left = false;
break;
}
SL_SIZE_OF_PACKET(buf, num) = q->Size;
SlCopy(SL_ADDR_OF_PACKET(buf, num), q->Data, q->Size);
num++;
SlFree(q);
} }
} SlUnlock(f->RecvLock);
SlUnlock(f->RecvLock);
if (mdl != NULL) if (mdl != NULL)
{ {
MmUnlockPages(mdl); MmUnlockPages(mdl);
IoFreeMdl(mdl); IoFreeMdl(mdl);
} }
SL_NUM_PACKET(buf) = num; SL_NUM_PACKET(buf) = num;
SL_LEFT_FLAG(buf) = left; SL_LEFT_FLAG(buf) = left;
if (left == false) if (left == false)
{ {
SlReset(f->Event); SlReset(f->Event);
} }
else else
{ {
SlSet(f->Event); SlSet(f->Event);
} }
ret = STATUS_SUCCESS; ret = STATUS_SUCCESS;
ret_size = SL_EXCHANGE_BUFFER_SIZE; ret_size = SL_EXCHANGE_BUFFER_SIZE;
}
} }
} }
} }
@ -783,72 +811,234 @@ NTSTATUS SlDeviceWriteProc(DEVICE_OBJECT *device_object, IRP *irp)
} }
else else
{ {
// Write the packet // Address check
MDL *mdl; bool check_ok = true;
UINT num = SL_NUM_PACKET(buf); __try
mdl = IoAllocateMdl(buf, SL_EXCHANGE_BUFFER_SIZE, false, false, NULL);
if (mdl != NULL)
{ {
MmProbeAndLockPages(mdl, KernelMode, IoReadAccess); ProbeForRead(irp->UserBuffer, SL_EXCHANGE_BUFFER_SIZE, 1);
}
__except (EXCEPTION_EXECUTE_HANDLER)
{
check_ok = false;
} }
ret = true; if (check_ok)
ret_size = SL_EXCHANGE_BUFFER_SIZE;
if (num >= 1 && num <= SL_MAX_PACKET_EXCHANGE)
{ {
UINT i, j; // Write the packet
NET_BUFFER_LIST *nbl_head = NULL; MDL *mdl;
NET_BUFFER_LIST *nbl_tail = NULL; UINT num = SL_NUM_PACKET(buf);
UINT num_packets = 0;
NDIS_HANDLE adapter_handle = NULL;
SlLock(f->Adapter->Lock);
if (f->Adapter->NumPendingSendPackets <= SL_MAX_PACKET_QUEUED) mdl = IoAllocateMdl(buf, SL_EXCHANGE_BUFFER_SIZE, false, false, NULL);
if (mdl != NULL)
{ {
// Admit to send only if the number of packets being transmitted does not exceed the specified limit MmProbeAndLockPages(mdl, KernelMode, IoReadAccess);
adapter_handle = f->Adapter->AdapterHandle;
} }
if (adapter_handle != NULL) ret = true;
ret_size = SL_EXCHANGE_BUFFER_SIZE;
if (num >= 1 && num <= SL_MAX_PACKET_EXCHANGE)
{ {
// Lock the file list which opens the same adapter UINT i, j;
SlLockList(dev->FileList); NET_BUFFER_LIST *nbl_head = NULL;
for (j = 0;j < SL_LIST_NUM(dev->FileList);j++) NET_BUFFER_LIST *nbl_tail = NULL;
UINT num_packets = 0;
NDIS_HANDLE adapter_handle = NULL;
SlLock(f->Adapter->Lock);
if (f->Adapter->NumPendingSendPackets <= SL_MAX_PACKET_QUEUED)
{ {
SL_FILE *other = SL_LIST_DATA(dev->FileList, j); // Admit to send only if the number of packets being transmitted does not exceed the specified limit
adapter_handle = f->Adapter->AdapterHandle;
if (other != f)
{
// Lock the receive queue of other file lists
SlLock(other->RecvLock);
other->SetEventFlag = false;
}
} }
for (i = 0;i < num;i++) if (adapter_handle != NULL)
{ {
UINT packet_size = SL_SIZE_OF_PACKET(buf, i); // Lock the file list which opens the same adapter
UCHAR *packet_buf; SlLockList(dev->FileList);
NET_BUFFER_LIST *nbl = NULL; for (j = 0;j < SL_LIST_NUM(dev->FileList);j++)
bool ok = false; {
bool is_vlan = false; SL_FILE *other = SL_LIST_DATA(dev->FileList, j);
UINT vlan_id = 0;
UINT vlan_user_priority = 0, vlan_can_format_id = 0;
if (packet_size > SL_MAX_PACKET_SIZE) if (other != f)
{ {
packet_size = SL_MAX_PACKET_SIZE; // Lock the receive queue of other file lists
} SlLock(other->RecvLock);
else if (packet_size < SL_PACKET_HEADER_SIZE)
{ other->SetEventFlag = false;
packet_size = SL_PACKET_HEADER_SIZE; }
} }
packet_buf = (UCHAR *)SL_ADDR_OF_PACKET(buf, i); for (i = 0;i < num;i++)
{
UINT packet_size = SL_SIZE_OF_PACKET(buf, i);
UCHAR *packet_buf;
NET_BUFFER_LIST *nbl = NULL;
bool ok = false;
bool is_vlan = false;
UINT vlan_id = 0;
UINT vlan_user_priority = 0, vlan_can_format_id = 0;
if (packet_size > SL_MAX_PACKET_SIZE)
{
packet_size = SL_MAX_PACKET_SIZE;
}
else if (packet_size < SL_PACKET_HEADER_SIZE)
{
packet_size = SL_PACKET_HEADER_SIZE;
}
packet_buf = (UCHAR *)SL_ADDR_OF_PACKET(buf, i);
for (j = 0;j < SL_LIST_NUM(dev->FileList);j++)
{
SL_FILE *other = SL_LIST_DATA(dev->FileList, j);
if (other != f)
{
// Insert into the receive queue of the other file lists
if (other->NumRecvPackets < SL_MAX_PACKET_QUEUED)
{
SL_PACKET *q = SlMalloc(sizeof(SL_PACKET));
SlCopy(q->Data, packet_buf, packet_size);
q->Size = packet_size;
q->Next = NULL;
if (other->RecvPacketHead == NULL)
{
other->RecvPacketHead = q;
}
else
{
other->RecvPacketTail->Next = q;
}
other->RecvPacketTail = q;
other->NumRecvPackets++;
other->SetEventFlag = true;
}
}
}
// Allocate a new NET_BUFFER_LIST
if (f->NetBufferListPool != NULL)
{
nbl = NdisAllocateNetBufferList(f->NetBufferListPool, 16, 0);
if (nbl != NULL)
{
nbl->SourceHandle = adapter_handle;
}
}
if (nbl != NULL)
{
// Get the NET_BUFFER from the NET_BUFFER_LIST
NET_BUFFER *nb = NET_BUFFER_LIST_FIRST_NB(nbl);
NET_BUFFER_LIST_NEXT_NBL(nbl) = NULL;
// Determine if the packet is IEEE802.1Q tagged packet
if (dev->Adapter->SupportVLan && packet_size >= 18)
{
if (packet_buf[12] == 0x81 && packet_buf[13] == 0x00)
{
USHORT tag_us = 0;
((UCHAR *)(&tag_us))[0] = packet_buf[15];
((UCHAR *)(&tag_us))[1] = packet_buf[14];
vlan_id = tag_us & 0x0FFF;
vlan_user_priority = (tag_us >> 13) & 0x07;
vlan_can_format_id = (tag_us >> 12) & 0x01;
if (vlan_id != 0)
{
is_vlan = true;
}
}
}
if (is_vlan)
{
packet_size -= 4;
}
if (nb != NULL && OK(NdisRetreatNetBufferDataStart(nb, packet_size, 0, NULL)))
{
// Buffer copy
UCHAR *dst = NdisGetDataBuffer(nb, packet_size, NULL, 1, 0);
if (dst != NULL)
{
if (is_vlan == false)
{
SlCopy(dst, packet_buf, packet_size);
}
else
{
SlCopy(dst, packet_buf, 12);
SlCopy(dst + 12, packet_buf + 16, packet_size + 4 - 16);
}
ok = true;
}
else
{
NdisAdvanceNetBufferDataStart(nb, packet_size, false, NULL);
}
}
}
if (ok == false)
{
if (nbl != NULL)
{
NdisFreeNetBufferList(nbl);
}
}
else
{
if (nbl_head == NULL)
{
nbl_head = nbl;
}
if (nbl_tail != NULL)
{
NET_BUFFER_LIST_NEXT_NBL(nbl_tail) = nbl;
}
nbl_tail = nbl;
((void **)NET_BUFFER_LIST_CONTEXT_DATA_START(nbl))[0] = f;
if (is_vlan == false)
{
NET_BUFFER_LIST_INFO(nbl, Ieee8021QNetBufferListInfo) = NULL;
}
else
{
NDIS_NET_BUFFER_LIST_8021Q_INFO qinfo;
qinfo.Value = &(((void **)NET_BUFFER_LIST_CONTEXT_DATA_START(nbl))[1]);
SlZero(qinfo.Value, sizeof(UINT32) * 12);
qinfo.TagHeader.VlanId = vlan_id;
qinfo.TagHeader.UserPriority = vlan_user_priority;
qinfo.TagHeader.CanonicalFormatId = vlan_can_format_id;
NET_BUFFER_LIST_INFO(nbl, Ieee8021QNetBufferListInfo) = qinfo.Value;
}
num_packets++;
}
}
for (j = 0;j < SL_LIST_NUM(dev->FileList);j++) for (j = 0;j < SL_LIST_NUM(dev->FileList);j++)
{ {
@ -856,190 +1046,43 @@ NTSTATUS SlDeviceWriteProc(DEVICE_OBJECT *device_object, IRP *irp)
if (other != f) if (other != f)
{ {
// Insert into the receive queue of the other file lists // Release the receive queue of other file lists
if (other->NumRecvPackets < SL_MAX_PACKET_QUEUED) SlUnlock(other->RecvLock);
// Set an event
if (other->SetEventFlag)
{ {
SL_PACKET *q = SlMalloc(sizeof(SL_PACKET)); SlSet(other->Event);
SlCopy(q->Data, packet_buf, packet_size);
q->Size = packet_size;
q->Next = NULL;
if (other->RecvPacketHead == NULL)
{
other->RecvPacketHead = q;
}
else
{
other->RecvPacketTail->Next = q;
}
other->RecvPacketTail = q;
other->NumRecvPackets++;
other->SetEventFlag = true;
} }
} }
} }
SlUnlockList(dev->FileList);
// Allocate a new NET_BUFFER_LIST if (nbl_head != NULL)
if (f->NetBufferListPool != NULL)
{ {
nbl = NdisAllocateNetBufferList(f->NetBufferListPool, 16, 0); InterlockedExchangeAdd(&f->NumSendingPacketets, num_packets);
InterlockedExchangeAdd(&f->Adapter->NumPendingSendPackets, num_packets);
if (nbl != NULL) SlUnlock(f->Adapter->Lock);
{
nbl->SourceHandle = adapter_handle;
}
}
if (nbl != NULL) NdisSendNetBufferLists(adapter_handle, nbl_head, 0, 0);
{
// Get the NET_BUFFER from the NET_BUFFER_LIST
NET_BUFFER *nb = NET_BUFFER_LIST_FIRST_NB(nbl);
NET_BUFFER_LIST_NEXT_NBL(nbl) = NULL;
// Determine if the packet is IEEE802.1Q tagged packet
if (dev->Adapter->SupportVLan && packet_size >= 18)
{
if (packet_buf[12] == 0x81 && packet_buf[13] == 0x00)
{
USHORT tag_us = 0;
((UCHAR *)(&tag_us))[0] = packet_buf[15];
((UCHAR *)(&tag_us))[1] = packet_buf[14];
vlan_id = tag_us & 0x0FFF;
vlan_user_priority = (tag_us >> 13) & 0x07;
vlan_can_format_id = (tag_us >> 12) & 0x01;
if (vlan_id != 0)
{
is_vlan = true;
}
}
}
if (is_vlan)
{
packet_size -= 4;
}
if (nb != NULL && OK(NdisRetreatNetBufferDataStart(nb, packet_size, 0, NULL)))
{
// Buffer copy
UCHAR *dst = NdisGetDataBuffer(nb, packet_size, NULL, 1, 0);
if (dst != NULL)
{
if (is_vlan == false)
{
SlCopy(dst, packet_buf, packet_size);
}
else
{
SlCopy(dst, packet_buf, 12);
SlCopy(dst + 12, packet_buf + 16, packet_size + 4 - 16);
}
ok = true;
}
else
{
NdisAdvanceNetBufferDataStart(nb, packet_size, false, NULL);
}
}
}
if (ok == false)
{
if (nbl != NULL)
{
NdisFreeNetBufferList(nbl);
}
} }
else else
{ {
if (nbl_head == NULL) SlUnlock(f->Adapter->Lock);
{
nbl_head = nbl;
}
if (nbl_tail != NULL)
{
NET_BUFFER_LIST_NEXT_NBL(nbl_tail) = nbl;
}
nbl_tail = nbl;
((void **)NET_BUFFER_LIST_CONTEXT_DATA_START(nbl))[0] = f;
if (is_vlan == false)
{
NET_BUFFER_LIST_INFO(nbl, Ieee8021QNetBufferListInfo) = NULL;
}
else
{
NDIS_NET_BUFFER_LIST_8021Q_INFO qinfo;
qinfo.Value = &(((void **)NET_BUFFER_LIST_CONTEXT_DATA_START(nbl))[1]);
SlZero(qinfo.Value, sizeof(UINT32) * 12);
qinfo.TagHeader.VlanId = vlan_id;
qinfo.TagHeader.UserPriority = vlan_user_priority;
qinfo.TagHeader.CanonicalFormatId = vlan_can_format_id;
NET_BUFFER_LIST_INFO(nbl, Ieee8021QNetBufferListInfo) = qinfo.Value;
}
num_packets++;
} }
} }
for (j = 0;j < SL_LIST_NUM(dev->FileList);j++)
{
SL_FILE *other = SL_LIST_DATA(dev->FileList, j);
if (other != f)
{
// Release the receive queue of other file lists
SlUnlock(other->RecvLock);
// Set an event
if (other->SetEventFlag)
{
SlSet(other->Event);
}
}
}
SlUnlockList(dev->FileList);
if (nbl_head != NULL)
{
InterlockedExchangeAdd(&f->NumSendingPacketets, num_packets);
InterlockedExchangeAdd(&f->Adapter->NumPendingSendPackets, num_packets);
SlUnlock(f->Adapter->Lock);
NdisSendNetBufferLists(adapter_handle, nbl_head, 0, 0);
}
else else
{ {
SlUnlock(f->Adapter->Lock); SlUnlock(f->Adapter->Lock);
} }
} }
else
{
SlUnlock(f->Adapter->Lock);
}
}
if (mdl != NULL) if (mdl != NULL)
{ {
MmUnlockPages(mdl); MmUnlockPages(mdl);
IoFreeMdl(mdl); IoFreeMdl(mdl);
}
} }
} }
} }
@ -1068,17 +1111,31 @@ NTSTATUS SlDeviceIoControlProc(DEVICE_OBJECT *device_object, IRP *irp)
switch (irp_stack->Parameters.DeviceIoControl.IoControlCode) switch (irp_stack->Parameters.DeviceIoControl.IoControlCode)
{ {
case SL_IOCTL_GET_EVENT_NAME: case SL_IOCTL_GET_EVENT_NAME:
if (irp_stack->Parameters.DeviceIoControl.InputBufferLength >= sizeof(SL_IOCTL_EVENT_NAME)) if (irp_stack->Parameters.DeviceIoControl.OutputBufferLength >= sizeof(SL_IOCTL_EVENT_NAME))
{ {
SL_IOCTL_EVENT_NAME *t = irp->UserBuffer; SL_IOCTL_EVENT_NAME *t = irp->UserBuffer;
if (t != NULL) if (t != NULL)
{ {
strcpy(t->EventNameWin32, f->EventNameWin32); // Address check
bool check_ok = true;
__try
{
ProbeForWrite(t, sizeof(SL_IOCTL_EVENT_NAME), 1);
}
__except (EXCEPTION_EXECUTE_HANDLER)
{
check_ok = false;
}
ret_size = sizeof(SL_IOCTL_EVENT_NAME); if (check_ok)
{
strcpy(t->EventNameWin32, f->EventNameWin32);
ret = STATUS_SUCCESS; ret_size = sizeof(SL_IOCTL_EVENT_NAME);
ret = STATUS_SUCCESS;
}
} }
} }
break; break;

View File

@ -115,7 +115,7 @@
// Change this number every time functions are added or modified on the driver. // Change this number every time functions are added or modified on the driver.
// As long as this number does not change, installation of SeLow during the update // As long as this number does not change, installation of SeLow during the update
// installation of the VPN Server / VPN Client / VPN Bridge is skipped. // installation of the VPN Server / VPN Client / VPN Bridge is skipped.
#define SL_VER 46 #define SL_VER 48
// Constants // Constants
#define SL_MAX_PACKET_SIZE 1600 #define SL_MAX_PACKET_SIZE 1600

View File

@ -172,22 +172,49 @@ NTSTATUS DriverDispatch(DEVICE_OBJECT *device_object, IRP *irp)
case IRP_MJ_WRITE: // Write case IRP_MJ_WRITE: // Write
if ((stack->Parameters.Write.Length % sizeof(WFP_LOCAL_IP)) == 0) if ((stack->Parameters.Write.Length % sizeof(WFP_LOCAL_IP)) == 0)
{ {
UINT size = MIN(WFP_MAX_LOCAL_IP_COUNT * sizeof(WFP_LOCAL_IP), stack->Parameters.Write.Length); // Address check
UCHAR *copied_buf = Malloc(size); bool check_ok = true;
UCHAR *old_buf; __try
Copy(copied_buf, buf, size);
SpinLock(wfp->LocalIPListLock);
{ {
old_buf = wfp->LocalIPListData; ProbeForRead(buf, stack->Parameters.Write.Length, 1);
wfp->LocalIPListData = copied_buf;
wfp->LocalIPListSize = size;
} }
SpinUnlock(wfp->LocalIPListLock); __except (EXCEPTION_EXECUTE_HANDLER)
if (old_buf != NULL)
{ {
Free(old_buf); check_ok = false;
}
if (check_ok)
{
MDL *mdl = IoAllocateMdl(buf, stack->Parameters.Write.Length, false, false, NULL);
UINT size = MIN(WFP_MAX_LOCAL_IP_COUNT * sizeof(WFP_LOCAL_IP), stack->Parameters.Write.Length);
UCHAR *copied_buf = Malloc(size);
UCHAR *old_buf;
if (mdl != NULL)
{
MmProbeAndLockPages(mdl, KernelMode, IoWriteAccess);
}
Copy(copied_buf, buf, size);
SpinLock(wfp->LocalIPListLock);
{
old_buf = wfp->LocalIPListData;
wfp->LocalIPListData = copied_buf;
wfp->LocalIPListSize = size;
}
SpinUnlock(wfp->LocalIPListLock);
if (old_buf != NULL)
{
Free(old_buf);
}
if (mdl != NULL)
{
MmUnlockPages(mdl);
IoFreeMdl(mdl);
}
} }
} }
irp->IoStatus.Information = stack->Parameters.Write.Length; irp->IoStatus.Information = stack->Parameters.Write.Length;

View File

@ -79,7 +79,7 @@
Name="VCLinkerTool" Name="VCLinkerTool"
IgnoreImportLibrary="true" IgnoreImportLibrary="true"
AdditionalOptions="/driver /subsystem:native,6.00 /FULLBUILD /align:0x80 /osversion:6.00 /STACK:0x40000,0x1000 /MERGE:_PAGE=PAGE /MERGE:_TEXT=.text /NODEFAULTLIB /stub:C:\WINDDK\7600.16385.0\lib\wlh\stub512.com /ALIGN:4096" AdditionalOptions="/driver /subsystem:native,6.00 /FULLBUILD /align:0x80 /osversion:6.00 /STACK:0x40000,0x1000 /MERGE:_PAGE=PAGE /MERGE:_TEXT=.text /NODEFAULTLIB /stub:C:\WINDDK\7600.16385.0\lib\wlh\stub512.com /ALIGN:4096"
AdditionalDependencies="wdm.lib ndis.lib ntoskrnl.lib fwpkclnt.lib &quot;$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res&quot;" AdditionalDependencies="bufferoverflowK.lib wdm.lib ndis.lib wdmsec.lib ntoskrnl.lib fwpkclnt.lib &quot;$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res&quot;"
OutputFile="$(OutDir)\pxwfp_x86_unsigned.sys" OutputFile="$(OutDir)\pxwfp_x86_unsigned.sys"
LinkIncremental="1" LinkIncremental="1"
AdditionalLibraryDirectories="C:\WINDDK\7600.16385.0\lib\wlh\i386" AdditionalLibraryDirectories="C:\WINDDK\7600.16385.0\lib\wlh\i386"
@ -121,7 +121,7 @@
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode &quot;$(TargetPath)&quot; /DEST:&quot;$(TargetDir)pxwfp_x86.sys&quot; /COMMENT:&quot;VPN Software&quot; /KERNEL:yes /CERTID:0 /SHAMODE:0&#x0D;&#x0A;$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode &quot;$(TargetPath)&quot; /DEST:&quot;$(TargetDir)pxwfp_x86_win10.sys&quot; /COMMENT:&quot;VPN Software&quot; /KERNEL:yes /CERTID:0 /SHAMODE:2" CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode &quot;$(TargetPath)&quot; /DEST:&quot;$(TargetDir)pxwfp_x86.sys&quot; /COMMENT:&quot;VPN Software&quot; /KERNEL:yes /CERTID:0 /SHAMODE:0&#x0D;&#x0A;$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode &quot;$(TargetPath)&quot; /DEST:&quot;$(TargetDir)pxwfp_x86_win10.sys&quot; /COMMENT:&quot;VPN Software&quot; /KERNEL:yes /CERTID:0 /SHAMODE:2&#x0D;&#x0A;"
/> />
</Configuration> </Configuration>
<Configuration <Configuration
@ -183,7 +183,7 @@
Name="VCLinkerTool" Name="VCLinkerTool"
IgnoreImportLibrary="true" IgnoreImportLibrary="true"
AdditionalOptions="/driver /subsystem:native /FULLBUILD /align:0x80 /osversion:6.00 /STACK:0x40000,0x1000 /MERGE:_PAGE=PAGE /MERGE:_TEXT=.text /NODEFAULTLIB /stub:C:\WINDDK\7600.16385.0\lib\wlh\stub512.com /ALIGN:4096" AdditionalOptions="/driver /subsystem:native /FULLBUILD /align:0x80 /osversion:6.00 /STACK:0x40000,0x1000 /MERGE:_PAGE=PAGE /MERGE:_TEXT=.text /NODEFAULTLIB /stub:C:\WINDDK\7600.16385.0\lib\wlh\stub512.com /ALIGN:4096"
AdditionalDependencies="wdm.lib ndis.lib wdmsec.lib ntoskrnl.lib fwpkclnt.lib &quot;$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res&quot;" AdditionalDependencies="bufferoverflowK.lib wdm.lib ndis.lib wdmsec.lib ntoskrnl.lib fwpkclnt.lib &quot;$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res&quot;"
OutputFile="$(OutDir)\pxwfp_x64_unsigned.sys" OutputFile="$(OutDir)\pxwfp_x64_unsigned.sys"
LinkIncremental="1" LinkIncremental="1"
AdditionalLibraryDirectories="C:\WINDDK\7600.16385.0\lib\wlh\amd64" AdditionalLibraryDirectories="C:\WINDDK\7600.16385.0\lib\wlh\amd64"
@ -225,7 +225,7 @@
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode &quot;$(TargetPath)&quot; /DEST:&quot;$(TargetDir)pxwfp_x64.sys&quot; /COMMENT:&quot;VPN Software&quot; /KERNEL:yes /CERTID:0 /SHAMODE:0&#x0D;&#x0A;$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode &quot;$(TargetPath)&quot; /DEST:&quot;$(TargetDir)pxwfp_x64_win10.sys&quot; /COMMENT:&quot;VPN Software&quot; /KERNEL:yes /CERTID:0 /SHAMODE:2" CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode &quot;$(TargetPath)&quot; /DEST:&quot;$(TargetDir)pxwfp_x64.sys&quot; /COMMENT:&quot;VPN Software&quot; /KERNEL:yes /CERTID:0 /SHAMODE:0&#x0D;&#x0A;$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode &quot;$(TargetPath)&quot; /DEST:&quot;$(TargetDir)pxwfp_x64_win10.sys&quot; /COMMENT:&quot;VPN Software&quot; /KERNEL:yes /CERTID:0 /SHAMODE:2&#x0D;&#x0A;"
/> />
</Configuration> </Configuration>
</Configurations> </Configurations>

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
;CatalogFile.NT = $CATALOG_FILENAME$ ;CatalogFile.NT = $CATALOG_FILENAME$
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193640.387 ; Auto Generated 20151018_201626.032

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
;CatalogFile.NT = $CATALOG_FILENAME$ ;CatalogFile.NT = $CATALOG_FILENAME$
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193640.383 ; Auto Generated 20151018_201626.029

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
;CatalogFile.NT = $CATALOG_FILENAME$ ;CatalogFile.NT = $CATALOG_FILENAME$
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193640.393 ; Auto Generated 20151018_201626.038

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
;CatalogFile.NT = $CATALOG_FILENAME$ ;CatalogFile.NT = $CATALOG_FILENAME$
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193640.390 ; Auto Generated 20151018_201626.035

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN.cat CatalogFile.NT = Neo6_x64_VPN.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193658.928 ; Auto Generated 20151018_201643.395

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN10.cat CatalogFile.NT = Neo6_x64_VPN10.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193659.933 ; Auto Generated 20151018_201644.250

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN100.cat CatalogFile.NT = Neo6_x64_VPN100.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193709.982 ; Auto Generated 20151018_201652.798

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN101.cat CatalogFile.NT = Neo6_x64_VPN101.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193710.086 ; Auto Generated 20151018_201652.893

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN102.cat CatalogFile.NT = Neo6_x64_VPN102.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193710.189 ; Auto Generated 20151018_201652.987

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN103.cat CatalogFile.NT = Neo6_x64_VPN103.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193710.292 ; Auto Generated 20151018_201653.082

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN104.cat CatalogFile.NT = Neo6_x64_VPN104.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193710.395 ; Auto Generated 20151018_201653.176

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN105.cat CatalogFile.NT = Neo6_x64_VPN105.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193710.534 ; Auto Generated 20151018_201653.270

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN106.cat CatalogFile.NT = Neo6_x64_VPN106.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193710.656 ; Auto Generated 20151018_201653.364

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN107.cat CatalogFile.NT = Neo6_x64_VPN107.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193710.977 ; Auto Generated 20151018_201653.458

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN108.cat CatalogFile.NT = Neo6_x64_VPN108.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193711.080 ; Auto Generated 20151018_201653.553

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN109.cat CatalogFile.NT = Neo6_x64_VPN109.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193711.184 ; Auto Generated 20151018_201653.657

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN11.cat CatalogFile.NT = Neo6_x64_VPN11.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193700.037 ; Auto Generated 20151018_201644.345

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN110.cat CatalogFile.NT = Neo6_x64_VPN110.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193711.290 ; Auto Generated 20151018_201653.752

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN111.cat CatalogFile.NT = Neo6_x64_VPN111.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193711.394 ; Auto Generated 20151018_201653.846

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN112.cat CatalogFile.NT = Neo6_x64_VPN112.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193711.497 ; Auto Generated 20151018_201653.940

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN113.cat CatalogFile.NT = Neo6_x64_VPN113.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193711.620 ; Auto Generated 20151018_201654.035

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN114.cat CatalogFile.NT = Neo6_x64_VPN114.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193711.742 ; Auto Generated 20151018_201654.131

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN115.cat CatalogFile.NT = Neo6_x64_VPN115.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193711.900 ; Auto Generated 20151018_201654.225

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN116.cat CatalogFile.NT = Neo6_x64_VPN116.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193712.004 ; Auto Generated 20151018_201654.319

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN117.cat CatalogFile.NT = Neo6_x64_VPN117.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193712.107 ; Auto Generated 20151018_201654.414

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN118.cat CatalogFile.NT = Neo6_x64_VPN118.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193712.209 ; Auto Generated 20151018_201654.509

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN119.cat CatalogFile.NT = Neo6_x64_VPN119.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193712.314 ; Auto Generated 20151018_201654.603

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN12.cat CatalogFile.NT = Neo6_x64_VPN12.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193700.140 ; Auto Generated 20151018_201644.439

View File

@ -3,14 +3,14 @@
; Copyright (c) SoftEther Corporation. All Rights Reserved. ; Copyright (c) SoftEther Corporation. All Rights Reserved.
; http://www.softether.co.jp/ ; http://www.softether.co.jp/
; ;
; BUILD 9575 ; BUILD 9594
[Version] [Version]
Signature = "$Windows NT$" Signature = "$Windows NT$"
Class = Net Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName% Provider = %CompanyName%
DriverVer = 09/09/2015, 4.19.0.9575 DriverVer = 10/17/2015, 4.19.0.9594
CatalogFile.NT = Neo6_x64_VPN120.cat CatalogFile.NT = Neo6_x64_VPN120.cat
[Manufacturer] [Manufacturer]
@ -110,5 +110,5 @@ On = "On"
Off = "Off" Off = "Off"
; Auto Generated 20150910_193712.418 ; Auto Generated 20151018_201654.697

Some files were not shown because too many files have changed in this diff Show More