From 8bca9c7a41502b09f7d9500cc0c150f2daf898d6 Mon Sep 17 00:00:00 2001
From: DavidXanatos <3890945+DavidXanatos@users.noreply.github.com>
Date: Sun, 21 May 2023 13:41:05 +0200
Subject: [PATCH] update
---
CHANGELOG.md | 1 +
Sandboxie/core/drv/session.c | 2 +-
SandboxiePlus/SandMan/SandMan.cpp | 16 ++++++++++------
3 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 99af1288..44367b94 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -20,6 +20,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
### Changed
- improved compatibility template for Privacy Enhanced box types (thanks offhub) [#2899](https://github.com/sandboxie-plus/Sandboxie/pull/2899)
+- improved signature error message [#2931](https://github.com/sandboxie-plus/Sandboxie/issues/2931)
### Fixed
- fixed Qt6 issues in ARM64 build
diff --git a/Sandboxie/core/drv/session.c b/Sandboxie/core/drv/session.c
index 389a4041..57c4f1f2 100644
--- a/Sandboxie/core/drv/session.c
+++ b/Sandboxie/core/drv/session.c
@@ -341,7 +341,7 @@ _FX NTSTATUS Session_Api_Leader(PROCESS *proc, ULONG64 *parms)
if (proc)
status = STATUS_NOT_IMPLEMENTED;
else if (!MyIsCallerSigned())
- status = STATUS_ACCESS_DENIED;
+ status = STATUS_INVALID_SIGNATURE; // STATUS_ACCESS_DENIED
else {
session = Session_Get(TRUE, -1, &irql);
diff --git a/SandboxiePlus/SandMan/SandMan.cpp b/SandboxiePlus/SandMan/SandMan.cpp
index 32f1c06f..2302d73d 100644
--- a/SandboxiePlus/SandMan/SandMan.cpp
+++ b/SandboxiePlus/SandMan/SandMan.cpp
@@ -2443,17 +2443,21 @@ SB_RESULT(void*) CSandMan::ConnectSbie()
SB_STATUS CSandMan::ConnectSbieImpl()
{
SB_STATUS Status = theAPI->Connect(g_PendingMessage.isEmpty(), theConf->GetBool("Options/UseInteractiveQueue", true));
-
- if (Status.GetStatus() == 0xC0000038L /*STATUS_DEVICE_ALREADY_ATTACHED*/) {
- OnLogMessage(tr("CAUTION: Another agent (probably SbieCtrl.exe) is already managing this Sandboxie session, please close it first and reconnect to take over."));
- return SB_OK;
- }
-
+
if (!g_PendingMessage.isEmpty()) {
OnMessage(g_PendingMessage);
PostQuitMessage(0);
}
+ if (Status.GetStatus() == 0xC0000038L /*STATUS_DEVICE_ALREADY_ATTACHED*/) {
+ OnLogMessage(tr("CAUTION: Another agent (probably SbieCtrl.exe) is already managing this Sandboxie session, please close it first and reconnect to take over."));
+ Status = SB_OK;
+ }
+ else if (Status.GetStatus() == 0xC000A000L /*STATUS_INVALID_SIGNATURE*/) {
+ QMessageBox::critical(this, "Sandboxie-Plus", tr("ERROR: The Sandboxie-Plus Manager (SandMan.exe) does not have a valid signature (SandMan.exe.sig). Please download a trusted release from the official Download page."));
+ Status = SB_OK;
+ }
+
return Status;
}