Fix test to use (and cleanup at) single exit 01/176801/3
authorIgor Kotrasinski <i.kotrasinsk@partner.samsung.com>
Mon, 16 Apr 2018 13:29:30 +0000 (15:29 +0200)
committerIgor Kotrasinski <i.kotrasinsk@partner.samsung.com>
Mon, 4 Jun 2018 10:06:23 +0000 (12:06 +0200)
Change-Id: I9d49f17879c744c5d99a219d6825ef081b3f0e36
Signed-off-by: Igor Kotrasinski <i.kotrasinsk@partner.samsung.com>
TEECLib/src/teec_connection.c

index 199e665..77a40dd 100644 (file)
@@ -194,10 +194,11 @@ static uint32_t Test(char cmd, char *fdata, size_t size, uint32_t in)
 {
 
        LOGD(TEEC_LIB, "Entry");
-       FILE *f1;
+       FILE *f1 = NULL;
        char *fname;
        uint32_t type, i, j, shmid, key;
        char *buffer;
+       TEEC_Result ret = TEEC_SUCCESS;
 
        switch (cmd) {
        case INITIALIZE_CONTEXT:
@@ -213,7 +214,6 @@ static uint32_t Test(char cmd, char *fdata, size_t size, uint32_t in)
                                "        \nTEEName %s\nreturnValue %d\n",
                                initdata.contextID, initdata.nameLength, &initdata.TEEName[0],
                                initdata.returnValue);
-               fclose(f1);
                break;
 
        case FINALIZE_CONTEXT:
@@ -226,7 +226,6 @@ static uint32_t Test(char cmd, char *fdata, size_t size, uint32_t in)
                FinalizeContextData findata = *(FinalizeContextData *) fdata;
                fprintf(f1, "FinalizeContextData ---------\ncontextID %d\n",
                                findata.contextID);
-               fclose(f1);
                break;
 
        case REGISTER_SHARED_MEMORY:
@@ -242,7 +241,6 @@ static uint32_t Test(char cmd, char *fdata, size_t size, uint32_t in)
                                "        \nshmKey %d\nreturnValue %d\n",
                                regdata.contextID, regdata.sharedMem.size, regdata.sharedMem.flags,
                                regdata.sharedMem.shmKey, regdata.returnValue);
-               fclose(f1);
                break;
 
        case RELEASE_SHARED_MEMORY:
@@ -302,17 +300,20 @@ static uint32_t Test(char cmd, char *fdata, size_t size, uint32_t in)
 
                                if (shmid == -1) {
                                        LOGE(TEEC_LIB, "shmget failed");
-                                       return TEEC_ERROR_GENERIC;
+                                       ret = TEEC_ERROR_GENERIC;
+                                       break;
                                }
 
                                if ((buffer = (char *) shmat(shmid, NULL, 0)) == (char *) - 1) {
                                        LOGE(TEEC_LIB, "shmat failed");
-                                       return TEEC_ERROR_GENERIC;
+                                       ret = TEEC_ERROR_GENERIC;
+                                       break;
                                }
 
                                if (!buffer) {
                                        LOGE(TEEC_LIB, "shmat failed");
-                                       return TEEC_ERROR_GENERIC;
+                                       ret = TEEC_ERROR_GENERIC;
+                                       break;
                                }
 
                                fprintf(f1, "SharedMemData: \n");
@@ -329,10 +330,11 @@ static uint32_t Test(char cmd, char *fdata, size_t size, uint32_t in)
                                buffer = NULL;
                        }
                }
+               if (ret != TEEC_SUCCESS)
+                       break;
 
                fprintf(f1, "OperationID %d\nreturnOrigin %d\nreturnValue %d\n",
                                osdata.operation.OperationID, osdata.returnOrigin, osdata.returnValue);
-               fclose(f1);
                break;
 
        case CLOSE_SESSION:
@@ -345,7 +347,6 @@ static uint32_t Test(char cmd, char *fdata, size_t size, uint32_t in)
                CloseSessionData csdata = *(CloseSessionData *) fdata;
                fprintf(f1, "ClosesessionData ---------\ncontextID %d\nSessionID %d\n",
                                csdata.contextID, csdata.sessionID);
-               fclose(f1);
                break;
 
        case INVOKE_COMMAND:
@@ -383,17 +384,20 @@ static uint32_t Test(char cmd, char *fdata, size_t size, uint32_t in)
 
                                if (shmid == -1) {
                                        LOGE(TEEC_LIB, "shmget failed");
-                                       return TEEC_ERROR_GENERIC;
+                                       ret = TEEC_ERROR_GENERIC;
+                                       break;
                                }
 
                                if ((buffer = (char *) shmat(shmid, NULL, 0)) == (char *) - 1) {
                                        LOGE(TEEC_LIB, "shmat failed");
-                                       return TEEC_ERROR_GENERIC;
+                                       ret = TEEC_ERROR_GENERIC;
+                                       break;
                                }
 
                                if (!buffer) {
                                        LOGE(TEEC_LIB, "shmat failed");
-                                       return TEEC_ERROR_GENERIC;
+                                       ret = TEEC_ERROR_GENERIC;
+                                       break;
                                }
 
                                fprintf(f1, "SharedMemData: \n");
@@ -411,9 +415,11 @@ static uint32_t Test(char cmd, char *fdata, size_t size, uint32_t in)
                        }
                }
 
+               if (ret != TEEC_SUCCESS)
+                       break;
+
                fprintf(f1, "OperationID %d\nreturnOrigin %d\nreturnValue %d\n",
                                icdata.operation.OperationID, icdata.returnOrigin, icdata.returnValue);
-               fclose(f1);
                break;
 
        case REQUEST_CANCELLATION:
@@ -429,7 +435,10 @@ static uint32_t Test(char cmd, char *fdata, size_t size, uint32_t in)
                LOGE(TEEC_LIB, "Invalid command");
        }
 
-       return TEEC_SUCCESS;
+       if (f1 != NULL)
+               fclose(f1);
+
+       return ret;
 }
 #endif