labyrinth-ssr opened a new issue, #441:
URL: https://github.com/apache/incubator-teaclave-sgx-sdk/issues/441

   
https://github.com/apache/incubator-teaclave-sgx-sdk/blob/3c903bdac4e503dd27b9b1f761c4abfc55f2464c/samplecode/localattestation/attestation/src/func.rs#L144-L145
   
https://github.com/apache/incubator-teaclave-sgx-sdk/blob/3c903bdac4e503dd27b9b1f761c4abfc55f2464c/samplecode/dcap-pckretrieval/qpl/src/lib.rs#L138
   
   with `Box::into_raw()`, the pointee is on the heap. Multiple assignments 
will cause leak of the old value.
   
   Probable fix is like:
   If `session_request_safe` should only be called once, adding an Atomic to 
guarantee assigning only once.
   ```Rust
   const UNINITIALIZED: usize = 0;
   const INITIALIZING: usize = 1;
   const INITIALIZED: usize = 2;
   static GLOBAL_INIT: AtomicUsize = AtomicUsize::new(UNINITIALIZED);
   pub struct SetGlobalDefaultError {
       _no_construct: (),
   }
   
   // in `session_request_safe`
          if GLOBAL_INIT
                   .compare_exchange(
                       UNINITIALIZED,
                       INITIALIZING,
                       Ordering::SeqCst,
                       Ordering::SeqCst,
                   )
                   .is_ok()
               {
                   let ptr = Box::into_raw(Box::new(session_info));
                   *session_ptr = ptr as * mut _ as usize;
               }
   ```
   Otherwise add the else branch:
   ```Rust
              else {
                 drop(Box::from_raw(*session_ptr));
                 let ptr = Box::into_raw(Box::new(session_info));
                 *session_ptr = ptr as * mut _ as usize;
             }
   
   ```
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@teaclave.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@teaclave.apache.org
For additional commands, e-mail: notifications-h...@teaclave.apache.org

Reply via email to