From 6bff8561588fb28a4142276a3c25c916ea2e662d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Wed, 22 Apr 2020 02:00:06 -0400 Subject: [PATCH] account manager: check info Change-Id: Iccae983c6d70ba47e0ec20c83d209c16bbe8b2b0 --- src/jamidht/account_manager.cpp | 25 ++++++++++++++++++------- src/jamidht/account_manager.h | 2 +- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/jamidht/account_manager.cpp b/src/jamidht/account_manager.cpp index a9f336f81d..5f4ab2d387 100644 --- a/src/jamidht/account_manager.cpp +++ b/src/jamidht/account_manager.cpp @@ -320,6 +320,10 @@ AccountManager::addContact(const std::string& uri, bool confirmed) JAMI_ERR("addContact: invalid contact URI"); return; } + if (not info_) { + JAMI_ERR("addContact(): account not loaded"); + return; + } if (info_->contacts->addContact(h, confirmed)) { syncDevices(); } @@ -333,6 +337,10 @@ AccountManager::removeContact(const std::string& uri, bool banned) JAMI_ERR("removeContact: invalid contact URI"); return; } + if (not info_) { + JAMI_ERR("addContact(): account not loaded"); + return; + } if (info_->contacts->removeContact(h, banned)) { syncDevices(); } @@ -391,25 +399,25 @@ AccountManager::findCertificate(const dht::InfoHash& h, std::function<void(const bool AccountManager::setCertificateStatus(const std::string& cert_id, tls::TrustStore::PermissionStatus status) { - return info_->contacts->setCertificateStatus(cert_id, status); + return info_ and info_->contacts->setCertificateStatus(cert_id, status); } std::vector<std::string> AccountManager::getCertificatesByStatus(tls::TrustStore::PermissionStatus status) { - return info_->contacts->getCertificatesByStatus(status); + return info_ ? info_->contacts->getCertificatesByStatus(status) : std::vector<std::string>{}; } tls::TrustStore::PermissionStatus AccountManager::getCertificateStatus(const std::string& cert_id) const { - return info_->contacts->getCertificateStatus(cert_id); + return info_ ? info_->contacts->getCertificateStatus(cert_id) : tls::TrustStore::PermissionStatus::UNDEFINED; } bool AccountManager::isAllowed(const crypto::Certificate& crt, bool allowPublic) { - return info_->contacts->isAllowed(crt, allowPublic); + return info_ and info_->contacts->isAllowed(crt, allowPublic); } std::vector<std::map<std::string, std::string>> @@ -426,7 +434,7 @@ bool AccountManager::acceptTrustRequest(const std::string& from) { dht::InfoHash f(from); - if (info_->contacts->acceptTrustRequest(f)) { + if (info_ and info_->contacts->acceptTrustRequest(f)) { sendTrustRequestConfirm(f); syncDevices(); return true; @@ -438,7 +446,7 @@ bool AccountManager::discardTrustRequest(const std::string& from) { dht::InfoHash f(from); - return info_->contacts->discardTrustRequest(f); + return info_ and info_->contacts->discardTrustRequest(f); } void @@ -450,6 +458,10 @@ AccountManager::sendTrustRequest(const std::string& to, const std::vector<uint8_ JAMI_ERR("can't send trust request to invalid hash: %s", to.c_str()); return; } + if (not info_) { + JAMI_ERR("sendTrustRequest(): account not loaded"); + return; + } if (info_->contacts->addContact(toH)) { syncDevices(); } @@ -474,7 +486,6 @@ AccountManager::sendTrustRequestConfirm(const dht::InfoHash& toH) }); } - void AccountManager::forEachDevice(const dht::InfoHash& to, std::function<void(const dht::InfoHash&)>&& op, diff --git a/src/jamidht/account_manager.h b/src/jamidht/account_manager.h index 4a0b94428a..0e7baa8260 100644 --- a/src/jamidht/account_manager.h +++ b/src/jamidht/account_manager.h @@ -135,7 +135,7 @@ public: virtual void startSync(); const AccountInfo* getInfo() const { - return info_.get() ; + return info_.get(); } // Device management -- GitLab