]> git.saurik.com Git - apple/securityd.git/blobdiff - src/authhost.cpp
securityd-55199.3.tar.gz
[apple/securityd.git] / src / authhost.cpp
index 3ca8f54a0f5b83dda2f070e0da23be0867025ca2..049b04f0ff984b4956b4d342d74b7292e13b5b79 100644 (file)
@@ -74,6 +74,11 @@ Session &AuthHostInstance::session() const
        return referent<Session>();
 }
 
+bool AuthHostInstance::inDarkWake()
+{
+       return session().server().inDarkWake();
+}
+
 void
 AuthHostInstance::childAction()
 {
@@ -154,9 +159,12 @@ AuthHostInstance::lookup(SessionId jobId)
     /* PR-7483709 const */ uuid_t instanceId = UUID_INITIALIZER_FROM_SESSIONID(jobId);
     uuid_string_t s;
 
-    if ((mHostType == securityAgent) &&
-      !(session().attributes() & sessionHasGraphicAccess))
-        CssmError::throwMe(CSSM_ERRCODE_NO_USER_INTERACTION);
+    if ((mHostType == securityAgent)) {
+       if (!(session().attributes() & sessionHasGraphicAccess))
+           CssmError::throwMe(CSSM_ERRCODE_NO_USER_INTERACTION);
+       if (inDarkWake())
+           CssmError::throwMe(CSSM_ERRCODE_IN_DARK_WAKE);
+    }
     
     if (mHostType == securityAgent)
        serviceName = SECURITYAGENT_BOOTSTRAP_NAME_BASE;
@@ -181,9 +189,12 @@ Port AuthHostInstance::activate()
        StLock<Mutex> _(*this);
        if (state() != alive)
        {
-               if ((mHostType == securityAgent) && 
-                   !(session().attributes() & sessionHasGraphicAccess))
+               if ((mHostType == securityAgent)) {
+                   if (!(session().attributes() & sessionHasGraphicAccess))
                        CssmError::throwMe(CSSM_ERRCODE_NO_USER_INTERACTION);
+                   if (inDarkWake())
+                       CssmError::throwMe(CSSM_ERRCODE_IN_DARK_WAKE);
+               }
 
                fork();
                switch (ServerChild::state()) {