From 5a2103e5424af68f5746cfa5f8558625c52a5208 Mon Sep 17 00:00:00 2001 From: Greg Date: Mon, 20 Feb 2023 21:11:23 -0700 Subject: [PATCH] Add exception handling and proper filtering of packets that may be invalid. --- Playstation/OrbisLibAPI/API.cpp | 4 +- Playstation/OrbisLibAPI/APIPackets.h | 4 +- Playstation/OrbisLibAPI/Apps.cpp | 4 + Playstation/OrbisLibAPI/ThreadPool.cpp | 32 +- Playstation/OrbisLibAPI/ThreadPool.h | 2 +- Playstation/OrbisLibAPI/Utilities.cpp | 4 +- Playstation/OrbisLibAPI/Version.h | 22 +- Playstation/OrbisLibAPI/build.bat | 2 +- Playstation/OrbisLibAPI/main.cpp | 2 +- Playstation/OrbisToolbox-2.0/Version.h | 22 +- .../Installer/BootstrapperSetup/Version.wxi | 2 +- .../Generated/OrbisLibraryManager.wxs | 157 +- .../Generated/OrbisNeighborhood.wxs | 2202 ++++++++--------- .../Generated/OrbisPeeknPoke.wxs | 154 +- .../Generated/OrbisSuiteService.wxs | 376 +-- .../OrbisLib2/Common/API/APIPackets.cs | 2 +- Windows/Libraries/OrbisLib2/Common/Config.cs | 2 +- .../MVVM/View/AppListView.xaml.cs | 3 + .../Resources/BuildNumber.txt | 2 +- .../Resources/BuildString.txt | 2 +- 20 files changed, 1517 insertions(+), 1483 deletions(-) diff --git a/Playstation/OrbisLibAPI/API.cpp b/Playstation/OrbisLibAPI/API.cpp index bcbb3ca..564c562 100644 --- a/Playstation/OrbisLibAPI/API.cpp +++ b/Playstation/OrbisLibAPI/API.cpp @@ -21,9 +21,9 @@ void API::ListenerCallback(void* tdParam, OrbisNetId s, OrbisNetInAddr sin_addr) } // Validate Packet - if (strcmp(Packet->PacketMagic, "ORBIS_SUITE") && Packet->PacketVersion != PACKET_VERSION) + if (strcmp(Packet->PacketMagic, "ORBIS_SUITE") || Packet->PacketVersion != PACKET_VERSION) { - klog("Invalid Packet with Magic %s and Version %i\n", Packet->PacketMagic, Packet->PacketVersion); + klog("Invalid Packet with Magic '%s' and Version %i\nExpected 'ORBIS_SUITE' and %i\n", Packet->PacketMagic, Packet->PacketVersion, PACKET_VERSION); free(Packet); diff --git a/Playstation/OrbisLibAPI/APIPackets.h b/Playstation/OrbisLibAPI/APIPackets.h index b8717ec..c3af22f 100644 --- a/Playstation/OrbisLibAPI/APIPackets.h +++ b/Playstation/OrbisLibAPI/APIPackets.h @@ -1,7 +1,7 @@ #pragma once #include "Common.h" -#define PACKET_VERSION 3 +#define PACKET_VERSION 4 #pragma region Commands @@ -248,7 +248,7 @@ enum APIResults struct APIPacket { - char PacketMagic[10]; + char PacketMagic[12]; int PacketVersion; int Command; }; diff --git a/Playstation/OrbisLibAPI/Apps.cpp b/Playstation/OrbisLibAPI/Apps.cpp index 38aec3b..9f8246d 100644 --- a/Playstation/OrbisLibAPI/Apps.cpp +++ b/Playstation/OrbisLibAPI/Apps.cpp @@ -133,6 +133,10 @@ void Apps::GetDB(OrbisNetId Sock) // ReadFile. if (sceKernelRead(fd, fileData, fileSize) <= 0) { + // clean up. + free(fileData); + sceKernelClose(fd); + Sockets::SendInt(Sock, 0); return; } diff --git a/Playstation/OrbisLibAPI/ThreadPool.cpp b/Playstation/OrbisLibAPI/ThreadPool.cpp index 76e7d20..9cfe3a6 100644 --- a/Playstation/OrbisLibAPI/ThreadPool.cpp +++ b/Playstation/OrbisLibAPI/ThreadPool.cpp @@ -4,7 +4,7 @@ bool ThreadPool::ShouldRun; std::mutex ThreadPool::JobQueueMtx; std::condition_variable ThreadPool::MtxCondition; -std::vector ThreadPool::ThreadsPool; +std::vector ThreadPool::ThreadsPool; std::queue> ThreadPool::JobQueue; void ThreadPool::WorkingLoop() @@ -13,6 +13,7 @@ void ThreadPool::WorkingLoop() { std::function job; { + std::unique_lock lock(JobQueueMtx); MtxCondition.wait(lock, [] @@ -27,8 +28,18 @@ void ThreadPool::WorkingLoop() JobQueue.pop(); } - if (job != nullptr) + try + { job(); + } + catch(const std::exception& ex) + { + klog("Std Error: %s\n", ex.what()); + } + catch (...) + { + klog("Other Uknown Error Occured in Worker Thread.\n"); + } } } @@ -38,7 +49,18 @@ void ThreadPool::Init(int poolSize) ThreadsPool.resize(poolSize); for (int i = 0; i < poolSize; i++) { - ThreadsPool.at(i) = std::thread(WorkingLoop); + char threadName[0x200]; + snprintf(threadName, sizeof(threadName), "WorkerThread%i", i); + scePthreadCreate(&ThreadsPool.at(i), nullptr, [](void*) -> void* + { + ThreadPool::WorkingLoop(); + + // Clean up the thread. + scePthreadExit(nullptr); + return nullptr; + }, nullptr, threadName); + + scePthreadSetaffinity(ThreadsPool.at(i), 0x7f); // SCE_KERNEL_CPUMASK_7CPU_ALL } } @@ -51,9 +73,9 @@ void ThreadPool::Term() MtxCondition.notify_all(); - for (std::thread& activeThread : ThreadsPool) + for (OrbisPthread& activeThread : ThreadsPool) { - activeThread.join(); + scePthreadJoin(activeThread, nullptr); } ThreadsPool.clear(); diff --git a/Playstation/OrbisLibAPI/ThreadPool.h b/Playstation/OrbisLibAPI/ThreadPool.h index 81a2362..67e465a 100644 --- a/Playstation/OrbisLibAPI/ThreadPool.h +++ b/Playstation/OrbisLibAPI/ThreadPool.h @@ -18,6 +18,6 @@ private: static bool ShouldRun; static std::mutex JobQueueMtx; static std::condition_variable MtxCondition; - static std::vector ThreadsPool; + static std::vector ThreadsPool; static std::queue> JobQueue; }; diff --git a/Playstation/OrbisLibAPI/Utilities.cpp b/Playstation/OrbisLibAPI/Utilities.cpp index c61c476..d7b081c 100644 --- a/Playstation/OrbisLibAPI/Utilities.cpp +++ b/Playstation/OrbisLibAPI/Utilities.cpp @@ -329,13 +329,15 @@ bool LinkDir(const char* Dir, const char* LinkedDir) if (res == 0x80020011) { klog("Directory '%s' already exists!\n", LinkedDir); - return true; + //return true; + goto keepgoing; } klog("Failed to make dir '%s' err: %llX\n", LinkedDir, res); return false; } +keepgoing: struct iovec* iov = NULL; int iovlen = 0; diff --git a/Playstation/OrbisLibAPI/Version.h b/Playstation/OrbisLibAPI/Version.h index c8a5b66..f745c51 100644 --- a/Playstation/OrbisLibAPI/Version.h +++ b/Playstation/OrbisLibAPI/Version.h @@ -1,11 +1,11 @@ -#pragma once -#define ORBISLIB_MAJOR 3 -#define ORBISLIB_MINOR 0 -#define ORBISLIB_BUILDVERSION 1144 -#define stringify(a) stringify_(a) -#define stringify_(a) #a -#if defined(_DEBUG) -#define ORBISLIB_BUILDSTRING ("[OrbisLib Daemon " stringify(ORBISLIB_MAJOR) "." stringify(ORBISLIB_MINOR) "] Dev Build " stringify(ORBISLIB_BUILDVERSION) " " __DATE__ " " __TIME__) -#else -#define ORBISLIB_BUILDSTRING ("[OrbisLib Daemon " stringify(ORBISLIB_MAJOR) "." stringify(ORBISLIB_MINOR) "] Build " stringify(ORBISLIB_BUILDVERSION) " " __DATE__ " " __TIME__) -#endif +#pragma once +#define ORBISLIB_MAJOR 3 +#define ORBISLIB_MINOR 0 +#define ORBISLIB_BUILDVERSION 1165 +#define stringify(a) stringify_(a) +#define stringify_(a) #a +#if defined(_DEBUG) +#define ORBISLIB_BUILDSTRING ("[OrbisLib Daemon " stringify(ORBISLIB_MAJOR) "." stringify(ORBISLIB_MINOR) "] Dev Build " stringify(ORBISLIB_BUILDVERSION) " " __DATE__ " " __TIME__) +#else +#define ORBISLIB_BUILDSTRING ("[OrbisLib Daemon " stringify(ORBISLIB_MAJOR) "." stringify(ORBISLIB_MINOR) "] Build " stringify(ORBISLIB_BUILDVERSION) " " __DATE__ " " __TIME__) +#endif diff --git a/Playstation/OrbisLibAPI/build.bat b/Playstation/OrbisLibAPI/build.bat index cbe8743..e94a4a5 100644 --- a/Playstation/OrbisLibAPI/build.bat +++ b/Playstation/OrbisLibAPI/build.bat @@ -13,7 +13,7 @@ set outputOelf=%intdir%%targetname%.oelf Rem Compile object files for all the source files for %%f in (*.cpp) do ( - clang++ -cc1 -triple x86_64-scei-ps4-elf -I"%OO_PS4_TOOLCHAIN%\\include" -I"%OO_PS4_TOOLCHAIN%\\include\\c++\\v1" -I"..\\..\\External\\GoldHEN_Plugins_SDK\\include" -I"..\\..\\External\\ps4-libjbc" -I"..\\..\\External\\LibSQLite-ps4\\include" -DORBISLIB_DEBUG -emit-obj -o %intdir%\%%~nf.o %%~nf.cpp + clang++ -cc1 -triple x86_64-scei-ps4-elf -I"%OO_PS4_TOOLCHAIN%\\include" -I"%OO_PS4_TOOLCHAIN%\\include\\c++\\v1" -I"..\\..\\External\\GoldHEN_Plugins_SDK\\include" -I"..\\..\\External\\ps4-libjbc" -I"..\\..\\External\\LibSQLite-ps4\\include" -DORBISLIB_DEBUG -emit-obj -o %intdir%\%%~nf.o %%~nf.cpp -fcxx-exceptions -fexceptions ) Rem Get a list of object files for linking diff --git a/Playstation/OrbisLibAPI/main.cpp b/Playstation/OrbisLibAPI/main.cpp index 851d2ec..e56cd37 100644 --- a/Playstation/OrbisLibAPI/main.cpp +++ b/Playstation/OrbisLibAPI/main.cpp @@ -66,7 +66,7 @@ int main() klog("\n%s\n\n", ORBISLIB_BUILDSTRING); // Start up the thread pool. - ThreadPool::Init(20); + ThreadPool::Init(10); // Init a thread to monitor the system usage stats. // SystemMonitor::Init(); diff --git a/Playstation/OrbisToolbox-2.0/Version.h b/Playstation/OrbisToolbox-2.0/Version.h index 7c43139..b2a5aa1 100644 --- a/Playstation/OrbisToolbox-2.0/Version.h +++ b/Playstation/OrbisToolbox-2.0/Version.h @@ -1,11 +1,11 @@ -#pragma once -#define ORBIS_TOOLBOX_MAJOR 2 -#define ORBIS_TOOLBOX_MINOR 0 -#define ORBIS_TOOLBOX_BUILDVERSION 345 -#define stringify(a) stringify_(a) -#define stringify_(a) #a -#if defined(ORBIS_TOOLBOX_DEBUG) -#define ORBIS_TOOLBOX_BUILDSTRING ("[Orbis Toolbox " stringify(ORBIS_TOOLBOX_MAJOR) "." stringify(ORBIS_TOOLBOX_MINOR) "] Dev Build " stringify(ORBIS_TOOLBOX_BUILDVERSION) " " __DATE__ " " __TIME__) -#else -#define ORBIS_TOOLBOX_BUILDSTRING ("[Orbis Toolbox " stringify(ORBIS_TOOLBOX_MAJOR) "." stringify(ORBIS_TOOLBOX_MINOR) "] Build " stringify(ORBIS_TOOLBOX_BUILDVERSION) " " __DATE__ " " __TIME__) -#endif +#pragma once +#define ORBIS_TOOLBOX_MAJOR 2 +#define ORBIS_TOOLBOX_MINOR 0 +#define ORBIS_TOOLBOX_BUILDVERSION 346 +#define stringify(a) stringify_(a) +#define stringify_(a) #a +#if defined(ORBIS_TOOLBOX_DEBUG) +#define ORBIS_TOOLBOX_BUILDSTRING ("[Orbis Toolbox " stringify(ORBIS_TOOLBOX_MAJOR) "." stringify(ORBIS_TOOLBOX_MINOR) "] Dev Build " stringify(ORBIS_TOOLBOX_BUILDVERSION) " " __DATE__ " " __TIME__) +#else +#define ORBIS_TOOLBOX_BUILDSTRING ("[Orbis Toolbox " stringify(ORBIS_TOOLBOX_MAJOR) "." stringify(ORBIS_TOOLBOX_MINOR) "] Build " stringify(ORBIS_TOOLBOX_BUILDVERSION) " " __DATE__ " " __TIME__) +#endif diff --git a/Windows/Installer/BootstrapperSetup/Version.wxi b/Windows/Installer/BootstrapperSetup/Version.wxi index e5ce901..6810cc6 100644 --- a/Windows/Installer/BootstrapperSetup/Version.wxi +++ b/Windows/Installer/BootstrapperSetup/Version.wxi @@ -2,5 +2,5 @@ - + diff --git a/Windows/Installer/DummyInstaller/Generated/OrbisLibraryManager.wxs b/Windows/Installer/DummyInstaller/Generated/OrbisLibraryManager.wxs index 6765905..a63594f 100644 --- a/Windows/Installer/DummyInstaller/Generated/OrbisLibraryManager.wxs +++ b/Windows/Installer/DummyInstaller/Generated/OrbisLibraryManager.wxs @@ -7,25 +7,25 @@ - + - + - + - + - + - + - + @@ -52,82 +52,85 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + @@ -154,34 +157,34 @@ - + - + - + - + - + - + - + - + - + - + @@ -336,110 +339,110 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/Windows/Installer/DummyInstaller/Generated/OrbisNeighborhood.wxs b/Windows/Installer/DummyInstaller/Generated/OrbisNeighborhood.wxs index b56bb0a..d7f9fee 100644 --- a/Windows/Installer/DummyInstaller/Generated/OrbisNeighborhood.wxs +++ b/Windows/Installer/DummyInstaller/Generated/OrbisNeighborhood.wxs @@ -7,184 +7,184 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -211,211 +211,211 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -570,136 +570,136 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1790,1424 +1790,1424 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3362,136 +3362,136 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4582,1244 +4582,1244 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/Windows/Installer/DummyInstaller/Generated/OrbisPeeknPoke.wxs b/Windows/Installer/DummyInstaller/Generated/OrbisPeeknPoke.wxs index 4d9faec..ec57f5e 100644 --- a/Windows/Installer/DummyInstaller/Generated/OrbisPeeknPoke.wxs +++ b/Windows/Installer/DummyInstaller/Generated/OrbisPeeknPoke.wxs @@ -7,13 +7,13 @@ - + - + - + @@ -109,25 +109,25 @@ - + - + - + - + - + - + - + @@ -154,103 +154,103 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -405,110 +405,110 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/Windows/Installer/DummyInstaller/Generated/OrbisSuiteService.wxs b/Windows/Installer/DummyInstaller/Generated/OrbisSuiteService.wxs index d2aa086..9bb8a16 100644 --- a/Windows/Installer/DummyInstaller/Generated/OrbisSuiteService.wxs +++ b/Windows/Installer/DummyInstaller/Generated/OrbisSuiteService.wxs @@ -7,31 +7,31 @@ - + - + - + - + - + - + - + - + - + @@ -58,97 +58,97 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -175,37 +175,37 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -360,104 +360,104 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -484,43 +484,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1091,280 +1091,280 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/Windows/Libraries/OrbisLib2/Common/API/APIPackets.cs b/Windows/Libraries/OrbisLib2/Common/API/APIPackets.cs index aad02b8..8c4e0f0 100644 --- a/Windows/Libraries/OrbisLib2/Common/API/APIPackets.cs +++ b/Windows/Libraries/OrbisLib2/Common/API/APIPackets.cs @@ -131,7 +131,7 @@ namespace OrbisLib2.Common.API [StructLayout(LayoutKind.Sequential, Pack = 4, CharSet = CharSet.Ansi, Size = 8), Serializable] public struct APIPacket { - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)] public string PacketMagic; public int PacketVersion; public APICommands Command; diff --git a/Windows/Libraries/OrbisLib2/Common/Config.cs b/Windows/Libraries/OrbisLib2/Common/Config.cs index 3262e0a..6355c20 100644 --- a/Windows/Libraries/OrbisLib2/Common/Config.cs +++ b/Windows/Libraries/OrbisLib2/Common/Config.cs @@ -61,6 +61,6 @@ namespace OrbisLib2.Common /// /// The version of the packets used to communicate with the Target Console. /// - public static readonly int PacketVersion = 3; + public static readonly int PacketVersion = 4; } } diff --git a/Windows/OrbisNeighborHood/MVVM/View/AppListView.xaml.cs b/Windows/OrbisNeighborHood/MVVM/View/AppListView.xaml.cs index 658efb4..abdfa28 100644 --- a/Windows/OrbisNeighborHood/MVVM/View/AppListView.xaml.cs +++ b/Windows/OrbisNeighborHood/MVVM/View/AppListView.xaml.cs @@ -122,6 +122,9 @@ namespace OrbisNeighborHood.MVVM.View // Get the current app list. var currentTarget = TargetManager.SelectedTarget; + if (currentTarget == null) + continue; + var appList = currentTarget.Application.GetAppList(); // Check for adding apps. diff --git a/Windows/OrbisNeighborHood/Resources/BuildNumber.txt b/Windows/OrbisNeighborHood/Resources/BuildNumber.txt index 47fe54a..8933964 100644 --- a/Windows/OrbisNeighborHood/Resources/BuildNumber.txt +++ b/Windows/OrbisNeighborHood/Resources/BuildNumber.txt @@ -1 +1 @@ -2685 +2694 diff --git a/Windows/OrbisNeighborHood/Resources/BuildString.txt b/Windows/OrbisNeighborHood/Resources/BuildString.txt index 53172a6..bbc076a 100644 --- a/Windows/OrbisNeighborHood/Resources/BuildString.txt +++ b/Windows/OrbisNeighborHood/Resources/BuildString.txt @@ -1 +1 @@ -Version 3.0.2685 Debug Build Saturday February 18 2023 4:24 PM +Version 3.0.2694 Release Build Sunday February 19 2023 12:48 AM