diff --git a/src/addon/client.cpp b/src/addon/client.cpp index 8d4e742614b10..d4b48600b2ca8 100644 --- a/src/addon/client.cpp +++ b/src/addon/client.cpp @@ -17,6 +17,7 @@ #include "addon/manager.hpp" #include "addon/validation.hpp" #include "cursor.hpp" +#include "font/pango/escape.hpp" #include "formula/string_utils.hpp" #include "gettext.hpp" #include "gui/dialogs/addon/install_dependencies.hpp" @@ -112,13 +113,13 @@ bool addons_client::upload_addon(const std::string& id, std::string& response_me response_message.clear(); utils::string_map i18n_symbols; - i18n_symbols["addon_title"] = cfg["title"]; + i18n_symbols["addon_title"] = font::escape_text(cfg["title"]); if(i18n_symbols["addon_title"].empty()) { - i18n_symbols["addon_title"] = make_addon_title(id); + i18n_symbols["addon_title"] = font::escape_text(make_addon_title(id)); } if(!addon_name_legal(id)){ - i18n_symbols["addon_id"] = id; + i18n_symbols["addon_id"] = font::escape_text(id); this->last_error_ = vgettext("The add-on $addon_title has an invalid id '$addon_id' " "and cannot be published.", i18n_symbols); @@ -156,7 +157,7 @@ bool addons_client::upload_addon(const std::string& id, std::string& response_me this->last_error_ = vgettext("The add-on $addon_title has an invalid file or directory " "name and cannot be published.", i18n_symbols); - this->last_error_data_ = utils::join(badnames, "\n"); + this->last_error_data_ = font::escape_text(utils::join(badnames, "\n")); return false; } @@ -185,9 +186,9 @@ bool addons_client::delete_remote_addon(const std::string& id, std::string& resp config cfg = get_addon_pbl_info(id); utils::string_map i18n_symbols; - i18n_symbols["addon_title"] = cfg["title"]; + i18n_symbols["addon_title"] = font::escape_text(cfg["title"]); if(i18n_symbols["addon_title"].empty()) { - i18n_symbols["addon_title"] = make_addon_title(id); + i18n_symbols["addon_title"] = font::escape_text(make_addon_title(id)); } config request_buf, response_buf; @@ -221,7 +222,7 @@ bool addons_client::download_addon(config& archive_cfg, const std::string& id, c request_body["increase_downloads"] = increase_downloads; utils::string_map i18n_symbols; - i18n_symbols["addon_title"] = title; + i18n_symbols["addon_title"] = font::escape_text(title); LOG_ADDONS << "downloading " << id << '\n'; @@ -236,7 +237,7 @@ bool addons_client::install_addon(config& archive_cfg, const addon_info& info) const cursor::setter cursor_setter(cursor::WAIT); utils::string_map i18n_symbols; - i18n_symbols["addon_title"] = info.title; + i18n_symbols["addon_title"] = font::escape_text(info.title); if(!check_names_legal(archive_cfg)) { gui2::show_error_message(v_, @@ -418,7 +419,7 @@ bool addons_client::do_check_before_overwriting_addon(const addon_info& addon) } utils::string_map symbols; - symbols["addon"] = addon.title; + symbols["addon"] = font::escape_text(addon.title); std::string text; std::vector extra_items; @@ -468,8 +469,8 @@ addons_client::install_result addons_client::install_addon_with_checks(const add bool addons_client::update_last_error(config& response_cfg) { if(config const &error = response_cfg.child("error")) { - this->last_error_ = error["message"].str(); - this->last_error_data_ = error["extra_data"].str(); + this->last_error_ = font::escape_text(error["message"].str()); + this->last_error_data_ = font::escape_text(error["extra_data"].str()); ERR_ADDONS << "server error: " << error << '\n'; return true; } else {