aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorselsta <selsta@sent.at>2026-04-17 18:02:58 +0200
committerselsta <selsta@sent.at>2026-04-17 18:02:58 +0200
commit23ec5eb6a1dc61ef72a3ca4c9bb5942cbf60d959 (patch)
treeecf14bd8dd24d33aa9542f18fc5c159c00ffa308
parent49c3e498c79b28740a7febb8c74dfa87dbf20298 (diff)
downloadmonzero-gui-23ec5eb6a1dc61ef72a3ca4c9bb5942cbf60d959.tar.gz
monzero-gui-23ec5eb6a1dc61ef72a3ca4c9bb5942cbf60d959.tar.xz
monzero-gui-23ec5eb6a1dc61ef72a3ca4c9bb5942cbf60d959.zip
qml: escape untrusted text in RichText views
-rw-r--r--components/TxConfirmationDialog.qml3
-rw-r--r--js/Utils.js10
-rw-r--r--pages/settings/SettingsLog.qml2
3 files changed, 13 insertions, 2 deletions
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, "&amp;")
+ .replace(/</g, "&lt;")
+ .replace(/>/g, "&gt;")
+ .replace(/"/g, "&quot;");
+}
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;