From b0dfec769d32b82b5a78383a9b96881e9020d35c Mon Sep 17 00:00:00 2001 From: yaoguangzhong Date: Wed, 19 Apr 2023 15:21:53 +0800 Subject: [PATCH] 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 --- ...sertion-in-leveldb-InternalKey-Encod.patch | 45 +++++++++++++++++++ leveldb.spec | 6 ++- 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 0005-broken-db-fix-assertion-in-leveldb-InternalKey-Encod.patch diff --git a/0005-broken-db-fix-assertion-in-leveldb-InternalKey-Encod.patch b/0005-broken-db-fix-assertion-in-leveldb-InternalKey-Encod.patch new file mode 100644 index 0000000..51212b6 --- /dev/null +++ b/0005-broken-db-fix-assertion-in-leveldb-InternalKey-Encod.patch @@ -0,0 +1,45 @@ +From 7d060117fa0d5cab7cb15b0cf127533bea9ffbc7 Mon Sep 17 00:00:00 2001 +From: proller +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 + diff --git a/leveldb.spec b/leveldb.spec index dc1bb47..32077d2 100644 --- a/leveldb.spec +++ b/leveldb.spec @@ -1,6 +1,6 @@ Name: leveldb Version: 1.20 -Release: 4 +Release: 5 Summary: A key/value database library License: BSD URL: https://github.com/google/leveldb @@ -10,6 +10,7 @@ Patch0001: 0001-Allow-leveldbjni-build.patch Patch0002: 0002-Added-a-DB-SuspendCompations-and-DB-ResumeCompaction.patch Patch0003: 0003-allow-Get-calls-to-avoid-copies-into-std-string.patch Patch0004: 0004-bloom_test-failure-on-big-endian-archs.patch +Patch0005: 0005-broken-db-fix-assertion-in-leveldb-InternalKey-Encod.patch BuildRequires: make gcc-c++ snappy-devel @@ -71,5 +72,8 @@ make -j1 check %{_libdir}/pkgconfig/leveldb.pc %changelog +* Tue Apr 18 2023 yaoguangzhong - 1.20-5 +- fix assertion in leveldb::InternalKey::Encode, mark base as corrupt + * Fri Dec 20 2019 wangyiru - 1.20-4 - Package init -- Gitee