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;
}
Example #2
0
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);
    }
}