From 9da9dbc14cdc462859e7b00d0d794cf8fe423f3f Mon Sep 17 00:00:00 2001 From: Relintai Date: Wed, 11 Dec 2024 16:42:27 +0100 Subject: [PATCH] Now get_cell and is_cell_null in Sqlite3QueryResult will do a bounds check via error macros. This means indexing errors will not result in a crash due to vectors using CRASH_BAD_INDEX error macros. --- modules/database_sqlite/sqlite3_query_result.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/database_sqlite/sqlite3_query_result.cpp b/modules/database_sqlite/sqlite3_query_result.cpp index 7b5aae6d9..3a04f85b5 100644 --- a/modules/database_sqlite/sqlite3_query_result.cpp +++ b/modules/database_sqlite/sqlite3_query_result.cpp @@ -1,6 +1,7 @@ #include "sqlite3_query_result.h" #include "./sqlite/sqlite3.h" +#include "core/error/error_macros.h" #include "core/string/print_string.h" #include "core/string/ustring.h" #include @@ -16,10 +17,16 @@ int Sqlite3QueryResult::get_stored_row_count() { } String Sqlite3QueryResult::get_cell(const int index) { + ERR_FAIL_INDEX_V(current_row, rows.size(), String()); + ERR_FAIL_INDEX_V(index, rows[current_row]->cells.size(), String()); + return rows[current_row]->cells[index].data; } bool Sqlite3QueryResult::is_cell_null(const int index) { + ERR_FAIL_INDEX_V(current_row, rows.size(), true); + ERR_FAIL_INDEX_V(index, rows[current_row]->cells.size(), true); + return rows[current_row]->cells[index].null; }