From 15c4663b8c31968a14e9b61a4ccd5e9d657e8325 Mon Sep 17 00:00:00 2001 From: Justin Cohen Date: Wed, 27 Oct 2021 12:31:45 -0400 Subject: [PATCH] ios: Fail Crashpad initialization with invalid database path. Bug: crashpad:31 Change-Id: I1853af83a18675bee6dd99636f179db127e1ac47 Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3247291 Reviewed-by: Mark Mentovai Commit-Queue: Justin Cohen --- client/ios_handler/in_process_handler.cc | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/client/ios_handler/in_process_handler.cc b/client/ios_handler/in_process_handler.cc index 353e24b2..0b4c4b74 100644 --- a/client/ios_handler/in_process_handler.cc +++ b/client/ios_handler/in_process_handler.cc @@ -28,13 +28,15 @@ namespace { // Creates directory at |path|. -void CreateDirectory(const base::FilePath& path) { +bool CreateDirectory(const base::FilePath& path) { if (mkdir(path.value().c_str(), 0755) == 0) { - return; + return true; } if (errno != EEXIST) { PLOG(ERROR) << "mkdir " << path.value(); + return false; } + return true; } // The file extension used to indicate a file is locked. @@ -63,6 +65,9 @@ bool InProcessHandler::Initialize( INITIALIZATION_STATE_SET_INITIALIZING(initialized_); annotations_ = annotations; database_ = CrashReportDatabase::Initialize(database); + if (!database_) { + return false; + } bundle_identifier_and_seperator_ = system_data.BundleIdentifier() + kBundleSeperator; @@ -80,11 +85,13 @@ bool InProcessHandler::Initialize( database_.get(), url, upload_thread_options)); } - CreateDirectory(database); + if (!CreateDirectory(database)) + return false; static constexpr char kPendingSerializediOSDump[] = "pending-serialized-ios-dump"; base_dir_ = database.Append(kPendingSerializediOSDump); - CreateDirectory(base_dir_); + if (!CreateDirectory(base_dir_)) + return false; prune_thread_.reset(new PruneIntermediateDumpsAndCrashReportsThread( database_.get(),