diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c6b67df..35b96e57 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -337,6 +337,8 @@ if(APPLE) endif() # warnings +add_c_flag_if_supported(-Werror C_SECURITY_FLAGS) +add_cxx_flag_if_supported(-Werror CXX_SECURITY_FLAGS) add_c_flag_if_supported(-Wformat C_SECURITY_FLAGS) add_cxx_flag_if_supported(-Wformat CXX_SECURITY_FLAGS) add_c_flag_if_supported(-Wformat-security C_SECURITY_FLAGS) diff --git a/monero-wallet-gui.pro b/monero-wallet-gui.pro index 2a49e2b2..4fe0aed0 100644 --- a/monero-wallet-gui.pro +++ b/monero-wallet-gui.pro @@ -176,8 +176,8 @@ android { -QMAKE_CXXFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -Wformat -Wformat-security -QMAKE_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -Wformat -Wformat-security +QMAKE_CXXFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -Werror -Wformat -Wformat-security +QMAKE_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -Werror -Wformat -Wformat-security ios { message("Host is IOS") diff --git a/src/daemon/DaemonManager.cpp b/src/daemon/DaemonManager.cpp index 8d995458..4b873dc5 100644 --- a/src/daemon/DaemonManager.cpp +++ b/src/daemon/DaemonManager.cpp @@ -27,6 +27,7 @@ // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "DaemonManager.h" +#include #include #include #include @@ -36,7 +37,6 @@ #include #include #include -#include #include #include #include @@ -173,8 +173,8 @@ bool DaemonManager::stop(NetworkType::Type nettype) bool DaemonManager::startWatcher(NetworkType::Type nettype) const { // Check if daemon is started every 2 seconds - QTime timer; - timer.restart(); + QElapsedTimer timer; + timer.start(); while(true && !m_app_exit && timer.elapsed() / 1000 < DAEMON_START_TIMEOUT_SECONDS ) { QThread::sleep(2); if(!running(nettype)) { diff --git a/src/libwalletqt/AddressBook.cpp b/src/libwalletqt/AddressBook.cpp index d51fecc0..d20abb86 100644 --- a/src/libwalletqt/AddressBook.cpp +++ b/src/libwalletqt/AddressBook.cpp @@ -32,7 +32,6 @@ AddressBook::AddressBook(Monero::AddressBook *abImpl,QObject *parent) : QObject(parent), m_addressBookImpl(abImpl) { - qDebug(__FUNCTION__); getAll(); } @@ -48,8 +47,6 @@ int AddressBook::errorCode() const void AddressBook::getAll() { - qDebug(__FUNCTION__); - emit refreshStarted(); { diff --git a/src/libwalletqt/AddressBook.h b/src/libwalletqt/AddressBook.h index 1d9309b3..8942b86e 100644 --- a/src/libwalletqt/AddressBook.h +++ b/src/libwalletqt/AddressBook.h @@ -36,7 +36,7 @@ #include namespace Monero { -class AddressBook; +struct AddressBook; } class AddressBookRow; diff --git a/src/libwalletqt/Subaddress.cpp b/src/libwalletqt/Subaddress.cpp index daa45d20..013ea68f 100644 --- a/src/libwalletqt/Subaddress.cpp +++ b/src/libwalletqt/Subaddress.cpp @@ -32,14 +32,11 @@ Subaddress::Subaddress(Monero::Subaddress *subaddressImpl, QObject *parent) : QObject(parent), m_subaddressImpl(subaddressImpl) { - qDebug(__FUNCTION__); getAll(); } void Subaddress::getAll() const { - qDebug(__FUNCTION__); - emit refreshStarted(); { diff --git a/src/libwalletqt/SubaddressAccount.cpp b/src/libwalletqt/SubaddressAccount.cpp index 940413a7..178a9355 100644 --- a/src/libwalletqt/SubaddressAccount.cpp +++ b/src/libwalletqt/SubaddressAccount.cpp @@ -32,14 +32,11 @@ SubaddressAccount::SubaddressAccount(Monero::SubaddressAccount *subaddressAccountImpl, QObject *parent) : QObject(parent), m_subaddressAccountImpl(subaddressAccountImpl) { - qDebug(__FUNCTION__); getAll(); } void SubaddressAccount::getAll() const { - qDebug(__FUNCTION__); - emit refreshStarted(); { diff --git a/src/libwalletqt/TransactionHistory.h b/src/libwalletqt/TransactionHistory.h index cf364782..519f454f 100644 --- a/src/libwalletqt/TransactionHistory.h +++ b/src/libwalletqt/TransactionHistory.h @@ -37,7 +37,7 @@ #include namespace Monero { -class TransactionHistory; +struct TransactionHistory; } class TransactionInfo; diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp index 89707b5a..4b37b3b8 100644 --- a/src/libwalletqt/Wallet.cpp +++ b/src/libwalletqt/Wallet.cpp @@ -68,38 +68,38 @@ public: } - virtual void moneySpent(const std::string &txId, uint64_t amount) + virtual void moneySpent(const std::string &txId, uint64_t amount) override { qDebug() << __FUNCTION__; emit m_wallet->moneySpent(QString::fromStdString(txId), amount); } - virtual void moneyReceived(const std::string &txId, uint64_t amount) + virtual void moneyReceived(const std::string &txId, uint64_t amount) override { qDebug() << __FUNCTION__; emit m_wallet->moneyReceived(QString::fromStdString(txId), amount); } - virtual void unconfirmedMoneyReceived(const std::string &txId, uint64_t amount) + virtual void unconfirmedMoneyReceived(const std::string &txId, uint64_t amount) override { qDebug() << __FUNCTION__; emit m_wallet->unconfirmedMoneyReceived(QString::fromStdString(txId), amount); } - virtual void newBlock(uint64_t height) + virtual void newBlock(uint64_t height) override { // qDebug() << __FUNCTION__; emit m_wallet->newBlock(height, m_wallet->daemonBlockChainTargetHeight()); } - virtual void updated() + virtual void updated() override { emit m_wallet->updated(); } // called when wallet refreshed by background thread or explicitly - virtual void refreshed() + virtual void refreshed() override { qDebug() << __FUNCTION__; emit m_wallet->refreshed(); @@ -1028,9 +1028,9 @@ Wallet::Wallet(Monero::Wallet *w, QObject *parent) m_walletImpl->setListener(m_walletListener); m_currentSubaddressAccount = getCacheAttribute(ATTRIBUTE_SUBADDRESS_ACCOUNT).toUInt(); // start cache timers - m_connectionStatusTime.restart(); - m_daemonBlockChainHeightTime.restart(); - m_daemonBlockChainTargetHeightTime.restart(); + m_connectionStatusTime.start(); + m_daemonBlockChainHeightTime.start(); + m_daemonBlockChainTargetHeightTime.start(); m_initialized = false; m_connectionStatusRunning = false; m_daemonUsername = ""; diff --git a/src/libwalletqt/Wallet.h b/src/libwalletqt/Wallet.h index 2646da30..12c90fc4 100644 --- a/src/libwalletqt/Wallet.h +++ b/src/libwalletqt/Wallet.h @@ -29,8 +29,8 @@ #ifndef WALLET_H #define WALLET_H +#include #include -#include #include #include #include @@ -43,7 +43,7 @@ #include "NetworkType.h" namespace Monero { - class Wallet; // forward declaration +struct Wallet; // forward declaration } @@ -406,15 +406,15 @@ private: QString m_paymentId; AddressBook * m_addressBook; mutable AddressBookModel * m_addressBookModel; - mutable QTime m_daemonBlockChainHeightTime; + mutable QElapsedTimer m_daemonBlockChainHeightTime; mutable quint64 m_daemonBlockChainHeight; int m_daemonBlockChainHeightTtl; - mutable QTime m_daemonBlockChainTargetHeightTime; + mutable QElapsedTimer m_daemonBlockChainTargetHeightTime; mutable quint64 m_daemonBlockChainTargetHeight; int m_daemonBlockChainTargetHeightTtl; mutable ConnectionStatus m_connectionStatus; int m_connectionStatusTtl; - mutable QTime m_connectionStatusTime; + mutable QElapsedTimer m_connectionStatusTime; bool m_disconnected; mutable bool m_initialized; uint32_t m_currentSubaddressAccount; diff --git a/src/libwalletqt/WalletManager.h b/src/libwalletqt/WalletManager.h index a37d0466..e5243caf 100644 --- a/src/libwalletqt/WalletManager.h +++ b/src/libwalletqt/WalletManager.h @@ -42,7 +42,7 @@ class Wallet; namespace Monero { - class WalletManager; +struct WalletManager; } class WalletManager : public QObject diff --git a/src/main/main.cpp b/src/main/main.cpp index 8d710981..9606ad7a 100644 --- a/src/main/main.cpp +++ b/src/main/main.cpp @@ -269,7 +269,7 @@ int main(int argc, char *argv[]) // screen settings // Mobile is designed on 128dpi qreal ref_dpi = 128; - QRect geo = QApplication::desktop()->availableGeometry(); + QRect geo = QGuiApplication::primaryScreen()->availableGeometry(); QRect rect = QGuiApplication::primaryScreen()->geometry(); qreal dpi = QGuiApplication::primaryScreen()->logicalDotsPerInch(); qreal physicalDpi = QGuiApplication::primaryScreen()->physicalDotsPerInch(); diff --git a/src/model/AddressBookModel.cpp b/src/model/AddressBookModel.cpp index c21fa2f6..98145bd1 100644 --- a/src/model/AddressBookModel.cpp +++ b/src/model/AddressBookModel.cpp @@ -35,18 +35,15 @@ AddressBookModel::AddressBookModel(QObject *parent, AddressBook *addressBook) : QAbstractListModel(parent) , m_addressBook(addressBook) { - qDebug(__FUNCTION__); connect(m_addressBook,SIGNAL(refreshStarted()),this,SLOT(startReset())); connect(m_addressBook,SIGNAL(refreshFinished()),this,SLOT(endReset())); } void AddressBookModel::startReset(){ - qDebug(__FUNCTION__); beginResetModel(); } void AddressBookModel::endReset(){ - qDebug(__FUNCTION__); endResetModel(); } diff --git a/src/model/SubaddressAccountModel.cpp b/src/model/SubaddressAccountModel.cpp index c84b4532..51721b8b 100644 --- a/src/model/SubaddressAccountModel.cpp +++ b/src/model/SubaddressAccountModel.cpp @@ -35,17 +35,14 @@ SubaddressAccountModel::SubaddressAccountModel(QObject *parent, SubaddressAccount *subaddressAccount) : QAbstractListModel(parent), m_subaddressAccount(subaddressAccount) { - qDebug(__FUNCTION__); connect(m_subaddressAccount,SIGNAL(refreshStarted()),this,SLOT(startReset())); connect(m_subaddressAccount,SIGNAL(refreshFinished()),this,SLOT(endReset())); } void SubaddressAccountModel::startReset(){ - qDebug("SubaddressAccountModel::startReset"); beginResetModel(); } void SubaddressAccountModel::endReset(){ - qDebug("SubaddressAccountModel::endReset"); endResetModel(); } diff --git a/src/model/SubaddressModel.cpp b/src/model/SubaddressModel.cpp index 88f80d94..38168ecf 100644 --- a/src/model/SubaddressModel.cpp +++ b/src/model/SubaddressModel.cpp @@ -35,18 +35,15 @@ SubaddressModel::SubaddressModel(QObject *parent, Subaddress *subaddress) : QAbstractListModel(parent), m_subaddress(subaddress) { - qDebug(__FUNCTION__); connect(m_subaddress,SIGNAL(refreshStarted()),this,SLOT(startReset())); connect(m_subaddress,SIGNAL(refreshFinished()),this,SLOT(endReset())); } void SubaddressModel::startReset(){ - qDebug(__FUNCTION__); beginResetModel(); } void SubaddressModel::endReset(){ - qDebug(__FUNCTION__); endResetModel(); } diff --git a/src/qt/FutureScheduler.cpp b/src/qt/FutureScheduler.cpp index 17551c15..b15101e4 100644 --- a/src/qt/FutureScheduler.cpp +++ b/src/qt/FutureScheduler.cpp @@ -38,7 +38,7 @@ QPair> FutureScheduler::run(std::function function) }); } -QPair> FutureScheduler::run(std::function function, const QJSValue &callback) +QPair> FutureScheduler::run(std::function function, const QJSValue &callback) { if (!callback.isCallable()) { diff --git a/src/qt/FutureScheduler.h b/src/qt/FutureScheduler.h index 776fb08c..ab9f323d 100644 --- a/src/qt/FutureScheduler.h +++ b/src/qt/FutureScheduler.h @@ -22,20 +22,12 @@ public: void shutdownWaitForFinished() noexcept; QPair> run(std::function function) noexcept; - QPair> run(std::function function, const QJSValue &callback); + QPair> run(std::function function, const QJSValue &callback); private: bool add() noexcept; void done() noexcept; - template - QFutureWatcher *newWatcher() - { - QFutureWatcher *watcher = new QFutureWatcher(); - - return watcher; - } - template QPair> execute(std::function(QFutureWatcher *)> makeFuture) noexcept { @@ -43,8 +35,8 @@ private: { try { - auto *watcher = newWatcher(); - connect(watcher, &QFutureWatcher::finished, [this, watcher] { + auto *watcher = new QFutureWatcher(); + connect(watcher, &QFutureWatcher::finished, [watcher] { watcher->deleteLater(); }); watcher->setFuture(makeFuture(watcher)); diff --git a/src/qt/KeysFiles.cpp b/src/qt/KeysFiles.cpp index 85697c6d..0d633439 100644 --- a/src/qt/KeysFiles.cpp +++ b/src/qt/KeysFiles.cpp @@ -43,8 +43,8 @@ #include "KeysFiles.h" -WalletKeysFiles::WalletKeysFiles(const qint64 &modified, const qint64 &created, const QString &path, const quint8 &networkType, const QString &address) - : m_modified(modified), m_created(created), m_path(path), m_networkType(networkType), m_address(address) +WalletKeysFiles::WalletKeysFiles(const qint64 &modified, const QString &path, const quint8 &networkType, const QString &address) + : m_modified(modified), m_path(path), m_networkType(networkType), m_address(address) { } @@ -58,11 +58,6 @@ QString WalletKeysFiles::address() const return m_address; } -qint64 WalletKeysFiles::created() const -{ - return m_created; -} - QString WalletKeysFiles::path() const { return m_path; @@ -134,10 +129,8 @@ void WalletKeysFilesModel::findWallets(const QString &moneroAccountsDir) const QFileInfo info(wallet); const QDateTime modifiedAt = info.lastModified(); - const QDateTime createdAt = info.created(); // @TODO: QFileInfo::birthTime() >= Qt 5.10 this->addWalletKeysFile(WalletKeysFiles(modifiedAt.toSecsSinceEpoch(), - createdAt.toSecsSinceEpoch(), info.absoluteFilePath(), networkType, address)); } } @@ -167,8 +160,6 @@ QVariant WalletKeysFilesModel::data(const QModelIndex & index, int role) const { return walletKeyFile.networkType(); else if (role == AddressRole) return walletKeyFile.address(); - else if (role == CreatedRole) - return walletKeyFile.created(); return QVariant(); } @@ -178,6 +169,5 @@ QHash WalletKeysFilesModel::roleNames() const { roles[PathRole] = "path"; roles[NetworkTypeRole] = "networktype"; roles[AddressRole] = "address"; - roles[CreatedRole] = "created"; return roles; } diff --git a/src/qt/KeysFiles.h b/src/qt/KeysFiles.h index afdc0216..6a9339e3 100644 --- a/src/qt/KeysFiles.h +++ b/src/qt/KeysFiles.h @@ -37,17 +37,15 @@ class WalletKeysFiles { public: - WalletKeysFiles(const qint64 &modified, const qint64 &created, const QString &path, const quint8 &networkType, const QString &address); + WalletKeysFiles(const qint64 &modified, const QString &path, const quint8 &networkType, const QString &address); qint64 modified() const; - qint64 created() const; QString path() const; quint8 networkType() const; QString address() const; private: qint64 m_modified; - qint64 m_created; QString m_path; quint8 m_networkType; QString m_address; @@ -61,8 +59,7 @@ public: ModifiedRole = Qt::UserRole + 1, PathRole, NetworkTypeRole, - AddressRole, - CreatedRole + AddressRole }; WalletKeysFilesModel(WalletManager *walletManager, QObject *parent = 0); diff --git a/src/zxcvbn-c/dict-generate.cpp b/src/zxcvbn-c/dict-generate.cpp index 410182d6..89d09222 100644 --- a/src/zxcvbn-c/dict-generate.cpp +++ b/src/zxcvbn-c/dict-generate.cpp @@ -884,7 +884,7 @@ void CreateArrays(NodeSPtr Root, StringIntSet_t & StrSet, StringOfInts & ChildAd if (x >= (1 << BITS_CHILD_MAP_INDEX)) { char Tmp[20]; - snprintf(Tmp, sizeof Tmp, "%lu", x); + snprintf(Tmp, sizeof Tmp, "%zu", x); throw string("Not enough bits for child map index value of ") + Tmp + " for " + Its->s + " (BITS_CHILD_MAP_INDEX too small)"; } @@ -1046,7 +1046,7 @@ static int OutputBinary(ostream *Out, const string & ChkFile, const string & Cha Out->write((char *)WordEnds, NumWordEnd); h(WordEnds, NumWordEnd); OutputSize += NumWordEnd; - delete WordEnds; + delete[] WordEnds; StringIntSet_t::iterator Its; string Str; diff --git a/src/zxcvbn-c/zxcvbn.c b/src/zxcvbn-c/zxcvbn.c index 22de6d04..f9319aaf 100644 --- a/src/zxcvbn-c/zxcvbn.c +++ b/src/zxcvbn-c/zxcvbn.c @@ -960,7 +960,7 @@ typedef struct } SpatialMatchInfo_t; /* Shift mapping, characters in pairs: first is shifted, second un-shifted. */ -static const uint8_t UK_Shift[] = "!1\"2$4%5&7(9)0*8:;<,>.?/@'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz^6_-{[|\\}]~#€4£3¬`"; +static const uint8_t UK_Shift[] = "!1\"2$4%5&7(9)0*8:;<,>.?/@'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz^6_-{[|\\}]~#\x80""4\xA3""3\xAC`"; static const uint8_t US_Shift[] = "!1\"'#3$4%5&7(9)0*8:;<,>.?/@2AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz^6_-{[|\\}]~`";