SHA256
1
0
forked from pool/grpc

1 Commits

Author SHA256 Message Date
73cb2b867b Sync changes to SLFO-1.2 branch 2025-08-20 09:22:08 +02:00
12 changed files with 473 additions and 498 deletions

View File

@@ -1,58 +0,0 @@
From 316649c7bb8545571d9beb75dc2fb1abfbe6552f Mon Sep 17 00:00:00 2001
From: "easyaspi314 (Devin)" <easyaspi314@users.noreply.github.com>
Date: Tue, 7 Dec 2021 21:36:13 -0500
Subject: [PATCH] [ARM] Unaligned access fixes
- Use memcpy on ARMv6 and lower when unaligned access is supported
- GCC has an internal conflict on whether unaligned access is available
on ARMv6 so some parts do byteshift, some parts do not
- aligned(1) is better on everything else
- All this seems to be safe on even GCC 4.9.
- Leave out the alignment check if unaligned access is supported on ARM.
---
xxhash.h | 24 +++++++-----------------
1 file changed, 7 insertions(+), 17 deletions(-)
diff --git a/xxhash.h b/xxhash.h
index 08ab794..4cf3f0d 100644
--- a/third_party/xxhash/xxhash.h
+++ b/third_party/xxhash/xxhash.h
@@ -1402,28 +1402,18 @@ XXH3_128bits_reset_withSecretandSeed(XXH3_state_t* statePtr,
*/
#ifndef XXH_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */
- /* prefer __packed__ structures (method 1) for gcc on armv7+ and mips */
-# if !defined(__clang__) && \
-( \
- (defined(__INTEL_COMPILER) && !defined(_WIN32)) || \
- ( \
- defined(__GNUC__) && ( \
- (defined(__ARM_ARCH) && __ARM_ARCH >= 7) || \
- ( \
- defined(__mips__) && \
- (__mips <= 5 || __mips_isa_rev < 6) && \
- (!defined(__mips16) || defined(__mips_mips16e2)) \
- ) \
- ) \
- ) \
-)
+ /* prefer __packed__ structures (method 1) for GCC
+ * < ARMv7 with unaligned access (e.g. Raspbian armhf) still uses byte shifting, so we use memcpy
+ * which for some reason does unaligned loads. */
+# if defined(__GNUC__) && !(defined(__ARM_ARCH) && __ARM_ARCH < 7 && defined(__ARM_FEATURE_UNALIGNED))
# define XXH_FORCE_MEMORY_ACCESS 1
# endif
#endif
#ifndef XXH_FORCE_ALIGN_CHECK /* can be defined externally */
-# if defined(__i386) || defined(__x86_64__) || defined(__aarch64__) \
- || defined(_M_IX86) || defined(_M_X64) || defined(_M_ARM64) /* visual */
+ /* don't check on x86, aarch64, or arm when unaligned access is available */
+# if defined(__i386) || defined(__x86_64__) || defined(__aarch64__) || defined(__ARM_FEATURE_UNALIGNED) \
+ || defined(_M_IX86) || defined(_M_X64) || defined(_M_ARM64) || defined(_M_ARM) /* visual */
# define XXH_FORCE_ALIGN_CHECK 0
# else
# define XXH_FORCE_ALIGN_CHECK 1
--
2.43.0

View File

@@ -1,43 +0,0 @@
From 2d5f93345cacbd2a076e75e6ce33e7bf3a4b9cb0 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Tue, 30 Nov 2021 23:19:38 +0100
Subject: [PATCH] Fix compilation on RHEL 7 ppc64le (gcc 4.8)
---
xxhash.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/xxhash.h b/xxhash.h
index 4cf3f0d..b07de0c 100644
--- a/third_party/xxhash/xxhash.h
+++ b/third_party/xxhash/xxhash.h
@@ -4119,7 +4119,7 @@ XXH3_accumulate_512_vsx( void* XXH_RESTRICT acc,
const void* XXH_RESTRICT secret)
{
/* presumed aligned */
- unsigned long long* const xacc = (unsigned long long*) acc;
+ unsigned int* const xacc = (unsigned int*) acc;
xxh_u64x2 const* const xinput = (xxh_u64x2 const*) input; /* no alignment restriction */
xxh_u64x2 const* const xsecret = (xxh_u64x2 const*) secret; /* no alignment restriction */
xxh_u64x2 const v32 = { 32, 32 };
@@ -4135,7 +4135,7 @@ XXH3_accumulate_512_vsx( void* XXH_RESTRICT acc,
/* product = ((xxh_u64x2)data_key & 0xFFFFFFFF) * ((xxh_u64x2)shuffled & 0xFFFFFFFF); */
xxh_u64x2 const product = XXH_vec_mulo((xxh_u32x4)data_key, shuffled);
/* acc_vec = xacc[i]; */
- xxh_u64x2 acc_vec = vec_xl(0, xacc + 2 * i);
+ xxh_u64x2 acc_vec = (xxh_u64x2)vec_xl(0, xacc + 4 * i);
acc_vec += product;
/* swap high and low halves */
@@ -4145,7 +4145,7 @@ XXH3_accumulate_512_vsx( void* XXH_RESTRICT acc,
acc_vec += vec_xxpermdi(data_vec, data_vec, 2);
#endif
/* xacc[i] = acc_vec; */
- vec_xst(acc_vec, 0, xacc + 2 * i);
+ vec_xst((xxh_u32x4)acc_vec, 0, xacc + 4 * i);
}
}
--
2.43.0

25
grpc-CVE-2024-11407.patch Normal file
View File

@@ -0,0 +1,25 @@
From e9046b2bbebc0cb7f5dc42008f807f6c7e98e791 Mon Sep 17 00:00:00 2001
From: Vignesh Babu <vigneshbabu@google.com>
Date: Thu, 12 Sep 2024 11:13:45 -0700
Subject: [PATCH] [EventEngine] Fix bug in Tx0cp code path in posix endpoint.
This fix ensures that the iov_base pointers point to the right address.
PiperOrigin-RevId: 673923651
---
src/core/lib/event_engine/posix_engine/posix_endpoint.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: grpc-1.60.0/src/core/lib/event_engine/posix_engine/posix_endpoint.cc
===================================================================
--- grpc-1.60.0.orig/src/core/lib/event_engine/posix_engine/posix_endpoint.cc
+++ grpc-1.60.0/src/core/lib/event_engine/posix_engine/posix_endpoint.cc
@@ -239,7 +239,7 @@ msg_iovlen_type TcpZerocopySendRecord::P
iov_size++) {
MutableSlice& slice = internal::SliceCast<MutableSlice>(
buf_.MutableSliceAt(out_offset_.slice_idx));
- iov[iov_size].iov_base = slice.begin();
+ iov[iov_size].iov_base = slice.begin() + out_offset_.byte_idx;
iov[iov_size].iov_len = slice.length() - out_offset_.byte_idx;
*sending_length += iov[iov_size].iov_len;
++(out_offset_.slice_idx);

409
grpc-CVE-2024-7246.patch Normal file
View File

@@ -0,0 +1,409 @@
From 4a3092a29cf0cf53595c137c7b20909255f78923 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 1 Aug 2024 13:02:21 -0700
Subject: [PATCH] [v1.59] [chttp2] Fix a bug in hpack error handling (#37367)
PiperOrigin-RevId: 657234128
PiperOrigin-RevId: 658458047
---
.../chttp2/transport/hpack_parser.cc | 63 +++++++------
.../transport/chttp2/transport/hpack_parser.h | 2 +
.../transport/chttp2/hpack_parser_test.cc | 89 ++++++++++++++++---
.../transport/chttp2/hpack_sync_fuzzer.cc | 62 +++++++++++++
.../transport/chttp2/hpack_sync_fuzzer.proto | 3 +
5 files changed, 179 insertions(+), 40 deletions(-)
diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.cc b/src/core/ext/transport/chttp2/transport/hpack_parser.cc
index 31bf46456f1d0..f2fe80c504e58 100644
--- a/src/core/ext/transport/chttp2/transport/hpack_parser.cc
+++ b/src/core/ext/transport/chttp2/transport/hpack_parser.cc
@@ -91,12 +91,14 @@ constexpr Base64InverseTable kBase64InverseTable;
class HPackParser::Input {
public:
Input(grpc_slice_refcount* current_slice_refcount, const uint8_t* begin,
- const uint8_t* end, absl::BitGenRef bitsrc, HpackParseResult& error)
+ const uint8_t* end, absl::BitGenRef bitsrc,
+ HpackParseResult& frame_error, HpackParseResult& field_error)
: current_slice_refcount_(current_slice_refcount),
begin_(begin),
end_(end),
frontier_(begin),
- error_(error),
+ frame_error_(frame_error),
+ field_error_(field_error),
bitsrc_(bitsrc) {}
// If input is backed by a slice, retrieve its refcount. If not, return
@@ -215,14 +217,18 @@ class HPackParser::Input {
// Check if we saw an EOF
bool eof_error() const {
- return min_progress_size_ != 0 || error_.connection_error();
+ return min_progress_size_ != 0 || frame_error_.connection_error();
+ }
+
+ // Reset the field error to be ok
+ void ClearFieldError() {
+ if (field_error_.ok()) return;
+ field_error_ = HpackParseResult();
}
// Minimum number of bytes to unstuck the current parse
size_t min_progress_size() const { return min_progress_size_; }
- bool has_error() const { return !error_.ok(); }
-
// Set the current error - tweaks the error to include a stream id so that
// chttp2 does not close the connection.
// Intended for errors that are specific to a stream and recoverable.
@@ -246,10 +252,7 @@ class HPackParser::Input {
// read prior to being able to get further in this parse.
void UnexpectedEOF(size_t min_progress_size) {
GPR_ASSERT(min_progress_size > 0);
- if (min_progress_size_ != 0 || error_.connection_error()) {
- GPR_DEBUG_ASSERT(eof_error());
- return;
- }
+ if (eof_error()) return;
// Set min progress size, taking into account bytes parsed already but not
// consumed.
min_progress_size_ = min_progress_size + (begin_ - frontier_);
@@ -302,13 +305,18 @@ class HPackParser::Input {
// Do not use this directly, instead use SetErrorAndContinueParsing or
// SetErrorAndStopParsing.
void SetError(HpackParseResult error) {
- if (!error_.ok() || min_progress_size_ > 0) {
- if (error.connection_error() && !error_.connection_error()) {
- error_ = std::move(error); // connection errors dominate
+ SetErrorFor(frame_error_, error);
+ SetErrorFor(field_error_, std::move(error));
+ }
+
+ void SetErrorFor(HpackParseResult& error, HpackParseResult new_error) {
+ if (!error.ok() || min_progress_size_ > 0) {
+ if (new_error.connection_error() && !error.connection_error()) {
+ error = std::move(new_error); // connection errors dominate
}
return;
}
- error_ = std::move(error);
+ error = std::move(new_error);
}
// Refcount if we are backed by a slice
@@ -320,7 +328,8 @@ class HPackParser::Input {
// Frontier denotes the first byte past successfully processed input
const uint8_t* frontier_;
// Current error
- HpackParseResult& error_;
+ HpackParseResult& frame_error_;
+ HpackParseResult& field_error_;
// If the error was EOF, we flag it here by noting how many more bytes would
// be needed to make progress
size_t min_progress_size_ = 0;
@@ -597,6 +606,7 @@ class HPackParser::Parser {
bool ParseTop() {
GPR_DEBUG_ASSERT(state_.parse_state == ParseState::kTop);
auto cur = *input_->Next();
+ input_->ClearFieldError();
switch (cur >> 4) {
// Literal header not indexed - First byte format: 0000xxxx
// Literal header never indexed - First byte format: 0001xxxx
@@ -702,7 +712,7 @@ class HPackParser::Parser {
break;
}
gpr_log(
- GPR_DEBUG, "HTTP:%d:%s:%s: %s%s", log_info_.stream_id, type,
+ GPR_INFO, "HTTP:%d:%s:%s: %s%s", log_info_.stream_id, type,
log_info_.is_client ? "CLI" : "SVR", memento.md.DebugString().c_str(),
memento.parse_status == nullptr
? ""
@@ -951,11 +961,10 @@ class HPackParser::Parser {
state_.string_length)
: String::Parse(input_, state_.is_string_huff_compressed,
state_.string_length);
- HpackParseResult& status = state_.frame_error;
absl::string_view key_string;
if (auto* s = absl::get_if<Slice>(&state_.key)) {
key_string = s->as_string_view();
- if (status.ok()) {
+ if (state_.field_error.ok()) {
auto r = ValidateKey(key_string);
if (r != ValidateMetadataResult::kOk) {
input_->SetErrorAndContinueParsing(
@@ -965,7 +974,7 @@ class HPackParser::Parser {
} else {
const auto* memento = absl::get<const HPackTable::Memento*>(state_.key);
key_string = memento->md.key();
- if (status.ok() && memento->parse_status != nullptr) {
+ if (state_.field_error.ok() && memento->parse_status != nullptr) {
input_->SetErrorAndContinueParsing(*memento->parse_status);
}
}
@@ -992,16 +1001,16 @@ class HPackParser::Parser {
key_string.size() + value.wire_size + hpack_constants::kEntryOverhead;
auto md = grpc_metadata_batch::Parse(
key_string, std::move(value_slice), state_.add_to_table, transport_size,
- [key_string, &status, this](absl::string_view message, const Slice&) {
- if (!status.ok()) return;
+ [key_string, this](absl::string_view message, const Slice&) {
+ if (!state_.field_error.ok()) return;
input_->SetErrorAndContinueParsing(
HpackParseResult::MetadataParseError(key_string));
gpr_log(GPR_ERROR, "Error parsing '%s' metadata: %s",
std::string(key_string).c_str(),
std::string(message).c_str());
});
- HPackTable::Memento memento{std::move(md),
- status.PersistentStreamErrorOrNullptr()};
+ HPackTable::Memento memento{
+ std::move(md), state_.field_error.PersistentStreamErrorOrNullptr()};
input_->UpdateFrontier();
state_.parse_state = ParseState::kTop;
if (state_.add_to_table) {
@@ -1163,13 +1172,13 @@ grpc_error_handle HPackParser::Parse(
std::vector<uint8_t> buffer = std::move(unparsed_bytes_);
return ParseInput(
Input(nullptr, buffer.data(), buffer.data() + buffer.size(), bitsrc,
- state_.frame_error),
+ state_.frame_error, state_.field_error),
is_last, call_tracer);
}
- return ParseInput(
- Input(slice.refcount, GRPC_SLICE_START_PTR(slice),
- GRPC_SLICE_END_PTR(slice), bitsrc, state_.frame_error),
- is_last, call_tracer);
+ return ParseInput(Input(slice.refcount, GRPC_SLICE_START_PTR(slice),
+ GRPC_SLICE_END_PTR(slice), bitsrc, state_.frame_error,
+ state_.field_error),
+ is_last, call_tracer);
}
grpc_error_handle HPackParser::ParseInput(
diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.h b/src/core/ext/transport/chttp2/transport/hpack_parser.h
index 6b28daad61d4b..8f7132092958c 100644
--- a/src/core/ext/transport/chttp2/transport/hpack_parser.h
+++ b/src/core/ext/transport/chttp2/transport/hpack_parser.h
@@ -236,6 +236,8 @@ class HPackParser {
HPackTable hpack_table;
// Error so far for this frame (set by class Input)
HpackParseResult frame_error;
+ // Error so far for this field (set by class Input)
+ HpackParseResult field_error;
// Length of frame so far.
uint32_t frame_length = 0;
// Length of the string being parsed
diff --git a/test/core/transport/chttp2/hpack_parser_test.cc b/test/core/transport/chttp2/hpack_parser_test.cc
index 3772d909b9b8b..d5b9c6cb68da2 100644
--- a/test/core/transport/chttp2/hpack_parser_test.cc
+++ b/test/core/transport/chttp2/hpack_parser_test.cc
@@ -440,19 +440,82 @@ INSTANTIATE_TEST_SUITE_P(
Test{"Base64LegalEncoding",
{},
{},
- {// Binary metadata: created using:
- // tools/codegen/core/gen_header_frame.py
- // --compression inc --no_framing --output hexstr
- // < test/core/transport/chttp2/bad-base64.headers
- {"4009612e622e632d62696e1c6c75636b696c7920666f722075732c206974"
- "27732074756573646179",
- absl::InternalError("Error parsing 'a.b.c-bin' metadata: "
- "illegal base64 encoding"),
- 0},
- {"be",
- absl::InternalError("Error parsing 'a.b.c-bin' metadata: "
- "illegal base64 encoding"),
- 0}}},
+ {
+ // Binary metadata: created using:
+ // tools/codegen/core/gen_header_frame.py
+ // --compression inc --no_framing --output hexstr
+ // < test/core/transport/chttp2/bad-base64.headers
+ {"4009612e622e632d62696e1c6c75636b696c7920666f722075732c206974"
+ "27732074756573646179",
+ absl::InternalError("Error parsing 'a.b.c-bin' metadata: "
+ "illegal base64 encoding"),
+ 0},
+ {"be",
+ absl::InternalError("Error parsing 'a.b.c-bin' metadata: "
+ "illegal base64 encoding"),
+ kEndOfHeaders},
+ {"82", ":method: GET\n", 0},
+ }},
+ Test{"Base64LegalEncodingWorksAfterFailure",
+ {},
+ {},
+ {
+ // Binary metadata: created using:
+ // tools/codegen/core/gen_header_frame.py
+ // --compression inc --no_framing --output hexstr
+ // < test/core/transport/chttp2/bad-base64.headers
+ {"4009612e622e632d62696e1c6c75636b696c7920666f722075732c206974"
+ "27732074756573646179",
+ absl::InternalError("Error parsing 'a.b.c-bin' metadata: "
+ "illegal base64 encoding"),
+ 0},
+ {"be",
+ absl::InternalError("Error parsing 'a.b.c-bin' metadata: "
+ "illegal base64 encoding"),
+ 0},
+ {"400e636f6e74656e742d6c656e6774680135",
+ absl::InternalError("Error parsing 'a.b.c-bin' metadata: "
+ "illegal base64 encoding"),
+ kEndOfHeaders},
+ {"be", "content-length: 5\n", 0},
+ }},
+ Test{"Base64LegalEncodingWorksAfterFailure2",
+ {},
+ {},
+ {
+ {// Generated with: tools/codegen/core/gen_header_frame.py
+ // --compression inc --output hexstr --no_framing <
+ // test/core/transport/chttp2/MiXeD-CaSe.headers
+ "400a4d695865442d436153651073686f756c64206e6f74207061727365",
+ absl::InternalError("Illegal header key: MiXeD-CaSe"), 0},
+ // Binary metadata: created using:
+ // tools/codegen/core/gen_header_frame.py
+ // --compression inc --no_framing --output hexstr
+ // < test/core/transport/chttp2/bad-base64.headers
+ {"4009612e622e632d62696e1c6c75636b696c7920666f722075732c206974"
+ "27732074756573646179",
+ absl::InternalError("Illegal header key: MiXeD-CaSe"), 0},
+ {"be", absl::InternalError("Illegal header key: MiXeD-CaSe"),
+ 0},
+ {"400e636f6e74656e742d6c656e6774680135",
+ absl::InternalError("Illegal header key: MiXeD-CaSe"),
+ kEndOfHeaders},
+ {"be", "content-length: 5\n", 0},
+ {"bf",
+ absl::InternalError("Error parsing 'a.b.c-bin' metadata: "
+ "illegal base64 encoding"),
+ 0},
+ // Only the first error in each frame is reported, so we should
+ // still see the same error here...
+ {"c0",
+ absl::InternalError("Error parsing 'a.b.c-bin' metadata: "
+ "illegal base64 encoding"),
+ kEndOfHeaders},
+ // ... but if we look at the next frame we should see the
+ // stored error
+ {"c0", absl::InternalError("Illegal header key: MiXeD-CaSe"),
+ kEndOfHeaders},
+ }},
Test{"TeIsTrailers",
{},
{},
diff --git a/test/core/transport/chttp2/hpack_sync_fuzzer.cc b/test/core/transport/chttp2/hpack_sync_fuzzer.cc
index 81809afcf7175..40de14def3d92 100644
--- a/test/core/transport/chttp2/hpack_sync_fuzzer.cc
+++ b/test/core/transport/chttp2/hpack_sync_fuzzer.cc
@@ -86,6 +86,10 @@ void FuzzOneInput(const hpack_sync_fuzzer::Msg& msg) {
// Not an interesting case to fuzz
continue;
}
+ if (msg.check_ab_preservation() &&
+ header.literal_inc_idx().key() == "a") {
+ continue;
+ }
if (absl::EndsWith(header.literal_inc_idx().value(), "-bin")) {
std::ignore = encoder.EmitLitHdrWithBinaryStringKeyIncIdx(
Slice::FromCopiedString(header.literal_inc_idx().key()),
@@ -97,6 +101,10 @@ void FuzzOneInput(const hpack_sync_fuzzer::Msg& msg) {
}
break;
case hpack_sync_fuzzer::Header::kLiteralNotIdx:
+ if (msg.check_ab_preservation() &&
+ header.literal_not_idx().key() == "a") {
+ continue;
+ }
if (absl::EndsWith(header.literal_not_idx().value(), "-bin")) {
encoder.EmitLitHdrWithBinaryStringKeyNotIdx(
Slice::FromCopiedString(header.literal_not_idx().key()),
@@ -115,6 +123,10 @@ void FuzzOneInput(const hpack_sync_fuzzer::Msg& msg) {
break;
}
}
+ if (msg.check_ab_preservation()) {
+ std::ignore = encoder.EmitLitHdrWithNonBinaryStringKeyIncIdx(
+ Slice::FromCopiedString("a"), Slice::FromCopiedString("b"));
+ }
// STAGE 2: Decode the buffer (encode_output) into a list of headers
HPackParser parser;
@@ -141,6 +153,21 @@ void FuzzOneInput(const hpack_sync_fuzzer::Msg& msg) {
}
}
+ if (seen_errors.empty() && msg.check_ab_preservation()) {
+ std::string backing;
+ auto a_value = read_metadata.GetStringValue("a", &backing);
+ if (!a_value.has_value()) {
+ fprintf(stderr, "Expected 'a' header to be present: %s\n",
+ read_metadata.DebugString().c_str());
+ abort();
+ }
+ if (a_value != "b") {
+ fprintf(stderr, "Expected 'a' header to be 'b', got '%s'\n",
+ std::string(*a_value).c_str());
+ abort();
+ }
+ }
+
// STAGE 3: If we reached here we either had a stream error or no error
// parsing.
// Either way, the hpack tables should be of the same size between client and
@@ -169,6 +196,41 @@ void FuzzOneInput(const hpack_sync_fuzzer::Msg& msg) {
}
abort();
}
+
+ if (msg.check_ab_preservation()) {
+ SliceBuffer encode_output_2;
+ hpack_encoder_detail::Encoder encoder_2(
+ &compressor, msg.use_true_binary_metadata(), encode_output_2);
+ encoder_2.EmitIndexed(62);
+ GPR_ASSERT(encode_output_2.Count() == 1);
+ grpc_metadata_batch read_metadata_2(arena.get());
+ parser.BeginFrame(
+ &read_metadata_2, 1024, 1024, HPackParser::Boundary::EndOfHeaders,
+ HPackParser::Priority::None,
+ HPackParser::LogInfo{3, HPackParser::LogInfo::kHeaders, false});
+ auto err = parser.Parse(encode_output_2.c_slice_at(0), true,
+ absl::BitGenRef(proto_bit_src),
+ /*call_tracer=*/nullptr);
+ if (!err.ok()) {
+ fprintf(stderr, "Error parsing preservation encoded data: %s\n",
+ err.ToString().c_str());
+ abort();
+ }
+ std::string backing;
+ auto a_value = read_metadata_2.GetStringValue("a", &backing);
+ if (!a_value.has_value()) {
+ fprintf(stderr,
+ "Expected 'a' header to be present: %s\nfirst metadata: %s\n",
+ read_metadata_2.DebugString().c_str(),
+ read_metadata.DebugString().c_str());
+ abort();
+ }
+ if (a_value != "b") {
+ fprintf(stderr, "Expected 'a' header to be 'b', got '%s'\n",
+ std::string(*a_value).c_str());
+ abort();
+ }
+ }
}
} // namespace
diff --git a/test/core/transport/chttp2/hpack_sync_fuzzer.proto b/test/core/transport/chttp2/hpack_sync_fuzzer.proto
index 72792b60d640a..2c075a6abb1a1 100644
--- a/test/core/transport/chttp2/hpack_sync_fuzzer.proto
+++ b/test/core/transport/chttp2/hpack_sync_fuzzer.proto
@@ -44,4 +44,7 @@ message Msg {
repeated Header headers = 2;
grpc.testing.FuzzConfigVars config_vars = 3;
repeated uint64 random_numbers = 4;
+ // Ensure that a header "a: b" appended to headers with hpack incremental
+ // indexing is correctly added to the hpack table.
+ bool check_ab_preservation = 5;
}

View File

@@ -1,179 +1,12 @@
-------------------------------------------------------------------
Sun Jul 27 08:00:17 UTC 2025 - Atri Bhattacharya <badshah400@gmail.com>
Tue Dec 17 13:58:55 UTC 2024 - pgajdos@suse.com
- Update to version 1.74.0:
* Core:
* [OTel C++, Posix EE] Plumb TCP write timestamps and metrics
to OTel tracers (gh#grpc/grpc#39946).
* [EventEngine] Fix Python reconnect issues: use iomgr backup
poller when EE is disabled (gh#grpc/grpc#39894).
* [Python] Upgrade Pytype (Part - 1) (gh#grpc/grpc#39816).
* [Python] Upgrade black (gh#grpc/grpc#39774).
* [event_engine] Implement fork support in Posix Event Engine
(gh#grpc/grpc#38980).
* [http2] Fix GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES for when
BDP is disabled (gh#grpc/grpc#39585).
- Update return-values.patch with a couple more missed return
values from non-void functions.
- Bump so version in shlib package name.
- Re-base telemetry.patch for updated version.
-------------------------------------------------------------------
Sun Jun 8 16:09:54 UTC 2025 - Atri Bhattacharya <badshah400@gmail.com>
- Update to version 1.73.0:
* Core: Added GPR_DISABLE_ABSEIL_SYNC (gh#grpc/grpc#39562).
* xds_override_host: pass through per-endpoint args when
creating subchannels (gh#grpc/grpc#39532).
* Expose GRPC_OPENSSL_CLEANUP_TIMEOUT to control shutdown grace
period (gh#grpc/grpc#39297).
* URI: fix parsing of user_info in proxy settings
(gh#grpc/grpc#39004).
* EventEngine: Fix busy loop in thread pool when shutting down
(gh#grpc/grpc#39258).
* Dep: Added a flag to build with openssl instead of boringssl
(gh#grpc/grpc#39188).
* EventEngine: Cleanup: EventEngine client, listener, and dns
experiments are on by default on all platforms
(gh#grpc/grpc#39079).
* C++: Mark OpenCensus and dependent APIs as deprecated
(gh#grpc/grpc#39554).
- Minor rebase of patches for update:
* link-failure.patch.
* telemetry.patch.
- Bump so version in shlib package name to 48, conforming to
upstream's.
-------------------------------------------------------------------
Thu Jun 5 21:46:40 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Update to release 1.72.1
* RLS: fix use-after-free from accessing config after LB policy
shutdown
* EventEngine: Fix busy loop in thread pool when shutting down
-------------------------------------------------------------------
Tue Mar 25 21:48:57 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Update to release 1.71
* Fix call attempt tracer lifetimes for retries
* Fixed a bug that caused grpc to stop triggering connection
attempts
* Added support for service "deprecated" option
- Rework link-failure.patch to not link grpc_unsecure
into libgrpc(++). [boo#1237422]
- Make build recipe POSIX sh compatible.
-------------------------------------------------------------------
Wed Feb 12 14:22:59 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Add telemetry.patch
-------------------------------------------------------------------
Sun Feb 9 22:37:18 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Update to release 1.70.1
* grpc++ begins to require C++17 or later to build and use it
* chttp2_server: fix a race between connection starting and it
being orphaned
* chttp2Server: fix a race between connection manager updates
and handshake
- Add link-failure.patch, return-values.patch
-------------------------------------------------------------------
Sat Apr 27 09:40:46 UTC 2024 - Jan Engelhardt <jengelh@inai.de>
- Update to release v1.63
* OTel C++: Add experimental optional locality label available
to client per-attempt metrics.
* surface: Add an API to inject connected endpoints into servers.
* OTel C++: Add API to set channel scope filter.
* EventEngine: Enable the EventEngine DNS Resolver on POSIX.
-------------------------------------------------------------------
Wed Apr 3 09:05:38 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
- abseil-cpp 20240116 in SP5 can't be used with gcc7 when using
-DCMAKE_CXX_STANDARD=17 since it tries to use the <filesystem>
header file so revert last change to "switch build
compiler back to default on SLE-15" to use gcc12 again.
-------------------------------------------------------------------
Sun Mar 10 11:59:06 UTC 2024 - Jan Engelhardt <jengelh@inai.de>
- Update to release 1.62.1
* This release contains unspecified refinements, improvements,
and bug fixes.
-------------------------------------------------------------------
Wed Feb 21 09:36:25 UTC 2024 - Jan Engelhardt <jengelh@inai.de>
- Update to release 1.62
* metadata: Allow non application/grpc content-type values
-------------------------------------------------------------------
Wed Feb 14 16:15:47 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
- Also fixup hashbang of tools/profiling/ios_bin/parse_link_map.py,
which was exceptionally not using env python, but directly
/usr/bin/python.
-------------------------------------------------------------------
Tue Feb 13 10:18:50 UTC 2024 - Jan Engelhardt <jengelh@inai.de>
- Update to release 1.61.1
* Add missing include directives so that the build with
newer absl works
-------------------------------------------------------------------
Wed Jan 31 19:51:15 UTC 2024 - Jan Engelhardt <jengelh@inai.de>
- Update to release 1.61
* SSA: change xds_override_host policy to manage subchannels
based on last-used time rather than EDS health state
* xDS: read connection idle timeout from CDS resource
* xDS: move CDS and EDS watchers into xds resolver
* alpn: Remove grpc-exp experimental ALPN protocol
- Add terminate.patch
-------------------------------------------------------------------
Mon Jan 29 17:25:06 UTC 2024 - Jan Engelhardt <jengelh@inai.de>
- Force-replace all /usr/bin/env python by python3.
-------------------------------------------------------------------
Thu Jan 18 07:58:43 UTC 2024 - John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
- Add ARM-Unaligned-access-fixes.patch to fix unaligned
access on ARM which causes issues on AArch64 kernels
- Add Fix-compilation-on-RHEL-7-ppc64le-gcc-4.8.patch
to fix FTBFS on ppc64le when using gcc-7 (boo#1208794)
- Revert changes made to RPATH handling
- Switch build compiler back to default on SLE-15
-------------------------------------------------------------------
Tue Nov 28 21:04:45 UTC 2023 - Jan Engelhardt <jengelh@inai.de>
- Update to release 1.60
* Implemented dualstack IPv4 and IPv6 backend support, as per
draft gRFC A61. xDS support currently guarded by
GRPC_EXPERIMENTAL_XDS_DUALSTACK_ENDPOINTS env var.
* Support for setting proxy for addresses.
* Add v1 reflection.
-------------------------------------------------------------------
Sat Nov 18 08:56:16 UTC 2023 - Dirk Müller <dmueller@suse.com>
- update to 1.59.3:
* Security - Revocation: Crl backport to 1.59. (#34926)
-------------------------------------------------------------------
Tue Nov 14 10:21:58 UTC 2023 - John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
- Adjust RPATH handling to fix FTBFS on SLE-15
* Set CMAKE_SKIP_RPATH to FALSE
* Set CMAKE_SKIP_INSTALL_RPATH to TRUE
- Build with gcc-12 on SLE-15 to fix FTBFS on ppc64le
- security update
- added patches
fix CVE-2024-11407 [bsc#1233821], servers with transmit zero copy enabled through GRPC_ARG_TCP_TX_ZEROCOPY_ENABLED can experience data corruption issues
+ grpc-CVE-2024-11407.patch
fix CVE-2024-7246 [bsc#1228919], gRPC clients communicating with a HTTP/2 proxy can poison the HPACK table between the proxy and the backend
+ grpc-CVE-2024-7246.patch
-------------------------------------------------------------------
Tue Oct 31 05:21:51 UTC 2023 - Jan Engelhardt <jengelh@inai.de>
@@ -231,7 +64,7 @@ Wed Sep 6 16:02:40 UTC 2023 - Jan Engelhardt <jengelh@inai.de>
-------------------------------------------------------------------
Wed Aug 9 01:02:35 UTC 2023 - Jan Engelhardt <jengelh@inai.de>
- Update to release 1.57 (CVE-2023-4785, bsc#1215334, CVE-2023-33953, bsc#1214148)
- Update to release 1.57
* EventEngine: Change GetDNSResolver to return
absl::StatusOr<std::unique_ptr<DNSResolver>>.
* Improve server handling of file descriptor exhaustion.
@@ -257,7 +90,7 @@ Wed Jun 28 07:09:25 UTC 2023 - Fabian Vogt <fvogt@suse.com>
-------------------------------------------------------------------
Mon Jun 19 03:28:40 UTC 2023 - Jan Engelhardt <jengelh@inai.de>
- Update to release 1.56.0 (CVE-2023-32731, bsc#1212180)
- Update to release 1.56.0
* core: Add support for vsock transport.
* EventEngine: Change TXT lookup result type to
std::vector<std::string>.
@@ -267,7 +100,7 @@ Mon Jun 19 03:28:40 UTC 2023 - Jan Engelhardt <jengelh@inai.de>
-------------------------------------------------------------------
Tue Jun 13 21:09:27 UTC 2023 - Dirk Müller <dmueller@suse.com>
- pin to protobuf < 22 until next version update
- pin to protobuf < 22 until next version update
-------------------------------------------------------------------
Tue May 2 10:15:43 UTC 2023 - Jan Engelhardt <jengelh@inai.de>
@@ -278,7 +111,7 @@ Tue May 2 10:15:43 UTC 2023 - Jan Engelhardt <jengelh@inai.de>
-------------------------------------------------------------------
Fri Apr 14 11:07:33 UTC 2023 - Jan Engelhardt <jengelh@inai.de>
- Update to release 1.54 (CVE-2023-32732, bsc#1212182)
- Update to release 1.54
* XDS: enable XDS federation by default
* TlsCreds: Support revocation of intermediate in chain
@@ -591,7 +424,7 @@ Sat Mar 6 09:08:09 UTC 2021 - Jan Engelhardt <jengelh@inai.de>
-------------------------------------------------------------------
Thu Mar 4 09:53:13 UTC 2021 - Paolo Stivanin <info@paolostivanin.com>
- Update to 1.36.1:
- Update to 1.36.1:
* Core:
* Remove unnecessary internal pollset set in c-ares DNS resolver
* Support Default Root Certs in Tls Credentials

View File

@@ -1,7 +1,7 @@
#
# spec file for package grpc
#
# Copyright (c) 2025 SUSE LLC
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,11 +16,11 @@
#
%define lver 49
%define lverp 1_74
%define lver 36
%define lverp 1_59
%define src_install_dir /usr/src/%name
Name: grpc
Version: 1.74.0
Version: 1.59.2
Release: 0
Summary: HTTP/2-based Remote Procedure Call implementation
License: Apache-2.0
@@ -28,20 +28,14 @@ Group: Development/Tools/Building
URL: https://grpc.io/
Source: https://github.com/grpc/grpc/archive/v%version.tar.gz
Source2: %name-rpmlintrc
Patch1: terminate.patch
Patch2: link-failure.patch
Patch3: return-values.patch
Patch4: telemetry.patch
Patch14: ARM-Unaligned-access-fixes.patch
Patch15: Fix-compilation-on-RHEL-7-ppc64le-gcc-4.8.patch
BuildRequires: abseil-cpp-devel >= 20240722
# CVE-2024-7246 [bsc#1228919], gRPC clients communicating with a HTTP/2 proxy can poison the HPACK table between the proxy and the backend
Patch0: grpc-CVE-2024-7246.patch
# CVE-2024-11407 [bsc#1233821], servers with transmit zero copy enabled through GRPC_ARG_TCP_TX_ZEROCOPY_ENABLED can experience data corruption issues
Patch1: grpc-CVE-2024-11407.patch
BuildRequires: abseil-cpp-devel
BuildRequires: cmake
BuildRequires: fdupes
%if 0%{?suse_version} < 1550
BuildRequires: gcc12-c++
%else
BuildRequires: gcc-c++
%endif
BuildRequires: opencensus-proto-source
BuildRequires: pkg-config
BuildRequires: pkgconfig(libcares) >= 1.19.1
@@ -87,7 +81,7 @@ Summary: A small protobuf implementation in C
Group: System/Libraries
%description -n libupb%lver
μpb (often written "upb") is a small protobuf implementation written in C.
μpb (often written 'upb') is a small protobuf implementation written in C.
upb generates a C API for creating, parsing, and serializing messages as
declared in .proto files. upb is heavily arena-based: all messages always live
@@ -113,7 +107,7 @@ Group: Development/Tools/Building
Requires: libupb%lver = %version
%description -n upb-devel
μpb (often written "upb") is a small protobuf implementation written in C.
μpb (often written 'upb') is a small protobuf implementation written in C.
upb generates a C API for creating, parsing, and serializing messages as
declared in .proto files. upb is heavily arena-based: all messages always live
@@ -131,32 +125,16 @@ This subpackage contains source code of the gRPC reference implementation.
%prep
%autosetup -p1
find "." -type f -exec grep -l '/usr/bin/python' {} + |
xargs -r perl -i -lpe \
's{#! ?/usr/bin/python\S*}{#!/usr/bin/python3}g;'
find "." -type f -exec grep -l '/usr/bin/env ' {} + |
xargs -r perl -i -lpe \
's{#! ?/usr/bin/env python\S*}{#!/usr/bin/python3}g;
s{#! ?/usr/bin/env sh}{#!/bin/sh}g;
s{#! ?/usr/bin/env bash}{#!/bin/bash}g;
s{#! ?/usr/bin/env }{#!/usr/bin/}g;'
rm -Rf third_party/abseil-cpp/
%build
%if 0%{?suse_version} < 1600
export CC=gcc-12
export CXX=g++-12
%endif
%define _lto_cflags %nil
# protoc is invoked strangely; make it happy with this dir or it will assert()
mkdir -p third_party/protobuf/src
cp -a /usr/src/opencensus-proto third_party/
export CFLAGS="%optflags -Wno-error"
export CXXFLAGS="$CFLAGS"
find "." -type f -exec grep '/usr/bin/env ' {} + || :
s="$PWD"
%cmake -DgRPC_INSTALL=ON \
-DgRPC_INSTALL_LIBDIR:PATH="%_lib" \
-DgRPC_INSTALL_CMAKEDIR:PATH="%_libdir/cmake/grpc" \
@@ -167,26 +145,24 @@ s="$PWD"
-DgRPC_SSL_PROVIDER=package \
-DZLIB_LIBRARY=%{_libdir}/libz.so \
-DgRPC_ZLIB_PROVIDER=package \
-DCMAKE_CXX_STANDARD=17
-DCMAKE_CXX_STANDARD=17
%cmake_build
cd "$s"
find "." -type f -exec grep '/usr/bin/env ' {} + || :
%install
b="%buildroot"
%cmake_install
cd "$b/usr"
pushd "$b/usr"
rm -fv lib/*.a share/grpc/*.pem
cd -
popd
# Install sources
cd "%__builddir"
pushd %__builddir
rm -fv CMakeFiles/*.log
make clean
find . -type f "(" -name "*.so" -o -name "*.o" -o -name ".git*" -o \
-name "*.bin" -o -name "*.out" ")" -exec rm -Rfv {} +
cd -
popd
# Don't include abseil-cpp in sources
rm -fr third_party/abseil-cpp/*
# Don't include non-deterministic log in sources
@@ -200,10 +176,14 @@ cp -r * "%buildroot/%src_install_dir"
# Checks cannot be run because of `make clean` above
#%%check
%ldconfig_scriptlets -n libgrpc%lver
%ldconfig_scriptlets -n libgrpc%lverp
%ldconfig_scriptlets -n libgrpc++%lverp
%ldconfig_scriptlets -n libupb%lver
%post -n libgrpc%lver -p /sbin/ldconfig
%postun -n libgrpc%lver -p /sbin/ldconfig
%post -n libgrpc%lverp -p /sbin/ldconfig
%postun -n libgrpc%lverp -p /sbin/ldconfig
%post -n libgrpc++%lverp -p /sbin/ldconfig
%postun -n libgrpc++%lverp -p /sbin/ldconfig
%post -n libupb%lver -p /sbin/ldconfig
%postun -n libupb%lver -p /sbin/ldconfig
%files -n libgrpc%lver
%_libdir/libaddress_sorting.so.%{lver}*

View File

@@ -1,33 +0,0 @@
From: Jan Engelhardt <ej@inai.de>
Date: 2025-02-09 18:51:55.470853259 +0100
happened since about 1.63 (last known good 1.62.x)
[ 9s] /usr/bin/cc -fPIC -O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g -Wno-error -O2 -g -DNDEBUG -Wl,--dependency-file=CMakeFiles/upb_textformat_lib.dir/link.d -Wl,--as-needed -Wl,--no-undefined -Wl,-z,now -shared -Wl,-soname,libupb_textformat_lib.so.45 -o libupb_textformat_lib.so.45.0.0 CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/lex/atoi.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/lex/round_trip.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/lex/strtod.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/lex/unicode.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/message/copy.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/message/merge.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/reflection/def_pool.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/reflection/def_type.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/reflection/desc_state.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/reflection/enum_def.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/reflection/enum_reserved_range.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/reflection/enum_value_def.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/reflection/extension_range.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/reflection/field_def.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/reflection/file_def.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/reflection/internal/def_builder.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/reflection/internal/strdup2.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/reflection/message.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/reflection/message_def.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/reflection/message_reserved_range.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/reflection/method_def.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/reflection/oneof_def.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/reflection/service_def.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/text/encode.c.o CMakeFiles/upb_textformat_lib.dir/third_party/upb/upb/text/internal/encode.c.o -Wl,-rpath,/home/abuild/rpmbuild/BUILD/grpc-1.70.1-build/grpc-1.70.1/build: -ldl -lm -lrt libupb_mini_descriptor_lib.so.45.0.0 libupb_wire_lib.so.45.0.0 libutf8_range_lib.so.45.0.0 libupb_message_lib.so.45.0.0 libupb_base_lib.so.45.0.0 libupb_mem_lib.so.45.0.0 -ldl -lm -lrt
[ 9s] /home/abuild/rpmbuild/BUILD/grpc-1.70.1-build/grpc-1.70.1/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h:5195:(.text+0x3b0): undefined reference to `google__protobuf__ServiceOptions_msg_init'
[ 9s] collect2: error: ld returned 1 exit status
---
CMakeLists.txt | 2 ++
1 file changed, 2 insertions(+)
Index: grpc-1.74.0/CMakeLists.txt
===================================================================
--- grpc-1.74.0.orig/CMakeLists.txt
+++ grpc-1.74.0/CMakeLists.txt
@@ -4410,6 +4410,7 @@ add_library(upb_reflection_lib
third_party/upb/upb/reflection/method_def.c
third_party/upb/upb/reflection/oneof_def.c
third_party/upb/upb/reflection/service_def.c
+ src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c
)
target_compile_features(upb_reflection_lib PUBLIC cxx_std_17)
@@ -4464,6 +4465,7 @@ endif()
add_library(upb_textformat_lib ${_gRPC_STATIC_WIN32}
third_party/upb/upb/text/encode.c
third_party/upb/upb/text/internal/encode.c
+ src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c
)
target_compile_features(upb_textformat_lib PUBLIC cxx_std_17)

View File

@@ -1,81 +0,0 @@
From: Jan Engelhardt <ej@inai.de>
Date: 2025-02-09 21:28:54.517217439 +0100
Fix some terrible code.
[ 28s] /home/abuild/rpmbuild/BUILD/grpc-1.70.1-build/grpc-1.70.1/src/core/lib/transport/call_state.h:157:3: error: control reaches end of non-void function [-Werror=return-type]
---
src/core/call/call_state.h | 5 +++++
src/core/channelz/channelz.h | 1 +
src/core/lib/promise/inter_activity_mutex.h | 2 ++
3 files changed, 8 insertions(+)
Index: grpc-1.74.0/src/core/call/call_state.h
===================================================================
--- grpc-1.74.0.orig/src/core/call/call_state.h
+++ grpc-1.74.0/src/core/call/call_state.h
@@ -155,6 +155,7 @@ class CallState {
case ClientToServerPullState::kTerminated:
return "Terminated";
}
+ return "Undefined";
}
template <typename Sink>
friend void AbslStringify(Sink& out, ClientToServerPullState state) {
@@ -185,6 +186,7 @@ class CallState {
case ClientToServerPushState::kFinished:
return "Finished";
}
+ return "Undefined";
}
template <typename Sink>
friend void AbslStringify(Sink& out, ClientToServerPushState state) {
@@ -235,6 +237,7 @@ class CallState {
case ServerToClientPullState::kTerminated:
return "Terminated";
}
+ return "Undefined";
}
template <typename Sink>
friend void AbslStringify(Sink& out, ServerToClientPullState state) {
@@ -275,6 +278,7 @@ class CallState {
case ServerToClientPushState::kFinished:
return "Finished";
}
+ return "Undefined";
}
template <typename Sink>
friend void AbslStringify(Sink& out, ServerToClientPushState state) {
@@ -305,6 +309,7 @@ class CallState {
case ServerTrailingMetadataState::kPulledCancel:
return "PulledCancel";
}
+ return "Undefined";
}
template <typename Sink>
friend void AbslStringify(Sink& out, ServerTrailingMetadataState state) {
Index: grpc-1.74.0/src/core/channelz/channelz.h
===================================================================
--- grpc-1.74.0.orig/src/core/channelz/channelz.h
+++ grpc-1.74.0/src/core/channelz/channelz.h
@@ -144,6 +144,7 @@ class BaseNode : public DualRefCounted<B
case EntityType::kCall:
return "call";
}
+ return "unknown";
}
static std::optional<EntityType> KindToEntityType(absl::string_view kind) {
Index: grpc-1.74.0/src/core/lib/promise/inter_activity_mutex.h
===================================================================
--- grpc-1.74.0.orig/src/core/lib/promise/inter_activity_mutex.h
+++ grpc-1.74.0/src/core/lib/promise/inter_activity_mutex.h
@@ -307,6 +307,8 @@ class InterActivityMutex {
case State::kMovedFrom:
LOG(FATAL) << "Mutex acquirer already moved from";
}
+ // Control never actually reaches here
+ return Pending{};
}
private:

View File

@@ -1,22 +0,0 @@
From: <ej@inai.de>
Date: 2025-02-12 15:22:18.058482440 +0100
CMakeLists.txt is using a bundled copy of otel, so there is no .pc file to depend on.
---
CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: grpc-1.74.0/CMakeLists.txt
===================================================================
--- grpc-1.74.0.orig/CMakeLists.txt
+++ grpc-1.74.0/CMakeLists.txt
@@ -47374,7 +47374,7 @@ generate_pkgconfig(
"gRPC++ OpenTelemetry Plugin"
"OpenTelemetry Plugin for gRPC C++"
"${gRPC_CPP_VERSION}"
- "absl_absl_check absl_absl_log absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_bits absl_btree absl_check absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_globals absl_log_severity absl_memory absl_no_destructor absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_string_view absl_strings absl_synchronization absl_time absl_type_traits absl_utility gpr grpc grpc++ opentelemetry_api"
+ "absl_absl_check absl_absl_log absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_bits absl_btree absl_check absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_globals absl_log_severity absl_memory absl_no_destructor absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_string_view absl_strings absl_synchronization absl_time absl_type_traits absl_utility gpr grpc grpc++"
"libcares openssl re2 zlib"
"-lgrpcpp_otel_plugin"
"-laddress_sorting -lupb_textformat_lib -lupb_json_lib -lupb_reflection_lib -lupb_wire_lib -lupb_message_lib -lutf8_range_lib -lupb_mini_descriptor_lib -lupb_mini_table_lib -lupb_hash_lib -lupb_mem_lib -lupb_base_lib -lupb_lex_lib"

View File

@@ -1,35 +0,0 @@
From: Jan Engelhardt <jengelh@inai.de>
Date: 2024-01-31 20:50:55.596208216 +0100
[ 221s] src/core/lib/promise/party.h: In member function 'bool grpc_core::Party::PromiseParticipantImpl<SuppliedFactory>::PollParticipantPromise() [with SuppliedFactory = grpc_core::ForwardCall(CallHandler, CallInitiator, ClientMetadataHandle)::<lambda()> mutable::<lambda(grpc_core::MessageHandle)> mutable::<lambda()>]':
[ 221s] src/core/lib/promise/party.h:541:5: error: control reaches end of non-void function [-Werror=return-type]
[ 221s] src/core/lib/promise/party.h: In member function 'grpc_core::Poll<typename grpc_core::promise_detail::OncePromiseFactory<void, F>::Promise::Result> grpc_core::Party::PromiseParticipantImpl<SuppliedFactory>::PollCompletion() [with SuppliedFactory = grpc_core::ForwardCall(CallHandler, CallInitiator, ClientMetadataHandle)::<lambda()> mutable::<lambda(grpc_core::MessageHandle)> mutable::<lambda()>]':
[ 221s] src/core/lib/promise/party.h:553:5: error: control reaches end of non-void function [-Werror=return-type]
That enum class only has three numerators, and it's not clear why gcc
would warn, given all three cases return.
---
src/core/lib/promise/party.h | 4 ++++
1 file changed, 4 insertions(+)
Index: grpc-1.74.0/src/core/lib/promise/party.h
===================================================================
--- grpc-1.74.0.orig/src/core/lib/promise/party.h
+++ grpc-1.74.0/src/core/lib/promise/party.h
@@ -533,6 +533,7 @@ class Party : public Activity, private W
Crash(
"unreachable: promises should not be repolled after completion");
}
+ std::terminate();
}
// Outside party poll: check whether the spawning party has completed this
@@ -545,6 +546,7 @@ class Party : public Activity, private W
case State::kResult:
return std::move(result_);
}
+ std::terminate();
}
void Destroy() override { this->Unref(); }

BIN
v1.59.2.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

BIN
v1.74.0.tar.gz (Stored with Git LFS)

Binary file not shown.