mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-07-16 16:27:27 +00:00
protobuf: Fix CVE-2021-22570
Fix CVE-2021-22570. Link: https://koji.fedoraproject.org/koji/buildinfo?buildID=1916865 Link: https://src.fedoraproject.org/rpms/protobuf/blob/394beeacb500861f76473d47e10314e6a3600810/f/CVE-2021-22570.patch Remove first and second hunk because the second argument in InsertIfNotPresent() function is of type const char* const& but the first and second hunk makes the type of second argument as const string which is not compatible with the type of second argument in InsertIfNotPresent(). Signed-off-by: Sana Kazi <Sana.Kazi@kpit.com> Signed-off-by: Sana Kazi <sanakazisk19@gmail.com> Signed-off-by: Armin Kuster <akuster808@gmail.com>
This commit is contained in:
@@ -0,0 +1,64 @@
|
|||||||
|
CVE: CVE-2021-22570
|
||||||
|
Upstream-Status: Backport [https://src.fedoraproject.org/rpms/protobuf/blob/394beeacb500861f76473d47e10314e6a3600810/f/CVE-2021-22570.patch]
|
||||||
|
Comment: Removed first and second hunk
|
||||||
|
Signed-off-by: Sana.Kazi <Sana.Kazi@kpit.com>
|
||||||
|
|
||||||
|
diff --git a/src/google/protobuf/descriptor.cc b/src/google/protobuf/descriptor.cc
|
||||||
|
index 7af37c57f3..03c4e2b516 100644
|
||||||
|
--- a/src/google/protobuf/descriptor.cc
|
||||||
|
+++ b/src/google/protobuf/descriptor.cc
|
||||||
|
@@ -2626,6 +2626,8 @@ void Descriptor::DebugString(int depth, std::string* contents,
|
||||||
|
const Descriptor::ReservedRange* range = reserved_range(i);
|
||||||
|
if (range->end == range->start + 1) {
|
||||||
|
strings::SubstituteAndAppend(contents, "$0, ", range->start);
|
||||||
|
+ } else if (range->end > FieldDescriptor::kMaxNumber) {
|
||||||
|
+ strings::SubstituteAndAppend(contents, "$0 to max, ", range->start);
|
||||||
|
} else {
|
||||||
|
strings::SubstituteAndAppend(contents, "$0 to $1, ", range->start,
|
||||||
|
range->end - 1);
|
||||||
|
@@ -2829,6 +2831,8 @@ void EnumDescriptor::DebugString(
|
||||||
|
const EnumDescriptor::ReservedRange* range = reserved_range(i);
|
||||||
|
if (range->end == range->start) {
|
||||||
|
strings::SubstituteAndAppend(contents, "$0, ", range->start);
|
||||||
|
+ } else if (range->end == INT_MAX) {
|
||||||
|
+ strings::SubstituteAndAppend(contents, "$0 to max, ", range->start);
|
||||||
|
} else {
|
||||||
|
strings::SubstituteAndAppend(contents, "$0 to $1, ", range->start,
|
||||||
|
range->end);
|
||||||
|
@@ -4019,6 +4023,11 @@ bool DescriptorBuilder::AddSymbol(const std::string& full_name,
|
||||||
|
// Use its file as the parent instead.
|
||||||
|
if (parent == nullptr) parent = file_;
|
||||||
|
|
||||||
|
+ if (full_name.find('\0') != std::string::npos) {
|
||||||
|
+ AddError(full_name, proto, DescriptorPool::ErrorCollector::NAME,
|
||||||
|
+ "\"" + full_name + "\" contains null character.");
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
if (tables_->AddSymbol(full_name, symbol)) {
|
||||||
|
if (!file_tables_->AddAliasUnderParent(parent, name, symbol)) {
|
||||||
|
// This is only possible if there was already an error adding something of
|
||||||
|
@@ -4059,6 +4068,11 @@ bool DescriptorBuilder::AddSymbol(const std::string& full_name,
|
||||||
|
void DescriptorBuilder::AddPackage(const std::string& name,
|
||||||
|
const Message& proto,
|
||||||
|
const FileDescriptor* file) {
|
||||||
|
+ if (name.find('\0') != std::string::npos) {
|
||||||
|
+ AddError(name, proto, DescriptorPool::ErrorCollector::NAME,
|
||||||
|
+ "\"" + name + "\" contains null character.");
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
if (tables_->AddSymbol(name, Symbol(file))) {
|
||||||
|
// Success. Also add parent package, if any.
|
||||||
|
std::string::size_type dot_pos = name.find_last_of('.');
|
||||||
|
@@ -4372,6 +4386,12 @@ FileDescriptor* DescriptorBuilder::BuildFileImpl(
|
||||||
|
}
|
||||||
|
result->pool_ = pool_;
|
||||||
|
|
||||||
|
+ if (result->name().find('\0') != std::string::npos) {
|
||||||
|
+ AddError(result->name(), proto, DescriptorPool::ErrorCollector::NAME,
|
||||||
|
+ "\"" + result->name() + "\" contains null character.");
|
||||||
|
+ return nullptr;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
// Add to tables.
|
||||||
|
if (!tables_->AddFile(result)) {
|
||||||
|
AddError(proto.name(), proto, DescriptorPool::ErrorCollector::OTHER,
|
||||||
@@ -17,6 +17,7 @@ SRC_URI = "git://github.com/google/protobuf.git;branch=3.11.x;protocol=https \
|
|||||||
file://0001-protobuf-fix-configure-error.patch \
|
file://0001-protobuf-fix-configure-error.patch \
|
||||||
file://0001-Makefile.am-include-descriptor.cc-when-building-libp.patch \
|
file://0001-Makefile.am-include-descriptor.cc-when-building-libp.patch \
|
||||||
file://0001-examples-Makefile-respect-CXX-LDFLAGS-variables-fix-.patch \
|
file://0001-examples-Makefile-respect-CXX-LDFLAGS-variables-fix-.patch \
|
||||||
|
file://CVE-2021-22570.patch \
|
||||||
"
|
"
|
||||||
S = "${WORKDIR}/git"
|
S = "${WORKDIR}/git"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user