| Index: src/trusted/validator_ragel/dfa_validate_64.c
|
| diff --git a/src/trusted/validator_ragel/dfa_validate_64.c b/src/trusted/validator_ragel/dfa_validate_64.c
|
| index c5e5bd9469cf8f19369fb8b2f829bd15b865e8e1..53f6d6634d1901c4c6f1eb7490e4b7e237d91844 100644
|
| --- a/src/trusted/validator_ragel/dfa_validate_64.c
|
| +++ b/src/trusted/validator_ragel/dfa_validate_64.c
|
| @@ -30,6 +30,7 @@ static NaClValidationStatus ApplyDfaValidator_x86_64(
|
| uint8_t *data,
|
| size_t size,
|
| int stubout_mode,
|
| + int pnacl_mode,
|
| int readonly_text,
|
| const NaClCPUFeatures *f,
|
| const struct NaClValidationMetadata *metadata,
|
| @@ -37,8 +38,9 @@ static NaClValidationStatus ApplyDfaValidator_x86_64(
|
| /* TODO(jfb) Use a safe cast here. */
|
| NaClCPUFeaturesX86 *cpu_features = (NaClCPUFeaturesX86 *) f;
|
| enum NaClValidationStatus status = NaClValidationFailed;
|
| - int did_stubout = 0;
|
| void *query = NULL;
|
| + struct ForbidRewriteCallbackData callback_data;
|
| + callback_data.pnacl_mode = pnacl_mode;
|
| UNREFERENCED_PARAMETER(guest_addr);
|
|
|
| if (stubout_mode)
|
| @@ -67,13 +69,13 @@ static NaClValidationStatus ApplyDfaValidator_x86_64(
|
|
|
| if (readonly_text) {
|
| if (ValidateChunkAMD64(data, size, 0 /*options*/, cpu_features,
|
| - NaClDfaProcessValidationError,
|
| - NULL))
|
| + NaClDfaProcessValidationError,
|
| + NULL))
|
| status = NaClValidationSucceeded;
|
| } else {
|
| if (ValidateChunkAMD64(data, size, 0 /*options*/, cpu_features,
|
| - NaClDfaStubOutCPUUnsupportedInstruction,
|
| - &did_stubout))
|
| + NaClDfaForbidOrRewriteInstruction,
|
| + &callback_data))
|
| status = NaClValidationSucceeded;
|
| }
|
|
|
| @@ -82,7 +84,7 @@ static NaClValidationStatus ApplyDfaValidator_x86_64(
|
|
|
| /* Cache the result if validation succeeded and the code was not modified. */
|
| if (query != NULL) {
|
| - if (status == NaClValidationSucceeded && did_stubout == 0)
|
| + if (status == NaClValidationSucceeded && callback_data.did_rewrite == 0)
|
| cache->SetKnownToValidate(query);
|
| cache->DestroyQuery(query);
|
| }
|
|
|