From 904bd16ad332f1f40d2ea5c1862a4da8a984e004 Mon Sep 17 00:00:00 2001 From: Josh F Date: Thu, 19 May 2022 18:36:58 -0400 Subject: Fix case where BinaryNinja::OpenView can be called with nullptr as view --- binaryview.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'binaryview.cpp') diff --git a/binaryview.cpp b/binaryview.cpp index 78b653a0..21a37bee 100644 --- a/binaryview.cpp +++ b/binaryview.cpp @@ -3914,27 +3914,33 @@ Ref BinaryNinja::OpenView(const std::string& filename, bool updateAn static const std::string sqlite_header = "SQLite format 3"; FILE* f = fopen(filename.c_str(), "rb"); + // Unable to open file if (f == nullptr) return nullptr; + char header[0x20]; fread(header, 1, sqlite_header.size(), f); fclose(f); header[sqlite_header.size()] = 0; + // File is not a valid sqlite db if (sqlite_header != header) return nullptr; Ref file = new FileMetadata(filename); view = file->OpenDatabaseForConfiguration(filename); - return OpenView(view, updateAnalysis, progress, options, true); + isDatabase = true; } else { // Open file, read raw contents Ref file = new FileMetadata(filename); view = new BinaryData(file, filename); - return OpenView(view, updateAnalysis, progress, options, false); } + + if (!view) + return nullptr; + return OpenView(view, updateAnalysis, progress, options, isDatabase); } -- cgit v1.3.1