Преглед на файлове

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.
yuyuany преди 7 години
родител
ревизия
f4005be591
променени са 2 файла, в които са добавени 9 реда и са изтрити 11 реда
  1. 8 0
      psw/urts/linux/urts.cpp
  2. 1 11
      psw/urts/loader.cpp

+ 8 - 0
psw/urts/linux/urts.cpp

@@ -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;

+ 1 - 11
psw/urts/loader.cpp

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