Skip to content

Commit

Permalink
Fixes Brave Ads crash querying database
Browse files Browse the repository at this point in the history
  • Loading branch information
tmancey committed Dec 16, 2020
1 parent eb1d675 commit 450149d
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 11 deletions.
1 change: 1 addition & 0 deletions vendor/bat-native-ads/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -530,6 +530,7 @@ source_set("ads") {
"//sql",
"//third_party/boringssl",
"//third_party/re2",
"//third_party/sqlite",
"//url",
rebase_path("bat-native-rapidjson", dep_base),
rebase_path("bat-native-tweetnacl:tweetnacl", dep_base),
Expand Down
27 changes: 16 additions & 11 deletions vendor/bat-native-ads/src/bat/ads/database.cc
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include "base/files/file_util.h"
#include "sql/statement.h"
#include "sql/transaction.h"
#include "third_party/sqlite/sqlite3.h"
#include "bat/ads/internal/logging.h"

namespace ads {
Expand Down Expand Up @@ -227,11 +228,9 @@ DBCommandResponse::Status Database::Execute(
return DBCommandResponse::Status::INITIALIZATION_ERROR;
}

bool result = db_.Execute(command->command.c_str());

if (!result) {
const int error = db_.ExecuteAndReturnErrorCode(command->command.c_str());
if (error != SQLITE_OK) {
BLOG(0, "Database error: " << db_.GetErrorMessage());

return DBCommandResponse::Status::COMMAND_ERROR;
}

Expand All @@ -246,16 +245,18 @@ DBCommandResponse::Status Database::Run(
return DBCommandResponse::Status::INITIALIZATION_ERROR;
}

sql::Statement statement(db_.GetUniqueStatement(command->command.c_str()));
sql::Statement statement;
statement.Assign(db_.GetUniqueStatement(command->command.c_str()));
if (!statement.is_valid()) {
NOTREACHED();
return DBCommandResponse::Status::COMMAND_ERROR;
}

for (const auto& binding : command->bindings) {
Bind(&statement, *binding.get());
}

if (!statement.Run()) {
BLOG(0, "Database error: " << db_.GetErrorMessage() << " ("
<< db_.GetErrorCode() << ")");

return DBCommandResponse::Status::COMMAND_ERROR;
}

Expand All @@ -272,7 +273,12 @@ DBCommandResponse::Status Database::Read(
return DBCommandResponse::Status::INITIALIZATION_ERROR;
}

sql::Statement statement(db_.GetUniqueStatement(command->command.c_str()));
sql::Statement statement;
statement.Assign(db_.GetUniqueStatement(command->command.c_str()));
if (!statement.is_valid()) {
NOTREACHED();
return DBCommandResponse::Status::COMMAND_ERROR;
}

for (const auto& binding : command->bindings) {
Bind(&statement, *binding.get());
Expand Down Expand Up @@ -307,8 +313,7 @@ DBCommandResponse::Status Database::Migrate(
void Database::OnErrorCallback(
const int error,
sql::Statement* statement) {
DCHECK(statement);
BLOG(1, "Database error: " << db_.GetDiagnosticInfo(error, statement));
BLOG(0, "Database error: " << db_.GetDiagnosticInfo(error, statement));
}

void Database::OnMemoryPressure(
Expand Down

0 comments on commit 450149d

Please sign in to comment.