cli: `tracker3 index` crashes if XDG directories aren't set up correctly
To reproduce, install tracker3 in a Fedora container or another environment where XDG user directories are not set up.
Run gdb --args tracker3 index
, and see this:
Path Recursive
/root/Desktop *
Thread 1 "index" received signal SIGSEGV, Segmentation fault.
(gdb) backtrace
#0 strlen () at ../sysdeps/arm/armv6t2/strlen.S:69
#1 0x004e9148 in tracker_term_ellipsize
(str=0x0, max_len=60, mode=TRACKER_ELLIPSIZE_START)
at ../src/libtracker-miners-common/tracker-term-utils.c:42
#2 0x004e928c in print_list
(list=<optimized out>, len=60, recursive=<optimized out>)
at ../src/tracker/tracker-index.c:327
#3 0x004e406c in list_index_roots () at ../src/tracker/tracker-index.c:360
#4 main (argc=<optimized out>, argv=<optimized out>)
at ../src/tracker/tracker-index.c:398
(gdb) frame 2
#2 0x004e928c in print_list (list=<optimized out>, len=60,
recursive=<optimized out>) at ../src/tracker/tracker-index.c:327
327 str = tracker_term_ellipsize (path, len, TRACKER_ELLIPSIZE_START);
(gdb) print path
$1 = (const gchar *) 0x0
(gdb) up
#3 0x004e406c in list_index_roots () at ../src/tracker/tracker-index.c:360
360 print_list (recursive, col_len[0], TRUE);
(gdb) print recursive[0]
$4 = (gchar *) 0x1290f00 "&DESKTOP"
(gdb) print recursive[1]
$5 = (gchar *) 0x12920d8 "&DOCUMENTS"
The problem here is that the string "&DOCUMENTS" was expanded to NULL
, and the code did not check for that.
Fixing the segfault requires adding an appropriate if (path == NULL)
check, and a warning that says something like Could not expand XDG user directly &DOCUMENTS
.