{
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:
" \nTEEName %s\nreturnValue %d\n",
initdata.contextID, initdata.nameLength, &initdata.TEEName[0],
initdata.returnValue);
- fclose(f1);
break;
case FINALIZE_CONTEXT:
FinalizeContextData findata = *(FinalizeContextData *) fdata;
fprintf(f1, "FinalizeContextData ---------\ncontextID %d\n",
findata.contextID);
- fclose(f1);
break;
case REGISTER_SHARED_MEMORY:
" \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:
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");
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:
CloseSessionData csdata = *(CloseSessionData *) fdata;
fprintf(f1, "ClosesessionData ---------\ncontextID %d\nSessionID %d\n",
csdata.contextID, csdata.sessionID);
- fclose(f1);
break;
case INVOKE_COMMAND:
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");
}
}
+ 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:
LOGE(TEEC_LIB, "Invalid command");
}
- return TEEC_SUCCESS;
+ if (f1 != NULL)
+ fclose(f1);
+
+ return ret;
}
#endif