[tracker/tracker-2.3] libtracker-fts: Perform error checks throughout all FTS5 offsets API



commit c1f4fc26c3a16949e218a588a9c841a9a7c0fe5a
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sat Feb 29 20:00:09 2020 +0100

    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.

 src/libtracker-fts/tracker-fts-tokenizer.c | 14 +++++++++++---
 1 file 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;
                }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]