Skip to content
Snippets Groups Projects
Commit 7642f639 authored by Vincent Texier's avatar Vincent Texier
Browse files

check password for non printable chars

fix bug on request if transfert amount is 0
parent 57e00bcf
No related branches found
No related tags found
No related merge requests found
...@@ -5,6 +5,8 @@ Created on 24 dec. 2014 ...@@ -5,6 +5,8 @@ Created on 24 dec. 2014
''' '''
import logging import logging
import unicodedata
import re
from PyQt5.QtWidgets import QDialog, QMessageBox from PyQt5.QtWidgets import QDialog, QMessageBox
...@@ -40,16 +42,24 @@ class PasswordAskerDialog(QDialog, Ui_PasswordAskerDialog): ...@@ -40,16 +42,24 @@ class PasswordAskerDialog(QDialog, Ui_PasswordAskerDialog):
def accept(self): def accept(self):
password = self.edit_password.text() password = self.edit_password.text()
if self.account.check_password(password):
self.remember = self.check_remember.isChecked() if detect_non_printable(password):
self.password = password QMessageBox.warning(self, "Bad password",
self.edit_password.setText("") "Non printable characters in password",
logging.debug("Password is valid") QMessageBox.Ok)
super().accept() return False
else:
if not self.account.check_password(password):
QMessageBox.warning(self, "Failed to get private key", QMessageBox.warning(self, "Failed to get private key",
"Wrong password typed. Cannot open the private key", "Wrong password typed. Cannot open the private key",
QMessageBox.Ok) QMessageBox.Ok)
return False
self.remember = self.check_remember.isChecked()
self.password = password
self.edit_password.setText("")
logging.debug("Password is valid")
super().accept()
def reject(self): def reject(self):
self.edit_password.setText("") self.edit_password.setText("")
...@@ -57,3 +67,10 @@ class PasswordAskerDialog(QDialog, Ui_PasswordAskerDialog): ...@@ -57,3 +67,10 @@ class PasswordAskerDialog(QDialog, Ui_PasswordAskerDialog):
self.setResult(QDialog.Accepted) self.setResult(QDialog.Accepted)
self.password = "" self.password = ""
super().reject() super().reject()
def detect_non_printable(data):
control_chars = ''.join(map(chr, list(range(0, 32)) + list(range(127, 160))))
control_char_re = re.compile('[%s]' % re.escape(control_chars))
if control_char_re.search(data):
return True
...@@ -55,6 +55,12 @@ class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog): ...@@ -55,6 +55,12 @@ class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog):
recipient = self.edit_pubkey.text() recipient = self.edit_pubkey.text()
amount = self.spinbox_amount.value() amount = self.spinbox_amount.value()
if not amount:
QMessageBox.critical(self, "Money transfer",
"No amount. Please give the transfert amount",
QMessageBox.Ok)
return
password = self.password_asker.exec_() password = self.password_asker.exec_()
if self.password_asker.result() == QDialog.Rejected: if self.password_asker.result() == QDialog.Rejected:
return return
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment