From d5fdc148c98fa9e4f9276c3fcd5246592c98d162 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Blin?= <sebastien.blin@savoirfairelinux.com> Date: Wed, 19 Apr 2023 08:51:31 -0400 Subject: [PATCH] conversationrepository: avoid segv in devices() GitLab: #847 Change-Id: Ia36596dc9250789b30536ff312bf6a3198bf7a10 --- src/jamidht/conversationrepository.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/jamidht/conversationrepository.cpp b/src/jamidht/conversationrepository.cpp index ab39480514..899d574cd8 100644 --- a/src/jamidht/conversationrepository.cpp +++ b/src/jamidht/conversationrepository.cpp @@ -189,12 +189,17 @@ public: std::map<std::string, std::vector<DeviceId>> devices() const { + auto repo = repository(); + if (!repo) + return {}; std::map<std::string, std::vector<DeviceId>> memberDevices; std::string deviceDir = fmt::format("{}devices/", - git_repository_workdir(repository().get())); + git_repository_workdir(repo.get())); for (const auto& file : fileutils::readDirectory(deviceDir)) { auto cert = std::make_shared<dht::crypto::Certificate>( fileutils::loadFile(deviceDir + file)); + if (!cert) + continue; memberDevices[cert->getIssuerUID()].emplace_back(cert->getPublicKey().getLongId()); } return memberDevices; -- GitLab