From abe5e9e72f3b8561085070286a1130a48a0640c3 Mon Sep 17 00:00:00 2001 From: NiLuJe Date: Wed, 14 Sep 2022 04:32:02 +0200 Subject: [PATCH] Check accesses to the bookname_to_ifo std::map Avoid crashes when passing unknown dicts to the -u flag Fix #87 --- src/sdcv.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/sdcv.cpp b/src/sdcv.cpp index 170ac2f..46db492 100644 --- a/src/sdcv.cpp +++ b/src/sdcv.cpp @@ -186,10 +186,11 @@ try { } // add bookname to list - gchar **p = get_impl(use_dict_list); - while (*p) { - order_list.push_back(bookname_to_ifo.at(*p)); - ++p; + for (gchar **p = get_impl(use_dict_list); *p != nullptr; ++p) { + auto it = bookname_to_ifo.find(*p); + if (it != bookname_to_ifo.end()) { + order_list.push_back(it->second); + } } } else { std::string ordering_cfg_file = std::string(g_get_user_config_dir()) + G_DIR_SEPARATOR_S "sdcv_ordering"; @@ -201,7 +202,10 @@ try { if (ordering_file != nullptr) { std::string line; while (stdio_getline(ordering_file, line)) { - order_list.push_back(bookname_to_ifo.at(line)); + auto it = bookname_to_ifo.find(line); + if (it != bookname_to_ifo.end()) { + order_list.push_back(it->second); + } } fclose(ordering_file); }