diff --git a/node/EthernetTap.cpp b/node/EthernetTap.cpp index 874825379..fce30b61c 100644 --- a/node/EthernetTap.cpp +++ b/node/EthernetTap.cpp @@ -1465,7 +1465,7 @@ void EthernetTap::threadMain() for(;;) { if (!_run) break; - WaitForMultipleObjectsEx(3,wait4,FALSE,INFINITE,TRUE); + DWORD r = WaitForMultipleObjectsEx(writeInProgress ? 3 : 2,wait4,FALSE,INFINITE,TRUE); if (!_run) break; if (HasOverlappedIoCompleted(&_tapOvlRead)) { diff --git a/node/Node.cpp b/node/Node.cpp index d195b9f18..e55cad04c 100644 --- a/node/Node.cpp +++ b/node/Node.cpp @@ -419,12 +419,16 @@ Node::ReasonForTermination Node::run() } Utils::lockDownFile(identitySecretPath.c_str(),false); - // Make sure networks.d exists + // Make sure networks.d exists and is secure + { + std::string networksDotD(_r->homePath + ZT_PATH_SEPARATOR_S + "networks.d"); #ifdef __WINDOWS__ - CreateDirectoryA((_r->homePath + ZT_PATH_SEPARATOR_S + "networks.d").c_str(),NULL); + CreateDirectoryA(networksDotD.c_str(),NULL); #else - mkdir((_r->homePath + ZT_PATH_SEPARATOR_S + "networks.d").c_str(),0700); + mkdir(networksDotD.c_str(),0700); #endif + Utils::lockDownFile(networksDotD.c_str(),true); + } // Load or generate config authentication secret std::string configAuthTokenPath(_r->homePath + ZT_PATH_SEPARATOR_S + "authtoken.secret"); diff --git a/node/Topology.cpp b/node/Topology.cpp index 6efde33ed..b499063cf 100644 --- a/node/Topology.cpp +++ b/node/Topology.cpp @@ -280,17 +280,13 @@ void Topology::_loadPeers() buf.setSize(buf.size() - ptr); } } while (rlen > 0); - fclose(pd); - } else { - fclose(pd); - Utils::rm(pdpath); } } catch ( ... ) { - // Membership cert dump file invalid. We'll re-learn them off the net. _activePeers.clear(); - fclose(pd); - Utils::rm(pdpath); } + + fclose(pd); + Utils::rm(pdpath); } } // namespace ZeroTier diff --git a/node/Utils.cpp b/node/Utils.cpp index 53a671798..e91cb6a16 100644 --- a/node/Utils.cpp +++ b/node/Utils.cpp @@ -251,8 +251,19 @@ void Utils::lockDownFile(const char *path,bool isDir) #ifdef __UNIX_LIKE__ chmod(path,isDir ? 0700 : 0600); #else -#ifdef _WIN32 - // TODO: windows ACL hell... +#ifdef __WINDOWS__ + { + STARTUPINFOA startupInfo; + startupInfo.cb = sizeof(startupInfo); + PROCESS_INFORMATION processInfo; + memset(&startupInfo,0,sizeof(STARTUPINFOA)); + memset(&processInfo,0,sizeof(PROCESS_INFORMATION)); + if (CreateProcessA(NULL,(LPSTR)(std::string("C:\\Windows\\System32\\cacls.exe \"") + path + "\" /E /R Users").c_str(),NULL,NULL,FALSE,0,NULL,NULL,&startupInfo,&processInfo)) { + WaitForSingleObject(processInfo.hProcess,INFINITE); + CloseHandle(processInfo.hProcess); + CloseHandle(processInfo.hThread); + } + } #endif #endif } diff --git a/windows/ZeroTierOneInstaller/ZeroTierOneInstaller.isl b/windows/ZeroTierOneInstaller/ZeroTierOneInstaller.isl index 92c52a127..9b94b2aea 100644 --- a/windows/ZeroTierOneInstaller/ZeroTierOneInstaller.isl +++ b/windows/ZeroTierOneInstaller/ZeroTierOneInstaller.isl @@ -52,7 +52,7 @@ 1252 Installation Database - + InstallShield Installer,MSI,Database Contact: Your local administrator @@ -339,7 +339,27 @@ ISDotNetInstallerArgsCommit ISDotNetInstallerArgsUninstall ISDotNetInstallerArgsRollback + ISX_DEFAULTCOMPONENT{2E46459B-E8E1-4D99-9473-51BC767F4538}PLATFORMS217/LogFile=/LogFile=/LogFile=/LogFile= ISX_DEFAULTCOMPONENT1{BB5EAF06-9942-43E8-B230-77D50690F00F}INSTALLDIR217/LogFile=/LogFile=/LogFile=/LogFile= + ISX_DEFAULTCOMPONENT2{5E65C5F2-2127-439E-B5AD-B4372A27D717}ZEROTIER1217/LogFile=/LogFile=/LogFile=/LogFile= + ISX_DEFAULTCOMPONENT3{C3C7BAD0-F95C-4406-BA25-659AC3473985}ONE217/LogFile=/LogFile=/LogFile=/LogFile= + ISX_DEFAULTCOMPONENT4{2492CE69-39F5-4D9B-B3B6-3CE5481C1140}TAP_WINDOWS217/LogFile=/LogFile=/LogFile=/LogFile= + ISX_DEFAULTCOMPONENT5{EAAD99C2-234F-41A6-A884-CDFE676BA68D}X64217/LogFile=/LogFile=/LogFile=/LogFile= + ISX_DEFAULTCOMPONENT6{8452A03C-96B8-4A35-9B16-A8EC136EE841}X86217/LogFile=/LogFile=/LogFile=/LogFile= + Qt5Core.dll{169B4507-77AC-4430-8BDA-F3A491C84299}INSTALLDIR2qt5core.dll17/LogFile=/LogFile=/LogFile=/LogFile= + Qt5Gui.dll{8179238B-C754-4CE9-A2DD-C54EAD9835B2}INSTALLDIR2qt5gui.dll17/LogFile=/LogFile=/LogFile=/LogFile= + Qt5Network.dll{FB4964EC-BD9E-46C6-8167-3575DCA4FEF3}INSTALLDIR2qt5network.dll17/LogFile=/LogFile=/LogFile=/LogFile= + Qt5Widgets.dll{205A3CCB-CF34-4208-8944-7861AA7A71E3}INSTALLDIR2qt5widgets.dll17/LogFile=/LogFile=/LogFile=/LogFile= + WdfCoinstaller01011.dll{181ACA78-4FCE-48F4-A2A3-3B9ADA1C9849}X642wdfcoinstaller01011.dll17/LogFile=/LogFile=/LogFile=/LogFile= + WdfCoinstaller01011.dll1{2C7D1A20-31A6-4F69-AA02-AFD6F51AC22B}X862wdfcoinstaller01011.dll117/LogFile=/LogFile=/LogFile=/LogFile= + devcon_x64.exe{4C7D90E3-6542-4BB3-A94A-96EC3AB0B936}ONE2devcon_x64.exe17/LogFile=/LogFile=/LogFile=/LogFile= + devcon_x86.exe{3235C2E7-DCC2-47AE-925F-71A023406734}ONE2devcon_x86.exe17/LogFile=/LogFile=/LogFile=/LogFile= + icudt51.dll{C82729DD-325C-49BB-8785-BC178306EFB2}INSTALLDIR2icudt51.dll17/LogFile=/LogFile=/LogFile=/LogFile= + icuin51.dll{69B728BD-C848-4C87-AD9C-2C99EDFDEBED}INSTALLDIR2icuin51.dll17/LogFile=/LogFile=/LogFile=/LogFile= + icuuc51.dll{C8B05B34-75D3-4E7D-9CA4-015DD57102A9}INSTALLDIR2icuuc51.dll17/LogFile=/LogFile=/LogFile=/LogFile= + libEGL.dll{D90EF89D-15FD-4078-944E-0CD59F271DDD}INSTALLDIR2libegl.dll17/LogFile=/LogFile=/LogFile=/LogFile= + libGLESv2.dll{B107C281-330A-48FE-A5B7-4FD770EF6E1E}INSTALLDIR2libglesv2.dll17/LogFile=/LogFile=/LogFile=/LogFile= + qwindows.dll{A76236B1-D579-4C4B-A462-2C78D5E1D344}PLATFORMS2qwindows.dll17/LogFile=/LogFile=/LogFile=/LogFile= @@ -1049,6 +1069,10 @@ Directory_Component_ + + + +
INSTALLDIRISX_DEFAULTCOMPONENT1ONEISX_DEFAULTCOMPONENT3PLATFORMSISX_DEFAULTCOMPONENTTAP_WINDOWSISX_DEFAULTCOMPONENT4ZEROTIER1ISX_DEFAULTCOMPONENT2
@@ -1140,12 +1164,13 @@
GlobalAssemblyCacheTARGETDIR.:Global~1|GlobalAssemblyCache0 INSTALLDIRISMyProductDir.0 ISCommonFilesFolderCommonFilesFolderInstal~1|InstallShield0 - ISMyCompanyDirProgramFilesFolderMYCOMP~1|My Company Name0 - ISMyProductDirISMyCompanyDirMYPROD~1|My Product Name0 + ISMyProductDirZEROTIEROne0 ISYourDataBaseDirINSTALLDIRDatabase0 LocalAppDataFolderTARGETDIR.:LocalA~1|LocalAppData0 MyPicturesFolderTARGETDIR.:MyPict~1|MyPictures0 NetHoodFolderTARGETDIR.:NetHood0 + ONEZEROTIER1One0 + PLATFORMSINSTALLDIRPLATFO~1|platforms0 PersonalFolderTARGETDIR.:Personal0 PrimaryVolumePathTARGETDIR.:Primar~1|PrimaryVolumePath0 PrintHoodFolderTARGETDIR.:PRINTH~1|PrintHood0 @@ -1159,12 +1184,17 @@ System16FolderTARGETDIR.:System0 System64FolderTARGETDIR.:System640 SystemFolderTARGETDIR.:System320 + TAP_WINDOWSONETAP-WI~1|tap-windows0 TARGETDIRSourceDir0 TempFolderTARGETDIR.:Temp0 TemplateFolderTARGETDIR.:ShellNew0 USERPROFILETARGETDIR.:USERPR~1|UserProfile0 WindowsFolderTARGETDIR.:Windows0 WindowsVolumeTARGETDIR.:WinRoot0 + X64TAP_WINDOWSx640 + X86TAP_WINDOWSx860 + ZEROTIERProgramFilesFolderZeroTier0 + ZEROTIER1AppDataFolderZeroTier0
@@ -1856,7 +1886,27 @@
Feature_Component_ + + + + + + + + + + + + + + + + + + + +
AlwaysInstallISX_DEFAULTCOMPONENT AlwaysInstallISX_DEFAULTCOMPONENT1AlwaysInstallISX_DEFAULTCOMPONENT2AlwaysInstallISX_DEFAULTCOMPONENT3AlwaysInstallISX_DEFAULTCOMPONENT4AlwaysInstallISX_DEFAULTCOMPONENT5AlwaysInstallISX_DEFAULTCOMPONENT6AlwaysInstallQt5Core.dllAlwaysInstallQt5Gui.dllAlwaysInstallQt5Network.dllAlwaysInstallQt5Widgets.dllAlwaysInstallWdfCoinstaller01011.dllAlwaysInstallWdfCoinstaller01011.dll1AlwaysInstalldevcon_x64.exeAlwaysInstalldevcon_x86.exeAlwaysInstallicudt51.dllAlwaysInstallicuin51.dllAlwaysInstallicuuc51.dllAlwaysInstalllibEGL.dllAlwaysInstalllibGLESv2.dllAlwaysInstallqwindows.dll
@@ -1871,6 +1921,26 @@ ISBuildSourcePathISAttributesISComponentSubFolder_ +
devcon_x64.exedevcon_x64.exeDEVCON~1.EXE|devcon_x64.exe01C:\Users\api\Documents\Visual Studio 2012\Projects\ZeroTierOne\ext\bin\devcon\devcon_x64.exe1 + devcon_x86.exedevcon_x86.exeDEVCON~1.EXE|devcon_x86.exe01C:\Users\api\Documents\Visual Studio 2012\Projects\ZeroTierOne\ext\bin\devcon\devcon_x86.exe1 + icudt51.dllicudt51.dllicudt51.dll01C:\Users\api\Documents\QtWin32Dlls\icudt51.dll1 + icuin51.dllicuin51.dllicuin51.dll01C:\Users\api\Documents\QtWin32Dlls\icuin51.dll1 + icuuc51.dllicuuc51.dllicuuc51.dll01C:\Users\api\Documents\QtWin32Dlls\icuuc51.dll1 + libegl.dlllibEGL.dlllibEGL.dll01C:\Users\api\Documents\QtWin32Dlls\libEGL.dll1 + libglesv2.dlllibGLESv2.dllLIBGLE~1.DLL|libGLESv2.dll01C:\Users\api\Documents\QtWin32Dlls\libGLESv2.dll1 + qt5core.dllQt5Core.dllQt5Core.dll01C:\Users\api\Documents\QtWin32Dlls\Qt5Core.dll1 + qt5gui.dllQt5Gui.dllQt5Gui.dll01C:\Users\api\Documents\QtWin32Dlls\Qt5Gui.dll1 + qt5network.dllQt5Network.dllQT5NET~1.DLL|Qt5Network.dll01C:\Users\api\Documents\QtWin32Dlls\Qt5Network.dll1 + qt5widgets.dllQt5Widgets.dllQT5WID~1.DLL|Qt5Widgets.dll01C:\Users\api\Documents\QtWin32Dlls\Qt5Widgets.dll1 + qwindows.dllqwindows.dllqwindows.dll01C:\Users\api\Documents\QtWin32Dlls\platforms\qwindows.dll1 + wdfcoinstaller01011.dllWdfCoinstaller01011.dllWDFCOI~1.DLL|WdfCoinstaller01011.dll01C:\Users\api\Documents\Visual Studio 2012\Projects\ZeroTierOne\ext\bin\tap-windows\x64\WdfCoinstaller01011.dll1 + wdfcoinstaller01011.dll1WdfCoinstaller01011.dll1WDFCOI~1.DLL|WdfCoinstaller01011.dll01C:\Users\api\Documents\Visual Studio 2012\Projects\ZeroTierOne\ext\bin\tap-windows\x86\WdfCoinstaller01011.dll1 + zttap200.catISX_DEFAULTCOMPONENT5zttap200.cat01C:\Users\api\Documents\Visual Studio 2012\Projects\ZeroTierOne\ext\bin\tap-windows\x64\zttap200.cat1 + zttap200.cat1ISX_DEFAULTCOMPONENT6zttap200.cat01C:\Users\api\Documents\Visual Studio 2012\Projects\ZeroTierOne\ext\bin\tap-windows\x86\zttap200.cat1 + zttap200.infISX_DEFAULTCOMPONENT5zttap200.inf01C:\Users\api\Documents\Visual Studio 2012\Projects\ZeroTierOne\ext\bin\tap-windows\x64\zttap200.inf1 + zttap200.inf1ISX_DEFAULTCOMPONENT6zttap200.inf01C:\Users\api\Documents\Visual Studio 2012\Projects\ZeroTierOne\ext\bin\tap-windows\x86\zttap200.inf1 + zttap200.sysISX_DEFAULTCOMPONENT5zttap200.sys01C:\Users\api\Documents\Visual Studio 2012\Projects\ZeroTierOne\ext\bin\tap-windows\x64\zttap200.sys1 + zttap200.sys1ISX_DEFAULTCOMPONENT6zttap200.sys01C:\Users\api\Documents\Visual Studio 2012\Projects\ZeroTierOne\ext\bin\tap-windows\x86\zttap200.sys1
@@ -2012,7 +2082,27 @@ FTPLocationHTTPLocationMiscellaneous +
ISX_DEFAULTCOMPONENT_22A22EA9_E4E4_4502_A013_0F88D8E4A209_FILTER ISX_DEFAULTCOMPONENT1_CBE4A1D0_6011_42CE_8926_FC33E3807FAA_FILTER + ISX_DEFAULTCOMPONENT2_0903EFCE_7FF0_41E6_BEEB_6E1A8A494440_FILTER + ISX_DEFAULTCOMPONENT3_1A983E9B_AFD2_4269_827B_450B94AA25B3_FILTER + ISX_DEFAULTCOMPONENT4_0F3A927F_CAA5_43EF_9855_581D4ADF86EF_FILTER + ISX_DEFAULTCOMPONENT5_458AB5BA_0F58_4DF8_93F7_03D68CDDC21D_FILTER + ISX_DEFAULTCOMPONENT6_D9AC7E8C_5FF9_4B25_913B_790466A0D0F8_FILTER + Qt5Core.dll_B2D6D45E_4382_4893_9096_D67333AD1C7F_FILTER + Qt5Gui.dll_23E20BDB_CAD0_44E1_8305_424FEB64CCD7_FILTER + Qt5Network.dll_D48255CD_94FF_4219_93B8_FB435E8BA5B3_FILTER + Qt5Widgets.dll_6CB4C7B2_E80E_4AC3_838C_6D1431F5AC93_FILTER + WdfCoinstaller01011.dll_25CAA8A4_34FC_4599_94AF_0124B400A2F8_FILTER + WdfCoinstaller01011.dll1_2FCC37B9_1DE6_4163_A99C_F53EA4420CCB_FILTER + devcon_x64.exe_419B108B_CB71_4DE5_ADC7_1889BE228BAC_FILTER + devcon_x86.exe_02A951D7_7BF2_4D39_85EC_032CDBD9D644_FILTER + icudt51.dll_3A5B57B7_E9D6_4B25_960E_DBA119CA8153_FILTER + icuin51.dll_69ADAC1B_3AD1_45F5_B057_212D33C17494_FILTER + icuuc51.dll_8666B8DF_170C_4782_ACFC_9C8A1304FC2F_FILTER + libEGL.dll_4C26B75E_850C_4565_AAC4_1E9576965D5E_FILTER + libGLESv2.dll_DA9BD817_C07E_4558_8F11_723DDB352DEB_FILTER + qwindows.dll_A5F1B009_8024_4EA9_A5B5_79E6E514A5E4_FILTER
@@ -2596,6 +2686,7 @@ OrderISSetupLocationISReleaseFlags +
_287C5A74_B6E0_402B_9265_98CE482EF79C_Microsoft .NET Framework 4.5 Full.prq
@@ -3974,7 +4065,7 @@ RABWAEQALQA1AAEARQB4AHAAcgBlAHMAcwA= - +
ISThemeInstallShield Blue.theme ISUSLock{1C46AFC4-D60A-4FD4-B53C-C2A31F763477} ISUSSignature{C55432A9-A602-4EEB-97E9-9DA69591230D}ISVisitedViewsviewAssistant,viewISToday,viewProject,viewRealSetupDesign,viewSetupDesign,viewSetupTypes,viewUpgradePaths,viewUpdateService,viewRegistry,viewUI,viewBillboards,viewTextMessages,viewSystemSearch,viewInstallScriptStd,viewCustomActions,viewSupportFiles,viewRelease,viewDesignPatches,viewAppV,viewFeatureFiles,viewServices,viewComponentServices,viewVRoots,viewEnvironmentVariables,viewFileExtensions,viewIniFiles,viewTextFilesISVisitedViewsviewAssistant,viewISToday,viewProject,viewRealSetupDesign,viewSetupDesign,viewSetupTypes,viewUpgradePaths,viewUpdateService,viewRegistry,viewUI,viewBillboards,viewTextMessages,viewSystemSearch,viewInstallScriptStd,viewCustomActions,viewSupportFiles,viewRelease,viewDesignPatches,viewAppV,viewFeatureFiles,viewServices,viewComponentServices,viewVRoots,viewEnvironmentVariables,viewFileExtensions,viewIniFiles,viewTextFiles,viewDependencies,viewObjects,viewAppFiles Limited1 LockPermissionMode1 MsiExecCmdLineOptions