static pse_op_error_t sqlite_open_db(sqlite3 **db) { int rc = 0; pse_op_error_t ret = OP_SUCCESS; char vmc_db_path[MAX_PATH] = {0}; pse_vmc_db_state = PSE_VMC_DB_STATE_WORKABLE; if(aesm_get_cpathname(FT_PERSISTENT_STORAGE, VMC_DATABASE_FID, vmc_db_path, MAX_PATH) != AE_SUCCESS) { *db = NULL; return OP_ERROR_INTERNAL; } rc = sqlite3_open_v2(vmc_db_path, db, SQLITE_OPEN_READWRITE, NULL); if( SQLITE_OK != rc ) { // Can't open database sqlite3_close_v2(*db); *db = NULL; if(SQLITE_ERROR == rc || SQLITE_CORRUPT == rc || SQLITE_CANTOPEN == rc) { ret = OP_ERROR_DATABASE_FATAL; } else { ret = OP_ERROR_SQLITE_INTERNAL; } pse_vmc_db_state = PSE_VMC_DB_STATE_DOWN; } return ret; }
void aesm_internal_log(const char *file_name, int line_no, const char *funname, int level, const char *format, ...) { if(level <= aesm_trace_level){ if(at_start){ at_start=0; se_mutex_init(&cs); init_log_file(); } char filename[MAX_PATH]; ae_error_t err = aesm_get_cpathname(FT_PERSISTENT_STORAGE, AESM_DBG_LOG_FID, filename, MAX_PATH); if(err != AE_SUCCESS) return; FILE *logfile = NULL; se_mutex_lock(&cs); logfile = fopen(filename, "a+"); if(logfile == NULL){ se_mutex_unlock(&cs); return; } time_t t; struct tm time_info; va_list varg; char time_buf[TIME_BUF_SIZE]; time(&t); struct tm *temp_time_info; temp_time_info = localtime(&t); memcpy_s(&time_info, sizeof(time_info), temp_time_info, sizeof(*temp_time_info)); if(strftime(time_buf, TIME_BUF_SIZE, "%c", &time_info)!=0){ fprintf(logfile, "[%s|%d|%s|%s]",file_name, line_no, funname, time_buf); }else{ fprintf(logfile, "[%s|%d|%s]",file_name, line_no, funname); } va_start(varg, format); char message_buf[MAX_BUF_SIZE]; vsnprintf(message_buf, MAX_BUF_SIZE-1, format, varg); va_end(varg); std::string input_message = message_buf; std::string output_message = internal_log_msg_trans(input_message); fprintf(logfile, "%s\n", output_message.c_str()); fflush(logfile); fclose(logfile); se_mutex_unlock(&cs); } }