Merge pull request #15 from sean-jc/misc_attr

Set misc_attr for failing _create_enclave flows
It should be a bug for sgx_create_enclave API. The patch is tested and accepted.
This commit is contained in:
yuyuany 2016-10-10 16:00:03 +08:00 committed by GitHub
commit f4005be591
2 changed files with 9 additions and 11 deletions

View File

@ -58,6 +58,14 @@ extern "C" sgx_status_t sgx_create_enclave(const char *file_name, const int debu
file.name_len = (uint32_t)strlen(resolved_path);
ret = _create_enclave(!!debug, fd, file, NULL, launch_token, launch_token_updated, enclave_id, misc_attr);
if(SGX_SUCCESS != ret && misc_attr)
{
sgx_misc_attribute_t plat_cap;
memset(&plat_cap, 0, sizeof(plat_cap));
get_enclave_creator()->get_plat_cap(&plat_cap);
memcpy_s(misc_attr, sizeof(sgx_misc_attribute_t), &plat_cap, sizeof(sgx_misc_attribute_t));
}
close(fd);
return ret;

View File

@ -641,7 +641,7 @@ int CLoader::load_enclave(SGXLaunchToken *lc, int debug, const metadata_t *metad
}
ret = build_image(lc, &sgx_misc_attr.secs_attr, prd_css_file, &sgx_misc_attr);
//return platform capability if fail. Otherwise, return secs.attr.
//Update misc_attr with secs.attr upon success.
if(SGX_SUCCESS == ret)
{
if(misc_attr)
@ -651,16 +651,6 @@ int CLoader::load_enclave(SGXLaunchToken *lc, int debug, const metadata_t *metad
misc_attr->secs_attr.flags |= SGX_FLAGS_INITTED;
}
}
else
{
if(misc_attr)
{
sgx_misc_attribute_t plat_cap;
memset(&plat_cap, 0, sizeof(plat_cap));
get_enclave_creator()->get_plat_cap(&plat_cap);
memcpy_s(misc_attr, sizeof(sgx_misc_attribute_t), &plat_cap, sizeof(sgx_misc_attribute_t));
}
}
return ret;
}