diff options
author | Christian Soffke <christian.soffke@gmail.com> | 2022-10-21 13:34:31 +0200 |
---|---|---|
committer | William Wilgus <me.theuser@yahoo.com> | 2022-10-30 11:57:33 -0400 |
commit | 246152a671b2fc08b39cc897523b8a325d1205e0 (patch) | |
tree | 8762dfcbfa2da5be38046327d3e3a49831ee568e | |
parent | b4e7c60c6d74e076fb731ea43e6a6826652468ca (diff) | |
download | rockbox-246152a671b2fc08b39cc897523b8a325d1205e0.tar.gz rockbox-246152a671b2fc08b39cc897523b8a325d1205e0.zip |
Database: Fix possible crash
The File Browser and Database apparently share
the same selected_item_history, which means that
selected_item can be -1 even in the context of the
database,
This leads to tree_get_file_position being called in
id3db mode, which isn't safe to do.
Change-Id: I46151e8a823afab0b57ad839cde13f6072b8917b
-rw-r--r-- | apps/tree.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/apps/tree.c b/apps/tree.c index 2bccefa7a1..6e9ca106c0 100644 --- a/apps/tree.c +++ b/apps/tree.c | |||
@@ -392,8 +392,11 @@ static int update_dir(void) | |||
392 | /* if selected item is undefined */ | 392 | /* if selected item is undefined */ |
393 | if (tc.selected_item == -1) | 393 | if (tc.selected_item == -1) |
394 | { | 394 | { |
395 | /* use lastfile to determine the selected item */ | 395 | #ifdef HAVE_TAGCACHE |
396 | tc.selected_item = tree_get_file_position(lastfile); | 396 | if (!id3db) |
397 | #endif | ||
398 | /* use lastfile to determine the selected item */ | ||
399 | tc.selected_item = tree_get_file_position(lastfile); | ||
397 | 400 | ||
398 | /* If the file doesn't exists, select the first one (default) */ | 401 | /* If the file doesn't exists, select the first one (default) */ |
399 | if(tc.selected_item < 0) | 402 | if(tc.selected_item < 0) |