fix paramTypes convertion 39/167239/2
authorKrzysztof Dynowski <k.dynowski@samsung.com>
Tue, 16 Jan 2018 09:51:53 +0000 (10:51 +0100)
committerKrzysztof Dynowski <k.dynowski@samsung.com>
Tue, 16 Jan 2018 10:17:03 +0000 (11:17 +0100)
Change-Id: Ie30a9e72ebf379c3cc3282b4c4f65af7a41f744d

src/optee/creators.c
src/optee/creators.h
src/simulator/creators.c
src/simulator/creators.h
src/tef_libteec.c

index bfb4a8d..1f594da 100644 (file)
@@ -35,11 +35,7 @@ void *optee_TEEC_SharedMemory()
 {
        return malloc(sizeof(TEEC_SharedMemory));
 }
-uint32_t optee_paramTypes(uint32_t api_params)
+uint32_t optee_paramTypes(uint8_t par[4])
 {
-       uint8_t p[4];
-       for (int i = 0; i < 4; ++i) {
-               p[i] = TEEC_PARAM_TYPE_GET(api_params, i);
-       }
-       return TEEC_PARAM_TYPES(p[0], p[1], p[2], p[3]);
+       return TEEC_PARAM_TYPES(par[0], par[1], par[2], par[3]);
 }
index 7c6e5d5..9d4c169 100644 (file)
@@ -23,6 +23,6 @@ void *optee_TEEC_Context();
 void *optee_TEEC_Session();
 void *optee_TEEC_Operation();
 void *optee_TEEC_SharedMemory();
-uint32_t optee_paramTypes(uint32_t api_params);
+uint32_t optee_paramTypes(uint8_t par[4]);
 
 #endif
index 5e6e786..79f881c 100644 (file)
@@ -35,8 +35,7 @@ void *simulator_TEEC_SharedMemory()
 {
        return malloc(sizeof(TEEC_SharedMemory));
 }
-
-uint32_t simulator_paramTypes(uint32_t api_params)
+uint32_t simulator_paramTypes(uint8_t par[4])
 {
-       return api_params;
+       return TEEC_PARAM_TYPES(par[0], par[1], par[2], par[3]);
 }
index 4758347..a453849 100644 (file)
@@ -23,6 +23,6 @@ void *simulator_TEEC_Context();
 void *simulator_TEEC_Session();
 void *simulator_TEEC_Operation();
 void *simulator_TEEC_SharedMemory();
-uint32_t simulator_paramTypes(uint32_t api_params);
+uint32_t simulator_paramTypes(uint8_t par[4]);
 
 #endif
index 7e8fbb2..2ddfa62 100644 (file)
@@ -45,7 +45,7 @@ typedef struct {
        void *(*createSession)();
        void *(*createOperation)();
        void *(*createSharedMemory)();
-       uint32_t (*paramTypes)(uint32_t);
+       uint32_t (*paramTypes)(uint8_t[]);
 
        TEEC_Result (*wInitializeContext)(const char *name, TEEC_Context *context);
        void (*wFinalizeContext)(TEEC_Context *context);
@@ -136,13 +136,13 @@ static TEEC_Operation *setOperation(TEF_SessionImpl *tefSession, TEEC_Operation
                return NULL;
        }
 
+       uint8_t paramTypes[4];
        operation->imp = tefSession->lastOperation;
        TEEC_Operation *op = (TEEC_Operation *)operation->imp;
        op->started = operation->started;
-       op->paramTypes = lib.paramTypes(operation->paramTypes);
        for (int i = 0; i < 4; ++i) {
-               uint8_t type = TEEC_PARAM_TYPE_GET(operation->paramTypes, i);
-               if (type >= TEEC_MEMREF_WHOLE && type <= TEEC_MEMREF_PARTIAL_INOUT) {
+               paramTypes[i] = TEEC_PARAM_TYPE_GET(operation->paramTypes, i);
+               if (paramTypes[i] >= TEEC_MEMREF_WHOLE && paramTypes[i] <= TEEC_MEMREF_PARTIAL_INOUT) {
                        op->params[i].memref.parent = (TEEC_SharedMemory*)operation->params[i].memref.parent->imp;
                        op->params[i].memref.size = operation->params[i].memref.size;
                        op->params[i].memref.offset = operation->params[i].memref.offset;
@@ -150,6 +150,7 @@ static TEEC_Operation *setOperation(TEF_SessionImpl *tefSession, TEEC_Operation
                        op->params[i] = operation->params[i];
                }
        }
+       op->paramTypes = lib.paramTypes(paramTypes);
        return op;
 }
 static void getOperation(TEEC_Operation *operation)