Externe SV-Objekt nur fuer nicht-EM+ fragen.
Das SV-Objekt wird gefragt, ob der Zugriff erlaubt ist.
Dieses erfolgt fuer EM+ aber nur, wenn der CHANNELD selber
das SV-Objekt ist, damit nicht beliebige SV-Objekt EMs den
Zugriff verweigern koennen. Ebenen mit CHANNELD als SV
koennen aber natuerlich auch EM+ Zugriff verweigern.
Change-Id: I479ed28c69cbfd554eaf0f557ab10e6d89ef2c8e
diff --git a/p/daemon/channeld.c b/p/daemon/channeld.c
index 122f37a..3ada61c 100644
--- a/p/daemon/channeld.c
+++ b/p/daemon/channeld.c
@@ -716,6 +716,14 @@
if (!ACC_CLOSURE(ch))
return 1;
+ // Das SV-Objekt wird gefragt, ob der Zugriff erlaubt ist. Dieses erfolgt
+ // fuer EM+ aber nur, wenn der CHANNELD selber das SV-Objekt ist, damit
+ // nicht beliebige SV-Objekt EMs den Zugriff verweigern koennen. Ebenen mit
+ // CHANNELD als SV koennen aber natuerlich auch EM+ Zugriff verweigern.
+ if (IS_ARCH(previous_object(1))
+ && find_object(MASTER_OB(ch)) != this_object())
+ return 1;
+
return funcall(ACC_CLOSURE(ch), ch, pl, cmd, &txt);
}