From 7642f639ef1ae7b178def73e070171e188db3c10 Mon Sep 17 00:00:00 2001 From: Vincent Texier <vit@free.fr> Date: Mon, 9 Feb 2015 21:30:01 +0100 Subject: [PATCH] check password for non printable chars fix bug on request if transfert amount is 0 --- src/cutecoin/gui/password_asker.py | 31 +++++++++++++++++++++++------- src/cutecoin/gui/transfer.py | 6 ++++++ 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/cutecoin/gui/password_asker.py b/src/cutecoin/gui/password_asker.py index 96d1dbcd..82bad7c5 100644 --- a/src/cutecoin/gui/password_asker.py +++ b/src/cutecoin/gui/password_asker.py @@ -5,6 +5,8 @@ Created on 24 dec. 2014 ''' import logging +import unicodedata +import re from PyQt5.QtWidgets import QDialog, QMessageBox @@ -40,16 +42,24 @@ class PasswordAskerDialog(QDialog, Ui_PasswordAskerDialog): def accept(self): password = self.edit_password.text() - if self.account.check_password(password): - self.remember = self.check_remember.isChecked() - self.password = password - self.edit_password.setText("") - logging.debug("Password is valid") - super().accept() - else: + + if detect_non_printable(password): + QMessageBox.warning(self, "Bad password", + "Non printable characters in password", + QMessageBox.Ok) + return False + + if not self.account.check_password(password): QMessageBox.warning(self, "Failed to get private key", "Wrong password typed. Cannot open the private key", 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): self.edit_password.setText("") @@ -57,3 +67,10 @@ class PasswordAskerDialog(QDialog, Ui_PasswordAskerDialog): self.setResult(QDialog.Accepted) self.password = "" 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 diff --git a/src/cutecoin/gui/transfer.py b/src/cutecoin/gui/transfer.py index 344a7d13..2d3c5314 100644 --- a/src/cutecoin/gui/transfer.py +++ b/src/cutecoin/gui/transfer.py @@ -55,6 +55,12 @@ class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog): recipient = self.edit_pubkey.text() 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_() if self.password_asker.result() == QDialog.Rejected: return -- GitLab