Fix bugs in DBWALTest.kTolerateCorruptedTailRecords triggered by #5520 (#5550)

Summary:
https://github.com/facebook/rocksdb/pull/5520 caused a buffer overflow bug in DBWALTest.kTolerateCorruptedTailRecords. Fix it.
Pull Request resolved: https://github.com/facebook/rocksdb/pull/5550

Test Plan: Run the test in UBSAN. It used to fail. Not it succeeds.

Differential Revision: D16165516

fbshipit-source-id: 42c56a6bc64eb091f054b87757fcbef60da825f7
main
sdong 6 years ago committed by Facebook Github Bot
parent a6a9213a36
commit cb19e7411f
  1. 4
      db/db_wal_test.cc
  2. 1
      file/file_util.cc

@ -824,7 +824,9 @@ class RecoveryTestHelper {
// Create WAL files with values filled in // Create WAL files with values filled in
static void FillData(DBWALTest* test, const Options& options, static void FillData(DBWALTest* test, const Options& options,
const size_t wal_count, size_t* count) { const size_t wal_count, size_t* count) {
const ImmutableDBOptions db_options(options); // Calling internal functions requires sanitized options.
Options sanitized_options = SanitizeOptions(test->dbname_, options);
const ImmutableDBOptions db_options(sanitized_options);
*count = 0; *count = 0;

@ -110,6 +110,7 @@ Status DeleteDBFile(const ImmutableDBOptions* db_options,
bool IsWalDirSameAsDBPath(const ImmutableDBOptions* db_options) { bool IsWalDirSameAsDBPath(const ImmutableDBOptions* db_options) {
bool same = false; bool same = false;
assert(!db_options->db_paths.empty());
Status s = db_options->env->AreFilesSame(db_options->wal_dir, Status s = db_options->env->AreFilesSame(db_options->wal_dir,
db_options->db_paths[0].path, &same); db_options->db_paths[0].path, &same);
if (s.IsNotSupported()) { if (s.IsNotSupported()) {

Loading…
Cancel
Save