Index: src/trusted/service_runtime/nacl_syscall_common.c |
diff --git a/src/trusted/service_runtime/nacl_syscall_common.c b/src/trusted/service_runtime/nacl_syscall_common.c |
index 916b10435e433734f315dad74f01ea642c7df8ed..4862935a83de109fdbeba8d53b8343b07c55c62b 100644 |
--- a/src/trusted/service_runtime/nacl_syscall_common.c |
+++ b/src/trusted/service_runtime/nacl_syscall_common.c |
@@ -1518,6 +1518,7 @@ int32_t NaClSysMmapIntern(struct NaClApp *nap, |
*/ |
uintptr_t image_sys_addr; |
NaClValidationStatus validator_status = NaClValidationFailed; |
+ struct NaClValidationMetadata metadata; |
int sys_ret; /* syscall return convention */ |
int ret; |
@@ -1554,17 +1555,8 @@ int32_t NaClSysMmapIntern(struct NaClApp *nap, |
goto cleanup; |
} |
- /* |
- * TODO(bsy): when ncbray provides validation cache metadata |
- * interface, plumb this through here. We need to extract the |
- * descriptor metadata as a bag of bits via NACL_VTBL(NaClDesc, |
- * ndp)->GetMetadata(...), possibly deserialize its contents |
- * using a validation cache provided function into a struct |
- * NaClValidationMetadata object, and pass it through here, as |
- * well as destroying the metadata object etc. |
- */ |
- |
/* Ask validator / validation cache */ |
+ MetadataFromNaClDescCtor(&metadata, ndp); |
validator_status = NACL_FI("MMAP_FORCE_MMAP_VALIDATION_FAIL", |
(*nap->validator-> |
Validate)(usraddr, |
@@ -1573,11 +1565,12 @@ int32_t NaClSysMmapIntern(struct NaClApp *nap, |
0, /* stubout_mode: no */ |
1, /* readonly_text: yes */ |
nap->cpu_features, |
- NULL, /* metadata */ |
+ &metadata, |
nap->validation_cache), |
NaClValidationFailed); |
NaClLog(3, "NaClSysMmap: prot_exec, validator_status %d\n", |
validator_status); |
+ MetadataDtor(&metadata); |
if (NaClValidationSucceeded == validator_status) { |
/* |