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); |
} |