1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// This file provides forward declarations for private XPC symbols.
#ifndef SANDBOX_MAC_XPC_H_
#define SANDBOX_MAC_XPC_H_
#include <AvailabilityMacros.h>
#include <mach/mach.h>
#include <bsm/libbsm.h>
#include <xpc/xpc.h>
#include "sandbox/sandbox_export.h"
// Declare private types.
extern "C" {
typedef struct _xpc_pipe_s* xpc_pipe_t;
} // extern "C"
#if defined(MAC_OS_X_VERSION_10_7) && \
MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7
// Redeclare methods that only exist on 10.7+ to suppress
// -Wpartial-availability warnings.
extern "C" {
void xpc_dictionary_set_int64(xpc_object_t xdict,
const char* key,
int64_t value);
void xpc_release(xpc_object_t object);
bool xpc_dictionary_get_bool(xpc_object_t xdict, const char* key);
int64_t xpc_dictionary_get_int64(xpc_object_t xdict, const char* key);
const char* xpc_dictionary_get_string(xpc_object_t xdict, const char* key);
uint64_t xpc_dictionary_get_uint64(xpc_object_t xdict, const char* key);
void xpc_dictionary_set_uint64(xpc_object_t xdict,
const char* key,
uint64_t value);
void xpc_dictionary_set_string(xpc_object_t xdict, const char* key,
const char* string);
xpc_object_t xpc_dictionary_create(const char* const* keys,
const xpc_object_t* values,
size_t count);
xpc_object_t xpc_dictionary_create_reply(xpc_object_t original);
xpc_object_t xpc_dictionary_get_value(xpc_object_t xdict, const char* key);
char* xpc_copy_description(xpc_object_t object);
} // extern "C"
#endif
// Signatures for private XPC functions.
extern "C" {
// Dictionary manipulation.
void xpc_dictionary_set_mach_send(xpc_object_t dictionary,
const char* name,
mach_port_t port);
void xpc_dictionary_get_audit_token(xpc_object_t dictionary,
audit_token_t* token);
// Raw object getters.
mach_port_t xpc_mach_send_get_right(xpc_object_t value);
// Pipe methods.
xpc_pipe_t xpc_pipe_create_from_port(mach_port_t port, int flags);
int xpc_pipe_receive(mach_port_t port, xpc_object_t* message);
int xpc_pipe_routine(xpc_pipe_t pipe,
xpc_object_t request,
xpc_object_t* reply);
int xpc_pipe_routine_reply(xpc_object_t reply);
int xpc_pipe_simpleroutine(xpc_pipe_t pipe, xpc_object_t message);
int xpc_pipe_routine_forward(xpc_pipe_t forward_to, xpc_object_t request);
} // extern "C"
#endif // SANDBOX_MAC_XPC_H_
|