leveldb/0005-broken-db-fix-assertion-in-leveldb-InternalKey-Encod.patch
yaoguangzhong c9249a1773 backport broken db: fix assertion in leveldb::InternalKey::Encode, mark base as corrupt
category: bugfix
bugzilla: https://gitee.com/src-openeuler/leveldb/issues/I6WV0N?from=project-issue
commit 7d060117fa0d5cab7cb15b0cf127533bea9ffbc7
CVE: NA

Signed-off-by: Guangzhong Yao <yaoguangzhong@xfusion.com>
2023-04-19 16:01:00 +08:00

46 lines
1.3 KiB
Diff

From 7d060117fa0d5cab7cb15b0cf127533bea9ffbc7 Mon Sep 17 00:00:00 2001
From: proller <proller@github.com>
Date: Mon, 3 Oct 2016 19:40:07 +0300
Subject: [PATCH] broken db: fix assertion in leveldb::InternalKey::Encode,
mark base as corrupt
---
db/dbformat.h | 6 +++++-
db/version_edit.cc | 3 +--
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/db/dbformat.h b/db/dbformat.h
index ea897b1..415dc96 100644
--- a/db/dbformat.h
+++ b/db/dbformat.h
@@ -150,7 +150,11 @@ class InternalKey {
AppendInternalKey(&rep_, ParsedInternalKey(user_key, s, t));
}
- void DecodeFrom(const Slice& s) { rep_.assign(s.data(), s.size()); }
+ bool DecodeFrom(const Slice& s) {
+ rep_.assign(s.data(), s.size());
+ return !rep_.empty();
+ }
+
Slice Encode() const {
assert(!rep_.empty());
return rep_;
diff --git a/db/version_edit.cc b/db/version_edit.cc
index f10a2d5..1eea2d1 100644
--- a/db/version_edit.cc
+++ b/db/version_edit.cc
@@ -88,8 +88,7 @@ void VersionEdit::EncodeTo(std::string* dst) const {
static bool GetInternalKey(Slice* input, InternalKey* dst) {
Slice str;
if (GetLengthPrefixedSlice(input, &str)) {
- dst->DecodeFrom(str);
- return true;
+ return dst->DecodeFrom(str);
} else {
return false;
}
--
2.40.0.windows.1