1/*
2 * IDENTIFICATION:
3 * stub generated Tue Apr 9 11:33:40 2019
4 * with a MiG generated by bootstrap_cmds-96.20.2.200.4
5 * OPTIONS:
6 * KernelUser
7 */
8#define __MIG_check__Reply__task_access_subsystem__ 1
9
10#include "task_access.h"
11
12
13#ifndef mig_internal
14#define mig_internal static __inline__
15#endif /* mig_internal */
16
17#ifndef mig_external
18#define mig_external
19#endif /* mig_external */
20
21#if !defined(__MigTypeCheck) && defined(TypeCheck)
22#define __MigTypeCheck TypeCheck /* Legacy setting */
23#endif /* !defined(__MigTypeCheck) */
24
25#if !defined(__MigKernelSpecificCode) && defined(_MIG_KERNEL_SPECIFIC_CODE_)
26#define __MigKernelSpecificCode _MIG_KERNEL_SPECIFIC_CODE_ /* Legacy setting */
27#endif /* !defined(__MigKernelSpecificCode) */
28
29#ifndef LimitCheck
30#define LimitCheck 0
31#endif /* LimitCheck */
32
33#ifndef min
34#define min(a,b) ( ((a) < (b))? (a): (b) )
35#endif /* min */
36
37#if !defined(_WALIGN_)
38#define _WALIGN_(x) (((x) + 3) & ~3)
39#endif /* !defined(_WALIGN_) */
40
41#if !defined(_WALIGNSZ_)
42#define _WALIGNSZ_(x) _WALIGN_(sizeof(x))
43#endif /* !defined(_WALIGNSZ_) */
44
45#ifndef UseStaticTemplates
46#define UseStaticTemplates 0
47#endif /* UseStaticTemplates */
48
49#ifndef __MachMsgErrorWithTimeout
50#define __MachMsgErrorWithTimeout(_R_) { \
51 switch (_R_) { \
52 case MACH_SEND_INVALID_DATA: \
53 case MACH_SEND_INVALID_DEST: \
54 case MACH_SEND_INVALID_HEADER: \
55 mig_put_reply_port(InP->Head.msgh_reply_port); \
56 break; \
57 case MACH_SEND_TIMED_OUT: \
58 case MACH_RCV_TIMED_OUT: \
59 default: \
60 mig_dealloc_reply_port(InP->Head.msgh_reply_port); \
61 } \
62}
63#endif /* __MachMsgErrorWithTimeout */
64
65#ifndef __MachMsgErrorWithoutTimeout
66#define __MachMsgErrorWithoutTimeout(_R_) { \
67 switch (_R_) { \
68 case MACH_SEND_INVALID_DATA: \
69 case MACH_SEND_INVALID_DEST: \
70 case MACH_SEND_INVALID_HEADER: \
71 mig_put_reply_port(InP->Head.msgh_reply_port); \
72 break; \
73 default: \
74 mig_dealloc_reply_port(InP->Head.msgh_reply_port); \
75 } \
76}
77#endif /* __MachMsgErrorWithoutTimeout */
78
79#ifndef __DeclareSendRpc
80#define __DeclareSendRpc(_NUM_, _NAME_)
81#endif /* __DeclareSendRpc */
82
83#ifndef __BeforeSendRpc
84#define __BeforeSendRpc(_NUM_, _NAME_)
85#endif /* __BeforeSendRpc */
86
87#ifndef __AfterSendRpc
88#define __AfterSendRpc(_NUM_, _NAME_)
89#endif /* __AfterSendRpc */
90
91#ifndef __DeclareSendSimple
92#define __DeclareSendSimple(_NUM_, _NAME_)
93#endif /* __DeclareSendSimple */
94
95#ifndef __BeforeSendSimple
96#define __BeforeSendSimple(_NUM_, _NAME_)
97#endif /* __BeforeSendSimple */
98
99#ifndef __AfterSendSimple
100#define __AfterSendSimple(_NUM_, _NAME_)
101#endif /* __AfterSendSimple */
102
103#define msgh_request_port msgh_remote_port
104#define msgh_reply_port msgh_local_port
105
106
107
108#if ( __MigTypeCheck )
109#if __MIG_check__Reply__task_access_subsystem__
110#if !defined(__MIG_check__Reply__check_task_access_t__defined)
111#define __MIG_check__Reply__check_task_access_t__defined
112
113mig_internal kern_return_t __MIG_check__Reply__check_task_access_t(__Reply__check_task_access_t *Out0P)
114{
115
116 typedef __Reply__check_task_access_t __Reply __attribute__((unused));
117 if (Out0P->Head.msgh_id != 27100) {
118 if (Out0P->Head.msgh_id == MACH_NOTIFY_SEND_ONCE)
119 { return MIG_SERVER_DIED; }
120 else
121 { return MIG_REPLY_MISMATCH; }
122 }
123
124#if __MigTypeCheck
125 if ((Out0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) ||
126 (Out0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Reply)))
127 { return MIG_TYPE_ERROR ; }
128#endif /* __MigTypeCheck */
129
130 {
131 return Out0P->RetCode;
132 }
133}
134#endif /* !defined(__MIG_check__Reply__check_task_access_t__defined) */
135#endif /* __MIG_check__Reply__task_access_subsystem__ */
136#endif /* ( __MigTypeCheck ) */
137
138
139/* Routine check_task_access */
140mig_external kern_return_t check_task_access
141(
142 mach_port_t task_access_port,
143 int32_t calling_pid,
144 uint32_t calling_gid,
145 int32_t target_pid
146)
147{
148
149#ifdef __MigPackStructs
150#pragma pack(4)
151#endif
152 typedef struct {
153 mach_msg_header_t Head;
154 NDR_record_t NDR;
155 int32_t calling_pid;
156 uint32_t calling_gid;
157 int32_t target_pid;
158 } Request __attribute__((unused));
159#ifdef __MigPackStructs
160#pragma pack()
161#endif
162
163#ifdef __MigPackStructs
164#pragma pack(4)
165#endif
166 typedef struct {
167 mach_msg_header_t Head;
168 NDR_record_t NDR;
169 kern_return_t RetCode;
170 mach_msg_trailer_t trailer;
171 } Reply __attribute__((unused));
172#ifdef __MigPackStructs
173#pragma pack()
174#endif
175
176#ifdef __MigPackStructs
177#pragma pack(4)
178#endif
179 typedef struct {
180 mach_msg_header_t Head;
181 NDR_record_t NDR;
182 kern_return_t RetCode;
183 } __Reply __attribute__((unused));
184#ifdef __MigPackStructs
185#pragma pack()
186#endif
187 /*
188 * typedef struct {
189 * mach_msg_header_t Head;
190 * NDR_record_t NDR;
191 * kern_return_t RetCode;
192 * } mig_reply_error_t;
193 */
194
195 union {
196 Request In;
197 Reply Out;
198 } Mess;
199
200 Request *InP = &Mess.In;
201 Reply *Out0P = &Mess.Out;
202
203 mach_msg_return_t msg_result;
204
205#ifdef __MIG_check__Reply__check_task_access_t__defined
206 kern_return_t check_result;
207#endif /* __MIG_check__Reply__check_task_access_t__defined */
208
209 __DeclareSendRpc(27000, "check_task_access")
210
211 InP->NDR = NDR_record;
212
213 InP->calling_pid = calling_pid;
214
215 InP->calling_gid = calling_gid;
216
217 InP->target_pid = target_pid;
218
219 InP->Head.msgh_bits =
220 MACH_MSGH_BITS(19, MACH_MSG_TYPE_MAKE_SEND_ONCE);
221 /* msgh_size passed as argument */
222 InP->Head.msgh_request_port = task_access_port;
223 InP->Head.msgh_reply_port = mig_get_reply_port();
224 InP->Head.msgh_id = 27000;
225 InP->Head.msgh_reserved = 0;
226
227 __BeforeSendRpc(27000, "check_task_access")
228#if (__MigKernelSpecificCode) || (_MIG_KERNELSPECIFIC_CODE_)
229 msg_result = mach_msg_rpc_from_kernel(&InP->Head, (mach_msg_size_t)sizeof(Request), (mach_msg_size_t)sizeof(Reply));
230#else
231 msg_result = mach_msg(&InP->Head, MACH_SEND_MSG|MACH_RCV_MSG|MACH_MSG_OPTION_NONE, (mach_msg_size_t)sizeof(Request), (mach_msg_size_t)sizeof(Reply), InP->Head.msgh_reply_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
232#endif /* __MigKernelSpecificCode */
233 __AfterSendRpc(27000, "check_task_access")
234 if (msg_result != MACH_MSG_SUCCESS) {
235 __MachMsgErrorWithoutTimeout(msg_result);
236 { return msg_result; }
237 }
238
239
240#if defined(__MIG_check__Reply__check_task_access_t__defined)
241 check_result = __MIG_check__Reply__check_task_access_t((__Reply__check_task_access_t *)Out0P);
242 if (check_result != MACH_MSG_SUCCESS)
243 { return check_result; }
244#endif /* defined(__MIG_check__Reply__check_task_access_t__defined) */
245
246 return KERN_SUCCESS;
247}
248
249#if ( __MigTypeCheck )
250#if __MIG_check__Reply__task_access_subsystem__
251#if !defined(__MIG_check__Reply__find_code_signature_t__defined)
252#define __MIG_check__Reply__find_code_signature_t__defined
253
254mig_internal kern_return_t __MIG_check__Reply__find_code_signature_t(__Reply__find_code_signature_t *Out0P)
255{
256
257 typedef __Reply__find_code_signature_t __Reply __attribute__((unused));
258 if (Out0P->Head.msgh_id != 27101) {
259 if (Out0P->Head.msgh_id == MACH_NOTIFY_SEND_ONCE)
260 { return MIG_SERVER_DIED; }
261 else
262 { return MIG_REPLY_MISMATCH; }
263 }
264
265#if __MigTypeCheck
266 if ((Out0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) ||
267 (Out0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Reply)))
268 { return MIG_TYPE_ERROR ; }
269#endif /* __MigTypeCheck */
270
271 {
272 return Out0P->RetCode;
273 }
274}
275#endif /* !defined(__MIG_check__Reply__find_code_signature_t__defined) */
276#endif /* __MIG_check__Reply__task_access_subsystem__ */
277#endif /* ( __MigTypeCheck ) */
278
279
280/* Routine find_code_signature */
281mig_external kern_return_t find_code_signature
282(
283 mach_port_t task_access_port,
284 int32_t new_pid
285)
286{
287
288#ifdef __MigPackStructs
289#pragma pack(4)
290#endif
291 typedef struct {
292 mach_msg_header_t Head;
293 NDR_record_t NDR;
294 int32_t new_pid;
295 } Request __attribute__((unused));
296#ifdef __MigPackStructs
297#pragma pack()
298#endif
299
300#ifdef __MigPackStructs
301#pragma pack(4)
302#endif
303 typedef struct {
304 mach_msg_header_t Head;
305 NDR_record_t NDR;
306 kern_return_t RetCode;
307 mach_msg_trailer_t trailer;
308 } Reply __attribute__((unused));
309#ifdef __MigPackStructs
310#pragma pack()
311#endif
312
313#ifdef __MigPackStructs
314#pragma pack(4)
315#endif
316 typedef struct {
317 mach_msg_header_t Head;
318 NDR_record_t NDR;
319 kern_return_t RetCode;
320 } __Reply __attribute__((unused));
321#ifdef __MigPackStructs
322#pragma pack()
323#endif
324 /*
325 * typedef struct {
326 * mach_msg_header_t Head;
327 * NDR_record_t NDR;
328 * kern_return_t RetCode;
329 * } mig_reply_error_t;
330 */
331
332 union {
333 Request In;
334 Reply Out;
335 } Mess;
336
337 Request *InP = &Mess.In;
338 Reply *Out0P = &Mess.Out;
339
340 mach_msg_return_t msg_result;
341
342#ifdef __MIG_check__Reply__find_code_signature_t__defined
343 kern_return_t check_result;
344#endif /* __MIG_check__Reply__find_code_signature_t__defined */
345
346 __DeclareSendRpc(27001, "find_code_signature")
347
348 InP->NDR = NDR_record;
349
350 InP->new_pid = new_pid;
351
352 InP->Head.msgh_bits =
353 MACH_MSGH_BITS(19, MACH_MSG_TYPE_MAKE_SEND_ONCE);
354 /* msgh_size passed as argument */
355 InP->Head.msgh_request_port = task_access_port;
356 InP->Head.msgh_reply_port = mig_get_reply_port();
357 InP->Head.msgh_id = 27001;
358 InP->Head.msgh_reserved = 0;
359
360 __BeforeSendRpc(27001, "find_code_signature")
361#if (__MigKernelSpecificCode) || (_MIG_KERNELSPECIFIC_CODE_)
362 msg_result = mach_msg_rpc_from_kernel(&InP->Head, (mach_msg_size_t)sizeof(Request), (mach_msg_size_t)sizeof(Reply));
363#else
364 msg_result = mach_msg(&InP->Head, MACH_SEND_MSG|MACH_RCV_MSG|MACH_MSG_OPTION_NONE, (mach_msg_size_t)sizeof(Request), (mach_msg_size_t)sizeof(Reply), InP->Head.msgh_reply_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
365#endif /* __MigKernelSpecificCode */
366 __AfterSendRpc(27001, "find_code_signature")
367 if (msg_result != MACH_MSG_SUCCESS) {
368 __MachMsgErrorWithoutTimeout(msg_result);
369 { return msg_result; }
370 }
371
372
373#if defined(__MIG_check__Reply__find_code_signature_t__defined)
374 check_result = __MIG_check__Reply__find_code_signature_t((__Reply__find_code_signature_t *)Out0P);
375 if (check_result != MACH_MSG_SUCCESS)
376 { return check_result; }
377#endif /* defined(__MIG_check__Reply__find_code_signature_t__defined) */
378
379 return KERN_SUCCESS;
380}
381