diff options
Diffstat (limited to 'gui/action.cpp')
-rw-r--r-- | gui/action.cpp | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/gui/action.cpp b/gui/action.cpp index 9c8af35f4..3899f5047 100644 --- a/gui/action.cpp +++ b/gui/action.cpp @@ -1910,21 +1910,21 @@ int GUIAction::checkforapp(std::string arg __unused) } } if (PartitionManager.Mount_By_Path("/data", false)) { - string parent_path = "/data/app"; - DIR *d = opendir("/data/app"); - struct dirent *p; - size_t len = strlen("me.twrp.twrpapp-"); - while ((p = readdir(d))) { - if (!strcmp(p->d_name, ".") || !strcmp(p->d_name, "..")) - continue; - if (p->d_type == DT_DIR && strlen(p->d_name) >= len && strncmp(p->d_name, "me.twrp.twrpapp-", len) == 0) { - LOGINFO("App found at %s/%s\n", parent_path.c_str(), p->d_name); + const char parent_path[] = "/data/app"; + const char app_prefix[] = "me.twrp.twrpapp-"; + DIR *d = opendir(parent_path); + if (d) { + struct dirent *p; + while ((p = readdir(d))) { + if (p->d_type != DT_DIR || strlen(p->d_name) < strlen(app_prefix) || strncmp(p->d_name, app_prefix, strlen(app_prefix))) + continue; closedir(d); + LOGINFO("App found at '%s/%s'\n", parent_path, p->d_name); DataManager::SetValue("tw_app_install_status", 2); // 0 = no status, 1 = not installed, 2 = already installed goto exit; } + closedir(d); } - closedir(d); } } else simulate_progress_bar(); |