summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2020-02-29 20:00:09 +0100
committerCarlos Garnacho <carlosg@gnome.org>2020-03-09 19:22:20 +0100
commitc1f4fc26c3a16949e218a588a9c841a9a7c0fe5a (patch)
treeb5704907f02521e44f305944a3dc14c3d31610a6
parentc00a5ee43188e29c6488f975c541659672ffa8e4 (diff)
downloadtracker-c1f4fc26c3a16949e218a588a9c841a9a7c0fe5a.tar.gz
libtracker-fts: Perform error checks throughout all FTS5 offsets API
We are trusting some of those functions to be correct, error out instead if that doesn't happen to be the case.
-rw-r--r--src/libtracker-fts/tracker-fts-tokenizer.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/libtracker-fts/tracker-fts-tokenizer.c b/src/libtracker-fts/tracker-fts-tokenizer.c
index a58a8bacd..bd119f569 100644
--- a/src/libtracker-fts/tracker-fts-tokenizer.c
+++ b/src/libtracker-fts/tracker-fts-tokenizer.c
@@ -233,6 +233,8 @@ tracker_offsets_function (const Fts5ExtensionApi *api,
int phrase, col, n_token;
rc = api->xInst (fts_ctx, i, &phrase, &col, &n_token);
+ if (rc != SQLITE_OK)
+ break;
if (first || cur_col != col) {
const char *text;
@@ -242,9 +244,15 @@ tracker_offsets_function (const Fts5ExtensionApi *api,
g_array_free (offsets, TRUE);
offsets = g_array_new (FALSE, FALSE, sizeof (gint));
- api->xColumnText (fts_ctx, col, &text, &length);
- api->xTokenize (fts_ctx, text, length,
- offsets, &offsets_tokenizer_func);
+ rc = api->xColumnText (fts_ctx, col, &text, &length);
+ if (rc != SQLITE_OK)
+ break;
+
+ rc = api->xTokenize (fts_ctx, text, length,
+ offsets, &offsets_tokenizer_func);
+ if (rc != SQLITE_OK)
+ break;
+
cur_col = col;
}