Prevent SQL Injection 68/231168/1 submit/tizen/20200418.071504 submit/tizen/20200420.051414
authorDewal Agarwal <d1.agarwal@samsung.com>
Fri, 17 Apr 2020 15:47:22 +0000 (21:17 +0530)
committerDewal Agarwal <d1.agarwal@samsung.com>
Sat, 18 Apr 2020 06:57:06 +0000 (06:57 +0000)
Change-Id: I4ce01867ed3117507761b136fe566eaaeef4660f
Signed-off-by: Dewal Agarwal <d1.agarwal@samsung.com>
src/bm_server_db.c

index d4c0241..1b0bf60 100644 (file)
@@ -333,6 +333,31 @@ static int bm_db_handle_close(sqlite3 *bm_db_handle)
        return ret;
 }
 
+static int bm_query_app_usage_convert_to_sql_ci(const char *str, long s_t, long e_t, bm_stmt hstmt)
+{
+       ENTER;
+
+       int count = 1;
+       bm_query_bind_text(hstmt, count++, str);
+       bm_query_bind_int(hstmt, count++, s_t);
+       bm_query_bind_int(hstmt, count++, e_t);
+
+       EXIT;
+       return count;
+}
+
+static int bm_query_app_usage_convert_to_sql(const char *str, long s_t, bm_stmt hstmt)
+{
+       ENTER;
+
+       int count = 1;
+       bm_query_bind_text(hstmt, count++, str);
+       bm_query_bind_int(hstmt, count++, s_t);
+
+       EXIT;
+       return count;
+}
+
 static int bm_appid_map_usage_convert_to_sql(const char* app_id, bm_stmt hstmt, char *sql_value)
 {
        ENTER;
@@ -1493,6 +1518,7 @@ static appid_usage_s* bm_query_usage_by_appid(sqlite3 *bm_db_handle, const char
                                                NULL, ("The database isn't connected."));
        BM_MEMSET(query, 0x00, BATTERY_MONITOR_SQL_LEN_MAX);
 
+/*
 #ifdef DISABLE_FEATURE_DATA_FROM_GPS_HRM_PLUGIN
        BM_SNPRINTF(query, sizeof(query), "SELECT AppId, sum(rId_ble), sum(rId_wifi), sum(rId_cpu), \
                sum(rId_display), sum(rId_device_network), sum(rId_gps), sum(rId_hrm) FROM %s WHERE \
@@ -1502,6 +1528,11 @@ static appid_usage_s* bm_query_usage_by_appid(sqlite3 *bm_db_handle, const char
                sum(rId_display), sum(rId_device_network) FROM %s WHERE \
                AppId = '%s' AND log_time >= %ld", BATTERY_MONITOR_APP_ID_USAGE_TABLE, app_id, duration);
 #endif
+*/
+
+       BM_SNPRINTF(query, sizeof(query), "SELECT AppId, sum(rId_ble), sum(rId_wifi), sum(rId_cpu), \
+               sum(rId_display), sum(rId_device_network), sum(rId_gps) FROM %s WHERE \
+               AppId = ? AND log_time >= ?", BATTERY_MONITOR_APP_ID_USAGE_TABLE);
 
        hstmt = bm_prepare_query(bm_db_handle, query);
        if (bm_db_err_code(bm_db_handle) == SQLITE_PERM) {
@@ -1510,6 +1541,7 @@ static appid_usage_s* bm_query_usage_by_appid(sqlite3 *bm_db_handle, const char
                return NULL;
        }
 
+       bm_query_app_usage_convert_to_sql(app_id, duration, hstmt);
        appid_usage_s *bm_app_type = NULL;
        rc = bm_query_step(hstmt);
        BM_CATCH_ERROR_P(rc == SQLITE_ROW, {}, BATTERY_MONITOR_ERROR_RECORD_NOT_FOUND,
@@ -1569,6 +1601,7 @@ static appid_usage_s* bm_query_usage_by_appid_ci(sqlite3 *bm_db_handle, const ch
        long int e_t = (long)e_time;
        char query[BATTERY_MONITOR_SQL_LEN_MAX] = {0, };
        BM_MEMSET(query, 0x00, BATTERY_MONITOR_SQL_LEN_MAX);
+/*
 #ifdef DISABLE_FEATURE_DATA_FROM_GPS_HRM_PLUGIN
        BM_SNPRINTF(query, sizeof(query), "SELECT AppId, sum(rId_ble), sum(rId_wifi), sum(rId_cpu), \
                sum(rId_display), sum(rId_device_network), sum(rId_gps), sum(rId_hrm) FROM %s WHERE \
@@ -1579,6 +1612,10 @@ static appid_usage_s* bm_query_usage_by_appid_ci(sqlite3 *bm_db_handle, const ch
                sum(rId_display), sum(rId_device_network) FROM %s WHERE AppId = '%s' AND \
                log_time > %ld AND log_time < %ld", BATTERY_MONITOR_APP_ID_USAGE_TABLE, app_id, s_t, e_t);
 #endif
+*/
+       BM_SNPRINTF(query, sizeof(query), "SELECT AppId, sum(rId_ble), sum(rId_wifi), sum(rId_cpu), \
+               sum(rId_display), sum(rId_device_network), sum(rId_gps) FROM %s WHERE \
+               AppId = ? AND log_time > ? AND log_time < ? ", BATTERY_MONITOR_APP_ID_USAGE_TABLE);
        hstmt = bm_prepare_query(bm_db_handle, query);
        if (bm_db_err_code(bm_db_handle) == SQLITE_PERM) {
                _ERR("Access failed(%s)", bm_db_err_msg(bm_db_handle));
@@ -1586,6 +1623,7 @@ static appid_usage_s* bm_query_usage_by_appid_ci(sqlite3 *bm_db_handle, const ch
                return NULL;
        }
 
+       bm_query_app_usage_convert_to_sql_ci(app_id, s_t, e_t, hstmt);
        appid_usage_s *bm_app_type = NULL;
        rc = bm_query_step(hstmt);
        BM_CATCH_ERROR_P(rc == SQLITE_ROW, {}, BATTERY_MONITOR_ERROR_RECORD_NOT_FOUND,
@@ -1884,6 +1922,7 @@ static resourceid_usage_s* bm_query_usage_by_resourceid_ci(sqlite3 *bm_db_handle
                *error_code = BATTERY_MONITOR_ERROR_PERMISSION_DENIED;
                return NULL;
        }
+
        resourceid_usage_s *bm_resource_type = NULL;
        rc = bm_query_step(hstmt);
        BM_CATCH_ERROR_P(rc == SQLITE_ROW, {}, BATTERY_MONITOR_ERROR_RECORD_NOT_FOUND, ("The record isn't found.(%s)\n", resource_id));