Fix an issue with loader not handling implicit manifests

This commit is contained in:
Don Porter
2017-04-07 12:35:58 -04:00
parent 88162e9679
commit 01d23117bd
+29
View File
@@ -347,6 +347,35 @@ has_manifest:
}
}
/* If we still don't have an exec in the manifest, but we have a manifest
* try implicitly from the manifest name */
if ((!exec_handle) && manifest_uri) {
size_t manifest_strlen = strlen(manifest_uri);
size_t exec_strlen = manifest_strlen - 9;
int success = 0;
// Try .manifest
if (strcmp_static(&manifest_uri[exec_strlen], ".manifest")) {
success = 1;
} else {
exec_strlen -= 4;
if (strcmp_static(&manifest_uri[exec_strlen], ".manifest.sgx")) {
success = 1;
}
}
if (success) {
exec_uri = malloc(exec_strlen + 1);
if (!exec_uri)
init_fail(-PAL_ERROR_NOMEM, "Cannot allocate URI buf");
memcpy (exec_uri, manifest_uri, exec_strlen);
exec_uri[exec_strlen] = '\0';
ret = _DkStreamOpen(&exec_handle, exec_uri, PAL_ACCESS_RDONLY,
0, 0, 0);
if (ret < 0)
init_fail(-ret, "cannot open executable");
}
}
/* must be a ELF */
if (exec_handle && check_elf_object(exec_handle) < 0)
init_fail(PAL_ERROR_INVAL, "executable is not a ELF binary");