Index: util/mach/exc_server_variants.cc |
diff --git a/util/mach/exc_server_variants.cc b/util/mach/exc_server_variants.cc |
index 4408eeb49e06d2e754fd7889ec45d708acc71629..34d7f9603f872acc34a5dab4d3e195f2c3bbb98a 100644 |
--- a/util/mach/exc_server_variants.cc |
+++ b/util/mach/exc_server_variants.cc |
@@ -196,6 +196,9 @@ bool ExcServer::MachMessageServerFunction(const mach_msg_header_t* in_header, |
bool* destroy_complex_request) { |
PrepareMIGReplyFromRequest(in_header, out_header); |
+ const mach_msg_trailer_t* in_trailer = |
+ MachMessageTrailerFromHeader(in_header); |
+ |
switch (in_header->msgh_id) { |
case kMachMessageIDExceptionRaise: { |
// exception_raise(), catch_exception_raise(). |
@@ -216,6 +219,7 @@ bool ExcServer::MachMessageServerFunction(const mach_msg_header_t* in_header, |
in_request->exception, |
in_request->code, |
in_request->codeCnt, |
+ in_trailer, |
destroy_complex_request); |
if (out_reply->RetCode != KERN_SUCCESS) { |
return true; |
@@ -253,7 +257,8 @@ bool ExcServer::MachMessageServerFunction(const mach_msg_header_t* in_header, |
in_request_1->old_state, |
in_request_1->old_stateCnt, |
out_reply->new_state, |
- &out_reply->new_stateCnt); |
+ &out_reply->new_stateCnt, |
+ in_trailer); |
if (out_reply->RetCode != KERN_SUCCESS) { |
return true; |
} |
@@ -296,6 +301,7 @@ bool ExcServer::MachMessageServerFunction(const mach_msg_header_t* in_header, |
in_request_1->old_stateCnt, |
out_reply->new_state, |
&out_reply->new_stateCnt, |
+ in_trailer, |
destroy_complex_request); |
if (out_reply->RetCode != KERN_SUCCESS) { |
return true; |
@@ -331,6 +337,9 @@ bool MachExcServer::MachMessageServerFunction( |
bool* destroy_complex_request) { |
PrepareMIGReplyFromRequest(in_header, out_header); |
+ const mach_msg_trailer_t* in_trailer = |
+ MachMessageTrailerFromHeader(in_header); |
+ |
switch (in_header->msgh_id) { |
case kMachMessageIDMachExceptionRaise: { |
// mach_exception_raise(), catch_mach_exception_raise(). |
@@ -351,6 +360,7 @@ bool MachExcServer::MachMessageServerFunction( |
in_request->exception, |
in_request->code, |
in_request->codeCnt, |
+ in_trailer, |
destroy_complex_request); |
if (out_reply->RetCode != KERN_SUCCESS) { |
return true; |
@@ -388,7 +398,8 @@ bool MachExcServer::MachMessageServerFunction( |
in_request_1->old_state, |
in_request_1->old_stateCnt, |
out_reply->new_state, |
- &out_reply->new_stateCnt); |
+ &out_reply->new_stateCnt, |
+ in_trailer); |
if (out_reply->RetCode != KERN_SUCCESS) { |
return true; |
} |
@@ -431,6 +442,7 @@ bool MachExcServer::MachMessageServerFunction( |
in_request_1->old_stateCnt, |
out_reply->new_state, |
&out_reply->new_stateCnt, |
+ in_trailer, |
destroy_complex_request); |
if (out_reply->RetCode != KERN_SUCCESS) { |
return true; |
@@ -469,6 +481,7 @@ kern_return_t SimplifiedExcServer::CatchExceptionRaise( |
exception_type_t exception, |
const exception_data_type_t* code, |
mach_msg_type_number_t code_count, |
+ const mach_msg_trailer_t* trailer, |
bool* destroy_request) { |
thread_state_flavor_t flavor = THREAD_STATE_NONE; |
mach_msg_type_number_t new_state_count = 0; |
@@ -484,6 +497,7 @@ kern_return_t SimplifiedExcServer::CatchExceptionRaise( |
0, |
nullptr, |
&new_state_count, |
+ trailer, |
destroy_request); |
} |
@@ -496,7 +510,8 @@ kern_return_t SimplifiedExcServer::CatchExceptionRaiseState( |
const natural_t* old_state, |
mach_msg_type_number_t old_state_count, |
thread_state_t new_state, |
- mach_msg_type_number_t* new_state_count) { |
+ mach_msg_type_number_t* new_state_count, |
+ const mach_msg_trailer_t* trailer) { |
bool destroy_complex_request = false; |
return interface_->CatchException(EXCEPTION_STATE, |
exception_port, |
@@ -510,6 +525,7 @@ kern_return_t SimplifiedExcServer::CatchExceptionRaiseState( |
old_state_count, |
new_state, |
new_state_count, |
+ trailer, |
&destroy_complex_request); |
} |
@@ -525,6 +541,7 @@ kern_return_t SimplifiedExcServer::CatchExceptionRaiseStateIdentity( |
mach_msg_type_number_t old_state_count, |
thread_state_t new_state, |
mach_msg_type_number_t* new_state_count, |
+ const mach_msg_trailer_t* trailer, |
bool* destroy_request) { |
return interface_->CatchException(EXCEPTION_STATE_IDENTITY, |
exception_port, |
@@ -538,6 +555,7 @@ kern_return_t SimplifiedExcServer::CatchExceptionRaiseStateIdentity( |
old_state_count, |
new_state, |
new_state_count, |
+ trailer, |
destroy_request); |
} |
@@ -555,6 +573,7 @@ kern_return_t SimplifiedMachExcServer::CatchMachExceptionRaise( |
exception_type_t exception, |
const mach_exception_data_type_t* code, |
mach_msg_type_number_t code_count, |
+ const mach_msg_trailer_t* trailer, |
bool* destroy_request) { |
thread_state_flavor_t flavor = THREAD_STATE_NONE; |
mach_msg_type_number_t new_state_count = 0; |
@@ -571,6 +590,7 @@ kern_return_t SimplifiedMachExcServer::CatchMachExceptionRaise( |
0, |
nullptr, |
&new_state_count, |
+ trailer, |
destroy_request); |
} |
@@ -583,7 +603,8 @@ kern_return_t SimplifiedMachExcServer::CatchMachExceptionRaiseState( |
const natural_t* old_state, |
mach_msg_type_number_t old_state_count, |
thread_state_t new_state, |
- mach_msg_type_number_t* new_state_count) { |
+ mach_msg_type_number_t* new_state_count, |
+ const mach_msg_trailer_t* trailer) { |
bool destroy_complex_request = false; |
return interface_->CatchMachException(EXCEPTION_STATE | MACH_EXCEPTION_CODES, |
exception_port, |
@@ -597,6 +618,7 @@ kern_return_t SimplifiedMachExcServer::CatchMachExceptionRaiseState( |
old_state_count, |
new_state, |
new_state_count, |
+ trailer, |
&destroy_complex_request); |
} |
@@ -612,6 +634,7 @@ kern_return_t SimplifiedMachExcServer::CatchMachExceptionRaiseStateIdentity( |
mach_msg_type_number_t old_state_count, |
thread_state_t new_state, |
mach_msg_type_number_t* new_state_count, |
+ const mach_msg_trailer_t* trailer, |
bool* destroy_request) { |
return interface_->CatchMachException( |
EXCEPTION_STATE_IDENTITY | MACH_EXCEPTION_CODES, |
@@ -626,6 +649,7 @@ kern_return_t SimplifiedMachExcServer::CatchMachExceptionRaiseStateIdentity( |
old_state_count, |
new_state, |
new_state_count, |
+ trailer, |
destroy_request); |
} |
@@ -686,6 +710,7 @@ kern_return_t UniversalMachExcServer::CatchException( |
mach_msg_type_number_t old_state_count, |
thread_state_t new_state, |
mach_msg_type_number_t* new_state_count, |
+ const mach_msg_trailer_t* trailer, |
bool* destroy_complex_request) { |
std::vector<mach_exception_data_type_t> mach_codes; |
mach_codes.reserve(code_count); |
@@ -705,6 +730,7 @@ kern_return_t UniversalMachExcServer::CatchException( |
old_state_count, |
new_state, |
new_state_count, |
+ trailer, |
destroy_complex_request); |
} |