From 7579b81b978f4ed5240a7eb0b70c3fb8bdad5abd Mon Sep 17 00:00:00 2001 From: Lorenzo Blasa Date: Mon, 17 Jan 2022 09:56:36 -0800 Subject: [PATCH] Add a bit of defence checks as to minimise exception likelihood when no medium is known Summary: ^ Changelog: Minimises the probability of throwing an exception if no exchange medium is known Reviewed By: passy Differential Revision: D33620655 fbshipit-source-id: e03e7fed0607c376add218ee98dcd2bd0f8880f1 --- xplat/Flipper/ConnectionContextStore.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/xplat/Flipper/ConnectionContextStore.cpp b/xplat/Flipper/ConnectionContextStore.cpp index a19f0d82a..04f5547ab 100644 --- a/xplat/Flipper/ConnectionContextStore.cpp +++ b/xplat/Flipper/ConnectionContextStore.cpp @@ -114,9 +114,16 @@ std::string ConnectionContextStore::getDeviceId() { folly::Optional ConnectionContextStore::getLastKnownMedium() { try { - std::string config = - loadStringFromFile(absoluteFilePath(CONNECTION_CONFIG_FILE)); - auto maybeMedium = folly::parseJson(config)["medium"]; + auto configurationFilePath = absoluteFilePath(CONNECTION_CONFIG_FILE); + if (!fileExists(configurationFilePath)) { + return folly::none; + } + std::string data = loadStringFromFile(configurationFilePath); + auto config = folly::parseJson(data); + if (config.count("medium") == 0) { + return folly::none; + } + auto maybeMedium = config["medium"]; return maybeMedium.isInt() ? folly::Optional{static_cast< FlipperCertificateExchangeMedium>(maybeMedium.getInt())}