@@ -75,7 +75,7 @@ static std::map<void*, int> s_hfile; //enclave file handles for drive
75
75
static std::map<void *, size_t > s_enclave_size;
76
76
static std::map<void *, bool > s_enclave_init;
77
77
static std::map<void *, sgx_attributes_t > s_secs_attr;
78
- static std::map<void *, enclave_elrange_t * >s_enclave_elrange_map;
78
+ static std::map<void *, enclave_elrange_t >s_enclave_elrange_map;
79
79
80
80
typedef struct _mem_region_t {
81
81
void * addr;
@@ -177,9 +177,9 @@ static bool get_elrange_from_base_address(void* base_address, enclave_elrange_t*
177
177
{
178
178
if (enclave_elrange != NULL )
179
179
{
180
- enclave_elrange->elrange_size = s_enclave_elrange_map[base_address]-> elrange_size ;
181
- enclave_elrange->elrange_start_address = s_enclave_elrange_map[base_address]-> elrange_start_address ;
182
- enclave_elrange->enclave_image_address = s_enclave_elrange_map[base_address]-> enclave_image_address ;
180
+ enclave_elrange->elrange_size = s_enclave_elrange_map[base_address]. elrange_size ;
181
+ enclave_elrange->elrange_start_address = s_enclave_elrange_map[base_address]. elrange_start_address ;
182
+ enclave_elrange->enclave_image_address = s_enclave_elrange_map[base_address]. enclave_image_address ;
183
183
}
184
184
return true ;
185
185
}
@@ -235,20 +235,10 @@ static void close_sofile(void)
235
235
}
236
236
237
237
238
- static void release_enclave_elrange_map ()
239
- {
240
- for (auto &res:s_enclave_elrange_map)
241
- {
242
- auto elrange = res.second ;
243
- delete elrange;
244
- elrange = NULL ;
245
- }
246
- }
247
238
static void __attribute__ ((destructor)) enclave_fini(void )
248
239
{
249
240
close_device ();
250
241
close_sofile ();
251
- release_enclave_elrange_map ();
252
242
}
253
243
254
244
static uint32_t error_driver2api (int driver_error, int err_no)
@@ -788,24 +778,9 @@ extern "C" void* COMM_API enclave_create_ex(
788
778
s_enclave_mem_region[enclave_base].prot = 0 ;
789
779
if (enclave_elrange != NULL )
790
780
{
791
- enclave_elrange_t *tmp_enclave_elrange = new (std::nothrow) enclave_elrange_t ;
792
- if (tmp_enclave_elrange == NULL )
793
- {
794
- if (enclave_error)
795
- {
796
- *enclave_error = ENCLAVE_OUT_OF_MEMORY;
797
- }
798
-
799
- // if in-kernel driver then close the file handle
800
- if (s_driver_type == SGX_DRIVER_IN_KERNEL)
801
- {
802
- close_file (&hdevice_temp);
803
- }
804
- munmap (enclave_base, virtual_size);
805
- return NULL ;
806
- }
807
- memset (tmp_enclave_elrange, 0 , sizeof (enclave_elrange_t ));
808
- if (memcpy_s (tmp_enclave_elrange, sizeof (enclave_elrange_t ), enclave_elrange, sizeof (enclave_elrange_t )))
781
+ enclave_elrange_t tmp_enclave_elrange;
782
+ memset (&tmp_enclave_elrange, 0 , sizeof (enclave_elrange_t ));
783
+ if (memcpy_s (&tmp_enclave_elrange, sizeof (enclave_elrange_t ), enclave_elrange, sizeof (enclave_elrange_t )))
809
784
{
810
785
if (enclave_error)
811
786
{
@@ -1285,13 +1260,7 @@ extern "C" bool COMM_API enclave_delete(
1285
1260
1286
1261
if (s_enclave_elrange_map.count (base_address) != 0 )
1287
1262
{
1288
- enclave_elrange_t *enclave_elrange = s_enclave_elrange_map[base_address];
1289
- if (enclave_elrange != NULL )
1290
- {
1291
- s_enclave_elrange_map.erase (base_address);
1292
- delete enclave_elrange;
1293
- enclave_elrange = NULL ;
1294
- }
1263
+ s_enclave_elrange_map.erase (base_address);
1295
1264
}
1296
1265
}
1297
1266
0 commit comments