diff --git a/0001-libtracker-data-Protect-sqlite3_bind-with-interface-.patch b/0001-libtracker-data-Protect-sqlite3_bind-with-interface-.patch new file mode 100644 index 0000000..5b5f5ee --- /dev/null +++ b/0001-libtracker-data-Protect-sqlite3_bind-with-interface-.patch @@ -0,0 +1,61 @@ +From 79f3037391d4f00216af441f658d50f3753cc021 Mon Sep 17 00:00:00 2001 +From: Carlos Garnacho +Date: Fri, 23 Jun 2017 18:48:06 +0200 +Subject: [PATCH] libtracker-data: Protect sqlite3_bind*() with interface lock + +There may be multiple cursors/db_statements from the same db interface +being accessed from multiple threads. This must be under the +TrackerDBInterface lock in order to prevent threading issues. + +https://bugzilla.redhat.com/show_bug.cgi?id=1404285 +--- + src/libtracker-data/tracker-db-interface-sqlite.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/src/libtracker-data/tracker-db-interface-sqlite.c b/src/libtracker-data/tracker-db-interface-sqlite.c +index 66e648743c1f..4b0994da008c 100644 +--- a/src/libtracker-data/tracker-db-interface-sqlite.c ++++ b/src/libtracker-data/tracker-db-interface-sqlite.c +@@ -2589,7 +2589,9 @@ tracker_db_statement_bind_double (TrackerDBStatement *stmt, + + g_assert (!stmt->stmt_is_used); + ++ tracker_db_interface_lock (stmt->db_interface); + sqlite3_bind_double (stmt->stmt, index + 1, value); ++ tracker_db_interface_unlock (stmt->db_interface); + } + + void +@@ -2601,7 +2603,9 @@ tracker_db_statement_bind_int (TrackerDBStatement *stmt, + + g_assert (!stmt->stmt_is_used); + ++ tracker_db_interface_lock (stmt->db_interface); + sqlite3_bind_int64 (stmt->stmt, index + 1, value); ++ tracker_db_interface_unlock (stmt->db_interface); + } + + void +@@ -2612,7 +2616,9 @@ tracker_db_statement_bind_null (TrackerDBStatement *stmt, + + g_assert (!stmt->stmt_is_used); + ++ tracker_db_interface_lock (stmt->db_interface); + sqlite3_bind_null (stmt->stmt, index + 1); ++ tracker_db_interface_unlock (stmt->db_interface); + } + + void +@@ -2624,7 +2630,9 @@ tracker_db_statement_bind_text (TrackerDBStatement *stmt, + + g_assert (!stmt->stmt_is_used); + ++ tracker_db_interface_lock (stmt->db_interface); + sqlite3_bind_text (stmt->stmt, index + 1, value, -1, SQLITE_TRANSIENT); ++ tracker_db_interface_unlock (stmt->db_interface); + } + + void +-- +2.9.4 + diff --git a/tracker.spec b/tracker.spec index c58ed19..cfea9b4 100644 --- a/tracker.spec +++ b/tracker.spec @@ -14,7 +14,7 @@ Name: tracker Version: 1.13.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Desktop-neutral search tool and indexer License: GPLv2+ @@ -25,6 +25,9 @@ Source0: https://download.gnome.org/sources/%{name}/1.13/%{name}-%{versio # https://bugzilla.redhat.com/show_bug.cgi?id=771601 Patch0: 0001-Only-autostart-in-GNOME-771601.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1404285 +Patch1: 0001-libtracker-data-Protect-sqlite3_bind-with-interface-.patch + BuildRequires: desktop-file-utils BuildRequires: giflib-devel BuildRequires: graphviz @@ -137,6 +140,7 @@ This package contains the documentation for tracker %setup -q %patch0 -p1 -b .autostart-gnome +%patch1 -p1 -b .sqlite3_bind %if 0%{?rhel} # Fix the build with sqlite 3.7 that doesn't support SQLITE_DETERMINISTIC @@ -282,6 +286,10 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %changelog +* Mon Jul 03 2017 Debarshi Ray - 1.13.0-2 +- Backport fix for TrackerDirectConnection crashes from + sqlite3DbMallocRawNN + * Mon May 29 2017 David King - 1.13.0-1 - Update to 1.13.0