Browse Source

qt: avoid potential proxy settings deserialization problems (fixes #8652)

master
Sander van Grieken 2 years ago
parent
commit
ab9c3bb9b4
No known key found for this signature in database
GPG Key ID: 9BCF8209EA402EBA
  1. 10
      electrum/gui/qt/network_dialog.py

10
electrum/gui/qt/network_dialog.py

@ -33,7 +33,7 @@ from PyQt5.QtCore import Qt, pyqtSignal, QThread
from PyQt5.QtWidgets import (QTreeWidget, QTreeWidgetItem, QMenu, QGridLayout, QComboBox,
QLineEdit, QDialog, QVBoxLayout, QHeaderView, QCheckBox,
QTabWidget, QWidget, QLabel)
from PyQt5.QtGui import QFontMetrics
from PyQt5.QtGui import QIntValidator
from electrum.i18n import _
from electrum import constants, blockchain, util
@ -53,6 +53,7 @@ _logger = get_logger(__name__)
protocol_names = ['TCP', 'SSL']
protocol_letters = 'ts'
class NetworkDialog(QDialog, QtEventListener):
def __init__(self, *, network: Network, config: 'SimpleConfig'):
QDialog.__init__(self)
@ -243,6 +244,9 @@ class NetworkChoiceLayout(object):
self.proxy_host.setFixedWidth(fixed_width_hostname)
self.proxy_port = QLineEdit()
self.proxy_port.setFixedWidth(fixed_width_port)
self.proxy_port_validator = QIntValidator(1, 65535)
self.proxy_port.setValidator(self.proxy_port_validator)
self.proxy_user = QLineEdit()
self.proxy_user.setPlaceholderText(_("Proxy user"))
self.proxy_password = PasswordLineEdit()
@ -427,6 +431,10 @@ class NetworkChoiceLayout(object):
def set_proxy(self):
net_params = self.network.get_parameters()
if self.proxy_cb.isChecked():
if not self.proxy_port.hasAcceptableInput():
return
if ':' in self.proxy_host.text(): # avoid deserialization pitfall
return
proxy = {'mode':str(self.proxy_mode.currentText()).lower(),
'host':str(self.proxy_host.text()),
'port':str(self.proxy_port.text()),

Loading…
Cancel
Save