Fix return origin in invoke command 33/170133/4
authorKrzysztof Dynowski <k.dynowski@samsung.com>
Tue, 13 Feb 2018 09:17:13 +0000 (10:17 +0100)
committerKrzysztof Dynowski <k.dynowski@samsung.com>
Wed, 21 Feb 2018 15:55:44 +0000 (16:55 +0100)
Change-Id: If392e598ff6f3accec83c639a868eb3ba895c09c

TEECLib/src/teec_api.c
TEEStub/TACommands/CommandInvoke.cpp
simulatordaemon/src/ConnectionSession.cpp

index cb77a74..3ceee06 100644 (file)
@@ -1363,6 +1363,11 @@ TEEC_Result TEEC_InvokeCommand(TEEC_Session *session, uint32_t commandID,
 
        memset(tmpSharedMem, 0x0, sizeof(tmpSharedMem));
 
+       // Set returnOrigin
+       if (returnOrigin) {
+               *returnOrigin = TEEC_ORIGIN_API;
+       }
+
        // Check if Session is valid
        if (!session) {
                LOGE(TEEC_LIB, "NULL session");
@@ -1396,12 +1401,7 @@ TEEC_Result TEEC_InvokeCommand(TEEC_Session *session, uint32_t commandID,
         */
        memset(&ic, 0x00, sizeof(InvokeCommandData));
        memset(&op, 0x00, sizeof(OperationData));
-
-       // Set returnOrigin
-       if (returnOrigin) {
-               *returnOrigin = TEEC_ORIGIN_API;
-               ic.returnOrigin = *returnOrigin;
-       } else ic.returnOrigin = 0x00;
+       ic.returnOrigin = TEEC_ORIGIN_API;
 
        if (operation) {
                result = preProcessOperation(session, operation, &op, tmpSharedMem);
@@ -1454,6 +1454,8 @@ TEEC_Result TEEC_InvokeCommand(TEEC_Session *session, uint32_t commandID,
                return result;
        }
 
+       LOGE(TEEC_LIB, "sendCommand to Simulator Daemon succes, origin=%d", ic.returnOrigin);
+
        if (returnOrigin) *returnOrigin = ic.returnOrigin;
 
        result = ic.returnValue;
index 1844bb6..0bd908a 100644 (file)
@@ -57,19 +57,19 @@ TEE_Result CommandInvoke::execute() {
        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_InvokeCommandEntryPoint(sessionContext,
                    data.commandID, data.op.paramTypes, data.op.params);
-               LOGD(TEE_STUB, "TA_InvokeCommandEntryPoint done");
+               LOGD(TEE_STUB, "TA_InvokeCommandEntryPoint done, data.origin = %d", data.returnOrigin);
        } 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;
index 8fadf2f..97d7304 100644 (file)
@@ -160,10 +160,7 @@ void ConnectionSession::handleRead(const boost::system::error_code& error,
                        } //case
                } //switch
        } else {
-               LOGE(SIM_DAEMON, "Error in reading from CA");
-               LOGE(SIM_DAEMON, "Response returned with error code %d", error.value());
-               LOGE(SIM_DAEMON, "Response returned with error code %s",
-                   error.category().name());
+               LOGE(SIM_DAEMON, "Error in reading from CA %s(%d)", error.category().name(), error.value());
                // Call the TEEContext object to cleanup
                FinalizeContextData data;
                data.contextID = 0;