diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2020-02-29 20:00:09 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2020-03-02 23:06:45 +0100 |
commit | c64e343511a4a68892e9b6f683cc5faae17f1b1b (patch) | |
tree | 903a194fab2b461b57e0a2800b760021ba0c1fdc | |
parent | 523049f815dde98c2a35985e30156cefe89d1ad0 (diff) | |
download | tracker-c64e343511a4a68892e9b6f683cc5faae17f1b1b.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.c | 14 |
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 a6244af9d..40cfabf74 100644 --- a/src/libtracker-fts/tracker-fts-tokenizer.c +++ b/src/libtracker-fts/tracker-fts-tokenizer.c @@ -220,6 +220,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; @@ -229,9 +231,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; } |