Merge ~3v1n0/ubuntu/+source/nautilus:ubuntu/bionic-fix-file-remote-type-search-crash into ~ubuntu-desktop/ubuntu/+source/nautilus:ubuntu/bionic

Proposed by Marco Trevisan (Treviño)
Status: Merged
Merged at revision: 43a23ec338e2a4b73a60780ef0699d44869034e4
Proposed branch: ~3v1n0/ubuntu/+source/nautilus:ubuntu/bionic-fix-file-remote-type-search-crash
Merge into: ~ubuntu-desktop/ubuntu/+source/nautilus:ubuntu/bionic
Diff against target: 212 lines (+139/-4)
7 files modified
debian/changelog (+7/-0)
debian/patches/0016-search-engine-add-a-recent-search-engine-listing-Gtk.patch (+1/-1)
debian/patches/0017-recent-add-function-to-update-manager-on-file-rename.patch (+1/-1)
debian/patches/0018-search-engine-add-locate-based-search-engine.patch (+1/-1)
debian/patches/query-add-recursive-flags-and-use-it-in-search-engines.patch (+1/-1)
debian/patches/search-engine-Query-file-system-to-determine-remoteness.patch (+127/-0)
debian/patches/series (+1/-0)
Reviewer Review Type Date Requested Status
Sebastien Bacher Approve
Ubuntu Desktop Pending
Review via email: mp+356136@code.launchpad.net

This proposal supersedes a proposal from 2018-09-28.

Description of the change

To post a comment you must log in.
Revision history for this message
Sebastien Bacher (seb128) wrote :

That makes sense to include, thanks

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/debian/changelog b/debian/changelog
index 62b7833..a57b726 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
1nautilus (1:3.26.4-0~ubuntu18.04.2) UNRELEASED; urgency=medium
2
3 * d/p/search-engine-Query-file-system-to-determine-remoteness.patch:
4 - Fix remote filesystem check on file during search (LP: #1795028)
5
6 -- Marco Trevisan (Treviño) <marco@ubuntu.com> Wed, 05 Sep 2018 18:03:14 +0200
7
1nautilus (1:3.26.4-0~ubuntu18.04.1) bionic; urgency=medium8nautilus (1:3.26.4-0~ubuntu18.04.1) bionic; urgency=medium
29
3 * New upstream release: 3.26.4 (LP: #1782681, LP: #1765776)10 * New upstream release: 3.26.4 (LP: #1782681, LP: #1765776)
diff --git a/debian/patches/0016-search-engine-add-a-recent-search-engine-listing-Gtk.patch b/debian/patches/0016-search-engine-add-a-recent-search-engine-listing-Gtk.patch
index f80997f..20e597c 100644
--- a/debian/patches/0016-search-engine-add-a-recent-search-engine-listing-Gtk.patch
+++ b/debian/patches/0016-search-engine-add-a-recent-search-engine-listing-Gtk.patch
@@ -512,7 +512,7 @@ index 0000000..bcd73b9
512+512+
513+#endif /* __NAUTILUS_SEARCH_ENGINE_RECENT_H__ */513+#endif /* __NAUTILUS_SEARCH_ENGINE_RECENT_H__ */
514diff --git a/src/nautilus-search-engine.c b/src/nautilus-search-engine.c514diff --git a/src/nautilus-search-engine.c b/src/nautilus-search-engine.c
515index 3a0c9d4..793b831 100644515index 28863f7..a4c6007 100644
516--- a/src/nautilus-search-engine.c516--- a/src/nautilus-search-engine.c
517+++ b/src/nautilus-search-engine.c517+++ b/src/nautilus-search-engine.c
518@@ -30,11 +30,13 @@518@@ -30,11 +30,13 @@
diff --git a/debian/patches/0017-recent-add-function-to-update-manager-on-file-rename.patch b/debian/patches/0017-recent-add-function-to-update-manager-on-file-rename.patch
index e6185da..ad248da 100644
--- a/debian/patches/0017-recent-add-function-to-update-manager-on-file-rename.patch
+++ b/debian/patches/0017-recent-add-function-to-update-manager-on-file-rename.patch
@@ -49,7 +49,7 @@ index 19316e8..9bb5460 100644
49 49
50 /* Now send out the changed and added signals for existing file objects. */50 /* Now send out the changed and added signals for existing file objects. */
51diff --git a/src/nautilus-file.c b/src/nautilus-file.c51diff --git a/src/nautilus-file.c b/src/nautilus-file.c
52index 63413a6..9416214 10064452index 28b5a13..7886d1f 100644
53--- a/src/nautilus-file.c53--- a/src/nautilus-file.c
54+++ b/src/nautilus-file.c54+++ b/src/nautilus-file.c
55@@ -34,6 +34,7 @@55@@ -34,6 +34,7 @@
diff --git a/debian/patches/0018-search-engine-add-locate-based-search-engine.patch b/debian/patches/0018-search-engine-add-locate-based-search-engine.patch
index 91a7ec0..158b448 100644
--- a/debian/patches/0018-search-engine-add-locate-based-search-engine.patch
+++ b/debian/patches/0018-search-engine-add-locate-based-search-engine.patch
@@ -678,7 +678,7 @@ index 0000000..ac5e3fc
678+678+
679+#endif /* __NAUTILUS_SEARCH_ENGINE_LOCATE_H__ */679+#endif /* __NAUTILUS_SEARCH_ENGINE_LOCATE_H__ */
680diff --git a/src/nautilus-search-engine.c b/src/nautilus-search-engine.c680diff --git a/src/nautilus-search-engine.c b/src/nautilus-search-engine.c
681index 793b831..902d483 100644681index a4c6007..475a432 100644
682--- a/src/nautilus-search-engine.c682--- a/src/nautilus-search-engine.c
683+++ b/src/nautilus-search-engine.c683+++ b/src/nautilus-search-engine.c
684@@ -29,6 +29,7 @@684@@ -29,6 +29,7 @@
diff --git a/debian/patches/query-add-recursive-flags-and-use-it-in-search-engines.patch b/debian/patches/query-add-recursive-flags-and-use-it-in-search-engines.patch
index fddae3e..3c89693 100644
--- a/debian/patches/query-add-recursive-flags-and-use-it-in-search-engines.patch
+++ b/debian/patches/query-add-recursive-flags-and-use-it-in-search-engines.patch
@@ -198,7 +198,7 @@ index b567611..b165d63 100644
198+198+
199 #endif /* NAUTILUS_FILE_UTILITIES_H */199 #endif /* NAUTILUS_FILE_UTILITIES_H */
200diff --git a/src/nautilus-file.c b/src/nautilus-file.c200diff --git a/src/nautilus-file.c b/src/nautilus-file.c
201index 3f6a69f..63413a6 100644201index 22ea199..e30d791 100644
202--- a/src/nautilus-file.c202--- a/src/nautilus-file.c
203+++ b/src/nautilus-file.c203+++ b/src/nautilus-file.c
204@@ -4975,6 +4975,29 @@ nautilus_file_get_filesystem_type (NautilusFile *file)204@@ -4975,6 +4975,29 @@ nautilus_file_get_filesystem_type (NautilusFile *file)
diff --git a/debian/patches/search-engine-Query-file-system-to-determine-remoteness.patch b/debian/patches/search-engine-Query-file-system-to-determine-remoteness.patch
205new file mode 100644205new file mode 100644
index 0000000..1b7f874
--- /dev/null
+++ b/debian/patches/search-engine-Query-file-system-to-determine-remoteness.patch
@@ -0,0 +1,127 @@
1From: Ernestas Kulik <ernestask@gnome.org>
2Date: Fri, 14 Sep 2018 12:52:11 +0200
3Subject: search-engine: Query file system to determine remoteness
4
5Querying the file cache in is_recursive_search() does not guarantee that
6the file system field will be populated with a value, and somehow
7results in data races, in turn resulting in random crashes/file list
8corruption.
9
10Hopefully fixes https://gitlab.gnome.org/GNOME/nautilus/issues/640,
11closes https://gitlab.gnome.org/GNOME/nautilus/issues/632 and resolves
12https://gitlab.gnome.org/GNOME/nautilus/issues/602
13
14Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/nautilus/+bug/1795028
15Applied-Upstream: yes, 3.30.1, https://gitlab.gnome.org/GNOME/nautilus/commit/62ba6d83d
16---
17 src/nautilus-file-utilities.c | 18 ++++++++++++++++++
18 src/nautilus-file-utilities.h | 2 ++
19 src/nautilus-file.c | 14 +-------------
20 src/nautilus-search-engine.c | 18 +++++++++++++++---
21 4 files changed, 36 insertions(+), 16 deletions(-)
22
23diff --git a/src/nautilus-file-utilities.c b/src/nautilus-file-utilities.c
24index f8d8476..3e363a4 100644
25--- a/src/nautilus-file-utilities.c
26+++ b/src/nautilus-file-utilities.c
27@@ -1565,3 +1565,21 @@ location_settings_search_get_recursive_for_location (GFile *location)
28
29 return recursive;
30 }
31+
32+gboolean
33+nautilus_file_system_is_remote (const char *file_system)
34+{
35+ static const gchar * const remote_types[] =
36+ {
37+ "afp",
38+ "google-drive",
39+ "sftp",
40+ "webdav",
41+ "ftp",
42+ "nfs",
43+ "cifs",
44+ NULL
45+ };
46+
47+ return file_system != NULL && g_strv_contains (remote_types, file_system);
48+}
49diff --git a/src/nautilus-file-utilities.h b/src/nautilus-file-utilities.h
50index b165d63..37f7f49 100644
51--- a/src/nautilus-file-utilities.h
52+++ b/src/nautilus-file-utilities.h
53@@ -133,4 +133,6 @@ gchar * nautilus_uri_to_native_uri (const gchar *uri);
54 NautilusQueryRecursive location_settings_search_get_recursive (void);
55 NautilusQueryRecursive location_settings_search_get_recursive_for_location (GFile *location);
56
57+gboolean nautilus_file_system_is_remote (const char *file_system);
58+
59 #endif /* NAUTILUS_FILE_UTILITIES_H */
60diff --git a/src/nautilus-file.c b/src/nautilus-file.c
61index e30d791..28b5a13 100644
62--- a/src/nautilus-file.c
63+++ b/src/nautilus-file.c
64@@ -8371,18 +8371,6 @@ nautilus_file_is_in_recent (NautilusFile *file)
65 return nautilus_directory_is_in_recent (file->details->directory);
66 }
67
68-static const gchar * const remote_types[] =
69-{
70- "afp",
71- "google-drive",
72- "sftp",
73- "webdav",
74- "ftp",
75- "nfs",
76- "cifs",
77- NULL
78-};
79-
80 /**
81 * nautilus_file_is_remote
82 *
83@@ -8406,7 +8394,7 @@ nautilus_file_is_remote (NautilusFile *file)
84
85 filesystem_type = nautilus_file_get_filesystem_type (file);
86
87- return filesystem_type != NULL && g_strv_contains (remote_types, filesystem_type);
88+ return nautilus_file_system_is_remote (filesystem_type);
89 }
90
91 /**
92diff --git a/src/nautilus-search-engine.c b/src/nautilus-search-engine.c
93index 3a0c9d4..28863f7 100644
94--- a/src/nautilus-search-engine.c
95+++ b/src/nautilus-search-engine.c
96@@ -23,7 +23,7 @@
97 #include "nautilus-search-engine.h"
98 #include "nautilus-search-engine-private.h"
99
100-#include "nautilus-file.h"
101+#include "nautilus-file-utilities.h"
102 #include "nautilus-search-engine-model.h"
103 #include "nautilus-search-provider.h"
104 #include <glib/gi18n.h>
105@@ -437,8 +437,20 @@ is_recursive_search (NautilusSearchEngineType engine_type,
106
107 case NAUTILUS_QUERY_RECURSIVE_LOCAL_ONLY:
108 {
109- g_autoptr (NautilusFile) file = nautilus_file_get (location);
110- return !nautilus_file_is_remote (file);
111+ g_autoptr (GFileInfo) file_system_info = NULL;
112+
113+ file_system_info = g_file_query_filesystem_info (location,
114+ G_FILE_ATTRIBUTE_FILESYSTEM_TYPE,
115+ NULL, NULL);
116+ if (file_system_info != NULL)
117+ {
118+ const char *file_system;
119+
120+ file_system = g_file_info_get_attribute_string (file_system_info,
121+ G_FILE_ATTRIBUTE_FILESYSTEM_TYPE);
122+
123+ return !nautilus_file_system_is_remote (file_system);
124+ }
125 }
126 }
127
diff --git a/debian/patches/series b/debian/patches/series
index 41a35d1..2942ff8 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -17,6 +17,7 @@ ubuntu_backspace_behaviour.patch
17#Needs updating17#Needs updating
18#16_unity_new_documents.patch18#16_unity_new_documents.patch
19query-add-recursive-flags-and-use-it-in-search-engines.patch19query-add-recursive-flags-and-use-it-in-search-engines.patch
20search-engine-Query-file-system-to-determine-remoteness.patch
200015-tracker-search-engine-don-t-start-it-if-not-availabl.patch210015-tracker-search-engine-don-t-start-it-if-not-availabl.patch
210016-search-engine-add-a-recent-search-engine-listing-Gtk.patch220016-search-engine-add-a-recent-search-engine-listing-Gtk.patch
220017-recent-add-function-to-update-manager-on-file-rename.patch230017-recent-add-function-to-update-manager-on-file-rename.patch

Subscribers

People subscribed via source and target branches