From b9370c6e7938d759b6099c4d20fa1611b9baf7a6 Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Sat, 22 Mar 2014 12:07:06 +0100 Subject: [PATCH] More careful null checking and member initalization. --- src/autotype/AutoType.cpp | 1 + src/core/Entry.cpp | 1 + src/crypto/SymmetricCipher.cpp | 1 - src/crypto/SymmetricCipherBackend.h | 1 - src/crypto/SymmetricCipherGcrypt.cpp | 23 ++++++++++------------- src/crypto/SymmetricCipherGcrypt.h | 1 - src/crypto/SymmetricCipherSalsa20.cpp | 4 ---- src/crypto/SymmetricCipherSalsa20.h | 1 - src/gui/DatabaseWidget.cpp | 16 ++++++++++++++-- src/gui/EditWidgetIcons.cpp | 1 + src/gui/MainWindow.cpp | 6 +++--- src/gui/SettingsWidget.cpp | 2 ++ 12 files changed, 32 insertions(+), 26 deletions(-) diff --git a/src/autotype/AutoType.cpp b/src/autotype/AutoType.cpp index 80955a3b4..5c28b4d66 100644 --- a/src/autotype/AutoType.cpp +++ b/src/autotype/AutoType.cpp @@ -40,6 +40,7 @@ AutoType::AutoType(QObject* parent, bool test) , m_pluginLoader(new QPluginLoader(this)) , m_plugin(Q_NULLPTR) , m_executor(Q_NULLPTR) + , m_windowFromGlobal(0) { // prevent crash when the plugin has unresolved symbols m_pluginLoader->setLoadHints(QLibrary::ResolveAllSymbolsHint); diff --git a/src/core/Entry.cpp b/src/core/Entry.cpp index 2c3d2aa9b..55f543285 100644 --- a/src/core/Entry.cpp +++ b/src/core/Entry.cpp @@ -30,6 +30,7 @@ Entry::Entry() , m_attachments(new EntryAttachments(this)) , m_autoTypeAssociations(new AutoTypeAssociations(this)) , m_tmpHistoryItem(Q_NULLPTR) + , m_modifiedSinceBegin(false) , m_updateTimeinfo(true) { m_data.iconNumber = DefaultIconNumber; diff --git a/src/crypto/SymmetricCipher.cpp b/src/crypto/SymmetricCipher.cpp index 44220ce39..5f9222653 100644 --- a/src/crypto/SymmetricCipher.cpp +++ b/src/crypto/SymmetricCipher.cpp @@ -25,7 +25,6 @@ SymmetricCipher::SymmetricCipher(SymmetricCipher::Algorithm algo, SymmetricCiphe SymmetricCipher::Direction direction, const QByteArray& key, const QByteArray& iv) : m_backend(createBackend(algo, mode, direction)) { - m_backend->init(); m_backend->setKey(key); m_backend->setIv(iv); } diff --git a/src/crypto/SymmetricCipherBackend.h b/src/crypto/SymmetricCipherBackend.h index fbad9b065..e6110cba5 100644 --- a/src/crypto/SymmetricCipherBackend.h +++ b/src/crypto/SymmetricCipherBackend.h @@ -24,7 +24,6 @@ class SymmetricCipherBackend { public: virtual ~SymmetricCipherBackend() {} - virtual void init() = 0; virtual void setKey(const QByteArray& key) = 0; virtual void setIv(const QByteArray& iv) = 0; diff --git a/src/crypto/SymmetricCipherGcrypt.cpp b/src/crypto/SymmetricCipherGcrypt.cpp index 14307949e..cf52bafab 100644 --- a/src/crypto/SymmetricCipherGcrypt.cpp +++ b/src/crypto/SymmetricCipherGcrypt.cpp @@ -28,6 +28,16 @@ SymmetricCipherGcrypt::SymmetricCipherGcrypt(SymmetricCipher::Algorithm algo, Sy , m_blockSize(-1) { Q_ASSERT(Crypto::initalized()); + + gcry_error_t error; + + error = gcry_cipher_open(&m_ctx, m_algo, m_mode, 0); + Q_ASSERT(error == 0); // TODO: real error checking + + size_t blockSizeT; + error = gcry_cipher_algo_info(m_algo, GCRYCTL_GET_BLKLEN, Q_NULLPTR, &blockSizeT); + Q_ASSERT(error == 0); + m_blockSize = blockSizeT; } SymmetricCipherGcrypt::~SymmetricCipherGcrypt() @@ -73,19 +83,6 @@ int SymmetricCipherGcrypt::gcryptMode(SymmetricCipher::Mode mode) } } -void SymmetricCipherGcrypt::init() -{ - gcry_error_t error; - - error = gcry_cipher_open(&m_ctx, m_algo, m_mode, 0); - Q_ASSERT(error == 0); // TODO: real error checking - - size_t blockSizeT; - error = gcry_cipher_algo_info(m_algo, GCRYCTL_GET_BLKLEN, Q_NULLPTR, &blockSizeT); - Q_ASSERT(error == 0); - m_blockSize = blockSizeT; -} - void SymmetricCipherGcrypt::setKey(const QByteArray& key) { m_key = key; diff --git a/src/crypto/SymmetricCipherGcrypt.h b/src/crypto/SymmetricCipherGcrypt.h index 2b255df5d..c22059a4e 100644 --- a/src/crypto/SymmetricCipherGcrypt.h +++ b/src/crypto/SymmetricCipherGcrypt.h @@ -29,7 +29,6 @@ public: SymmetricCipherGcrypt(SymmetricCipher::Algorithm algo, SymmetricCipher::Mode mode, SymmetricCipher::Direction direction); ~SymmetricCipherGcrypt(); - void init(); void setKey(const QByteArray& key); void setIv(const QByteArray& iv); diff --git a/src/crypto/SymmetricCipherSalsa20.cpp b/src/crypto/SymmetricCipherSalsa20.cpp index d8adb05dc..d17325442 100644 --- a/src/crypto/SymmetricCipherSalsa20.cpp +++ b/src/crypto/SymmetricCipherSalsa20.cpp @@ -33,10 +33,6 @@ SymmetricCipherSalsa20::~SymmetricCipherSalsa20() { } -void SymmetricCipherSalsa20::init() -{ -} - void SymmetricCipherSalsa20::setKey(const QByteArray& key) { Q_ASSERT((key.size() == 16) || (key.size() == 32)); diff --git a/src/crypto/SymmetricCipherSalsa20.h b/src/crypto/SymmetricCipherSalsa20.h index ea91e71e7..e3e4726f8 100644 --- a/src/crypto/SymmetricCipherSalsa20.h +++ b/src/crypto/SymmetricCipherSalsa20.h @@ -31,7 +31,6 @@ public: void setAlgorithm(SymmetricCipher::Algorithm algo); void setMode(SymmetricCipher::Mode mode); void setDirection(SymmetricCipher::Direction direction); - void init(); void setKey(const QByteArray& key); void setIv(const QByteArray& iv); diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index 08000b919..56ab8b6ac 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -591,12 +591,24 @@ void DatabaseWidget::entryActivationSignalReceived(Entry* entry, EntryModel::Mod void DatabaseWidget::switchToEntryEdit() { - switchToEntryEdit(m_entryView->currentEntry(), false); + Entry* entry = m_entryView->currentEntry(); + Q_ASSERT(entry); + if (!entry) { + return; + } + + switchToEntryEdit(entry, false); } void DatabaseWidget::switchToGroupEdit() { - switchToGroupEdit(m_groupView->currentGroup(), false); + Group* group = m_groupView->currentGroup(); + Q_ASSERT(group); + if (!group) { + return; + } + + switchToGroupEdit(group, false); } void DatabaseWidget::switchToMasterKeyChange() diff --git a/src/gui/EditWidgetIcons.cpp b/src/gui/EditWidgetIcons.cpp index 396448dab..26314d360 100644 --- a/src/gui/EditWidgetIcons.cpp +++ b/src/gui/EditWidgetIcons.cpp @@ -35,6 +35,7 @@ IconStruct::IconStruct() EditWidgetIcons::EditWidgetIcons(QWidget* parent) : QWidget(parent) , m_ui(new Ui::EditWidgetIcons()) + , m_database(Q_NULLPTR) , m_defaultIconModel(new DefaultIconModel(this)) , m_customIconModel(new CustomIconModel(this)) { diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 57f2d45c6..991528e3b 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -226,7 +226,9 @@ void MainWindow::updateCopyAttributesMenu() if (!dbWidget) { return; } - if (!dbWidget->entryView()->isSingleEntrySelected()) { + + Entry* entry = dbWidget->entryView()->currentEntry(); + if (!entry || !dbWidget->entryView()->isSingleEntrySelected()) { return; } @@ -235,8 +237,6 @@ void MainWindow::updateCopyAttributesMenu() delete actions[i]; } - Entry* entry = dbWidget->entryView()->currentEntry(); - Q_FOREACH (const QString& key, entry->attributes()->customKeys()) { QAction* action = m_ui->menuEntryCopyAttribute->addAction(key); m_copyAdditionalAttributeActions->addAction(action); diff --git a/src/gui/SettingsWidget.cpp b/src/gui/SettingsWidget.cpp index 75098eb65..d8516c6d5 100644 --- a/src/gui/SettingsWidget.cpp +++ b/src/gui/SettingsWidget.cpp @@ -28,6 +28,8 @@ SettingsWidget::SettingsWidget(QWidget* parent) , m_generalWidget(new QWidget()) , m_secUi(new Ui::SettingsWidgetSecurity()) , m_generalUi(new Ui::SettingsWidgetGeneral()) + , m_globalAutoTypeKey(static_cast(0)) + , m_globalAutoTypeModifiers(Qt::NoModifier) { setHeadline(tr("Application Settings"));