Fix return origin in open command 45/170845/4
authorKrzysztof Dynowski <k.dynowski@samsung.com>
Thu, 22 Feb 2018 14:47:20 +0000 (15:47 +0100)
committerKrzysztof Dynowski <k.dynowski@samsung.com>
Tue, 27 Feb 2018 13:29:23 +0000 (14:29 +0100)
Change-Id: Iddc7ede6fe28fee099a0e33bb2e786461266fffc

TEECLib/src/teec_api.c
TEEStub/TACommands/CommandOpenSession.cpp

index 3ceee06..cd887ad 100644 (file)
@@ -1098,6 +1098,11 @@ TEEC_Result TEEC_OpenSession(TEEC_Context *context, TEEC_Session *session,
 
        memset(tmpSharedMem, 0x0, sizeof(tmpSharedMem));
 
+       // Set returnOrigin
+       if (returnOrigin) {
+               *returnOrigin = TEEC_ORIGIN_API;
+       }
+
        // Check if the context, session and UUID is valid
        if (!session || !context || !destination) {
                LOGE(TEEC_LIB, "Invalid input parameters");
@@ -1123,12 +1128,7 @@ TEEC_Result TEEC_OpenSession(TEEC_Context *context, TEEC_Session *session,
         */
        memset(&os, 0x00, sizeof(OpenSessionData));
        memset(&op, 0x00, sizeof(OperationData));
-
-       // Set returnOrigin
-       if (returnOrigin) {
-               *returnOrigin = TEEC_ORIGIN_API;
-               os.returnOrigin = *returnOrigin;
-       } else os.returnOrigin = 0x00;
+       os.returnOrigin = TEEC_ORIGIN_API;
 
        // Update Context ID
        os.contextID = context_imp->contextID;
index 4d24654..7a8eddb 100644 (file)
@@ -52,19 +52,19 @@ TEE_Result CommandOpenSession::execute() {
        // If param. type is of memory reference type then allocate shared memory
        bool sharedResult = true;
        TOGGLE_PROPERTY_ACCESS;
+       data.returnOrigin = TEE_ORIGIN_TEE;
        sharedResult = SharedMemoryMap::allocateSharedMemory(data.op);
        if (sharedResult) {
+               data.returnOrigin = TEE_ORIGIN_TRUSTED_APP;
                data.returnValue = TA_OpenSessionEntryPoint(data.op.paramTypes,
                    data.op.params, &sessionContext);
                LOGD(TEE_STUB, "TA_OpenSessionEntryPoint done");
        } else {
-               data.returnOrigin = TEE_ORIGIN_TRUSTED_APP;
                data.returnValue = TEE_ERROR_OUT_OF_MEMORY;
        }
        sharedResult = SharedMemoryMap::deleteSharedMemory(data.op);
        if (!sharedResult) {
-               data.returnOrigin = TEE_ORIGIN_TRUSTED_APP;
-               data.returnValue = TEE_ERROR_OUT_OF_MEMORY;
+               LOGE(TEE_STUB, "deleteSharedMemory failed");
        }
        TOGGLE_PROPERTY_ACCESS;
        return data.returnValue;