From a985fccd770a0220b731617d3bc214523805ccd8 Mon Sep 17 00:00:00 2001 From: Yeabsira Mekonnen Date: Fri, 20 Dec 2024 01:53:47 -0800 Subject: [PATCH] Fixing an issue where a carriage return in the CURRENT file would consider our files as corrupted. (#8) Co-authored-by: Alex Troyer --- db/version_set.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/db/version_set.cc b/db/version_set.cc index 129b9f118..e26f5f229 100644 --- a/db/version_set.cc +++ b/db/version_set.cc @@ -876,10 +876,17 @@ Status VersionSet::Recover(bool* save_manifest) { if (!s.ok()) { return s; } - if (current.empty() || current[current.size() - 1] != '\n') { + const size_t size = current.size(); + if (size == 0 || (current[size - 1] != '\n' && current[size - 1] != '\r')) { return Status::Corruption("CURRENT file does not end with newline"); } - current.resize(current.size() - 1); + + int resizeSize = 1; + if (size >= 2 && current[size - 2] == '\r') { + resizeSize = 2; + } + + current.resize(size - resizeSize); std::string dscname = dbname_ + "/" + current; SequentialFile* file;