diff --git a/components/TxConfirmationDialog.qml b/components/TxConfirmationDialog.qml index dc55a6f5..1700aa0a 100644 --- a/components/TxConfirmationDialog.qml +++ b/components/TxConfirmationDialog.qml @@ -32,6 +32,7 @@ import QtQuick.Controls 2.2 import QtQuick.Layouts 1.1 import "../components" as MoneroComponents +import "../js/Utils.js" as Utils import FontAwesome 1.0 Rectangle { @@ -306,7 +307,7 @@ Rectangle { } var title; if (addressBookName) { - title = FontAwesome.addressBook + " " + addressBookName; + title = FontAwesome.addressBook + " " + Utils.htmlEscape(addressBookName); } else { title = qsTr("Monero address") + translationManager.emptyString; } diff --git a/js/Utils.js b/js/Utils.js index 9094ca4f..e031c78a 100644 --- a/js/Utils.js +++ b/js/Utils.js @@ -130,3 +130,13 @@ function parseDateStringOrRestoreHeightAsInteger(value) { } return restoreHeight; } + +function htmlEscape(s) { + if (s === null || s === undefined) + return ""; + return String(s) + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """); +} diff --git a/pages/settings/SettingsLog.qml b/pages/settings/SettingsLog.qml index ad75d6a5..efe06f0e 100644 --- a/pages/settings/SettingsLog.qml +++ b/pages/settings/SettingsLog.qml @@ -180,7 +180,7 @@ Rectangle { consoleArea.append(msg); } function logMessage(msg){ - msg = msg.trim(); + msg = Utils.htmlEscape(msg.trim()); var color = MoneroComponents.Style.defaultFontColor; if(msg.toLowerCase().indexOf('error') >= 0){ color = MoneroComponents.Style.errorColor;