]> git.saurik.com Git - apple/security.git/blame - securityd/src/authhost.cpp
Security-59306.101.1.tar.gz
[apple/security.git] / securityd / src / authhost.cpp
CommitLineData
d8f41ccd
A
1/*
2 * Copyright (c) 2000-2007,2009-2010,2012 Apple Inc. All Rights Reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23
24#include <paths.h>
25#include <fcntl.h>
26#include "authhost.h"
27#include "server.h"
28#include <security_utilities/logging.h>
29#include <security_utilities/debugging.h>
d8f41ccd
A
30#include <bsm/audit.h>
31#include <bootstrap_priv.h>
32
33#include <grp.h>
34#include <pwd.h>
35#include <sys/types.h>
36#include <sys/sysctl.h>
37#include <syslog.h>
38#include <pthread.h>
39
40static pthread_once_t agent_cred_init = PTHREAD_ONCE_INIT;
41static gid_t agent_gid = 92;
42static uid_t agent_uid = 92;
43
fa7225c8 44static void initialize_agent_creds()
d8f41ccd
A
45{
46 struct passwd *agentUser = getpwnam("securityagent");
47 if (agentUser)
48 {
49 agent_uid = agentUser->pw_uid;
50 agent_gid = agentUser->pw_gid;
51 endpwent();
52 }
53}
54
fa7225c8 55AuthHostInstance::AuthHostInstance(Session &session)
d8f41ccd 56{
fa7225c8 57 secinfo("authhost", "authhost born (%p)", this);
d8f41ccd
A
58 referent(session);
59 session.addReference(*this);
fa7225c8 60 pthread_once(&agent_cred_init, initialize_agent_creds);
d8f41ccd
A
61}
62
63AuthHostInstance::~AuthHostInstance()
64{
fa7225c8 65 secinfo("authhost", "authhost died (%p)", this);
d8f41ccd
A
66}
67
68Session &AuthHostInstance::session() const
69{
70 return referent<Session>();
71}
72
73bool AuthHostInstance::inDarkWake()
74{
75 return session().server().inDarkWake();
76}
77
78void
79AuthHostInstance::childAction()
80{
fa7225c8 81 secinfo("AuthHostInstance", "authhostinstance not supported");
d8f41ccd
A
82 // Unconditional suicide follows.
83 _exit(1);
84}