From: Inho Kim Date: Mon, 20 Nov 2017 10:48:42 +0000 (+0900) Subject: Replace pre/postprocess_operation as a function X-Git-Tag: submit/tizen/20180412.092951~6 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F05%2F174805%2F4;p=platform%2Fcore%2Fsecurity%2Ftef-simulator.git Replace pre/postprocess_operation as a function Change-Id: If651518a71bbaf7b6945e50b78e6b77c118d3462 --- diff --git a/ssflib/src/ssf_taentrypoint.cpp b/ssflib/src/ssf_taentrypoint.cpp index ac9c859..adee755 100644 --- a/ssflib/src/ssf_taentrypoint.cpp +++ b/ssflib/src/ssf_taentrypoint.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2015-2017 Samsung Electronics Co., Ltd All Rights Reserved + * Copyright (c) 2015-2018 Samsung Electronics Co., Ltd All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -37,44 +37,48 @@ *-----------------------------------------------------------------------------*/ extern TEE_UUID ssf_sharedthisTAUUID; -#define __TEE_Preprocess_Operation \ - uint32_t i, type; \ - for (i = 0; i < 4; i++) { \ - type = ((data.operation.paramTypes) >> (8 * i)) & 0x7f; \ - if ((type == TEEC_VALUE_INPUT) || (type == TEEC_VALUE_OUTPUT) \ - || (type == TEEC_VALUE_INOUT)) { \ - data.operation.params[i].value.a = params[i].value.a; \ - data.operation.params[i].value.b = params[i].value.b; \ - } else if (type == TEEC_NONE) { \ - } else { \ - int getOffset = 0; \ - if (params[i].memref.memid == 0) { \ - params[i].memref.memid = getSharedMemoryShmID(params[i].memref.buffer); \ - } else { \ - char* getAdd = getSharedMemoryAddress(params[i].memref.memid); \ - if (getAdd != 0) \ - getOffset = (char*)params[i].memref.buffer - getAdd; \ - } \ - data.operation.params[i].mem.offset = getOffset; \ - data.operation.params[i].mem.size = params[i].memref.size; \ - data.operation.params[i].mem.shmKey = params[i].memref.memid; \ - } \ - } +static void __TEE_Preprocess_Operation(IntTAOperationData *operation, TEE_Param params[4]) +{ + uint32_t i, type; + for (i = 0; i < 4; i++) { + type = ((operation->paramTypes) >> (8 * i)) & 0x7f; -#define __TEE_Postprocess_Operation \ - uint32_t i, type; \ - for (i = 0; i < 4; i++) { \ - type = ((data.operation.paramTypes) >> (8 * i)) & 0x7f; \ - if ((type == TEEC_VALUE_INPUT) || (type == TEEC_VALUE_OUTPUT) \ - || (type == TEEC_VALUE_INOUT)) { \ - params[i].value.a = data.operation.params[i].value.a; \ - params[i].value.b = data.operation.params[i].value.b; \ - } else if (type == TEEC_NONE) { \ - } else { \ - params[i].memref.size = data.operation.params[i].mem.size; \ - params[i].memref.memid = data.operation.params[i].mem.shmKey; \ - } \ - } + if ((type == TEEC_VALUE_INPUT) || (type == TEEC_VALUE_OUTPUT) || (type == TEEC_VALUE_INOUT)) { + operation->params[i].value.a = params[i].value.a; + operation->params[i].value.b = params[i].value.b; + } else if (type == TEEC_NONE) { + } else { + int getOffset = 0; + if(params[i].memref.memid == 0) { + params[i].memref.memid = getSharedMemoryShmID(params[i].memref.buffer); + } else { + char* getAdd = getSharedMemoryAddress(params[i].memref.memid); + if(getAdd != 0) { + getOffset = (char*)params[i].memref.buffer - getAdd; + } + } + operation->params[i].mem.offset = getOffset; + operation->params[i].mem.size = params[i].memref.size; + operation->params[i].mem.shmKey = params[i].memref.memid; + } + } +} + +static void __TEE_Postprocess_Operation(IntTAOperationData *operation, TEE_Param params[4]) +{ + uint32_t i, type; + for (i = 0; i < 4; i++) { + type = ((operation->paramTypes) >> (8 * i)) & 0x7f; + if ((type == TEEC_VALUE_INPUT) || (type == TEEC_VALUE_OUTPUT) || (type == TEEC_VALUE_INOUT)) { + params[i].value.a = operation->params[i].value.a; + params[i].value.b = operation->params[i].value.b; + } else if (type == TEEC_NONE) { + } else { + params[i].memref.size = operation->params[i].mem.size; + params[i].memref.memid = operation->params[i].mem.shmKey; + } + } +} TEE_Result TEE_OpenTASession(const TEE_UUID* destination, uint32_t cancellationRequestTimeout, uint32_t paramTypes, @@ -98,7 +102,7 @@ TEE_Result TEE_OpenTASession(const TEE_UUID* destination, data.operation.paramTypes = paramTypes; if(params != 0) { - __TEE_Preprocess_Operation; + __TEE_Preprocess_Operation(&data.operation, params); } pthread_mutex_lock(&socketLock); @@ -125,8 +129,9 @@ TEE_Result TEE_OpenTASession(const TEE_UUID* destination, // [out] uint32_t* returnOrigin); if(params != NULL) { - __TEE_Postprocess_Operation; + __TEE_Postprocess_Operation(&data.operation, params); } + *sessionData = data.session; *session = (TEE_TASessionHandle)sessionData; if (returnOrigin) @@ -162,7 +167,7 @@ TEE_Result TEE_InvokeTACommand(TEE_TASessionHandle session, data.operation.paramTypes = paramTypes; if(params != NULL) { - __TEE_Preprocess_Operation; + __TEE_Preprocess_Operation(&data.operation, params); } pthread_mutex_lock(&socketLock); @@ -188,8 +193,9 @@ TEE_Result TEE_InvokeTACommand(TEE_TASessionHandle session, // [out] uint32_t* returnOrigin); if(params != NULL) { - __TEE_Postprocess_Operation; + __TEE_Postprocess_Operation(&data.operation, params); } + if(returnOrigin != NULL) *returnOrigin = TEE_ORIGIN_TRUSTED_APP; return data.returnValue;