Skip to content

Commit 8a40d1d

Browse files
authored
fix encoding errors caused by string_view that does not end with '\0' (#84)
Signed-off-by: wbpcode <[email protected]>
1 parent 8b61de1 commit 8a40d1d

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

source/tracing_context_impl.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,8 @@ std::string TracingContextImpl::encodeSpan(
224224
header_value += Base64::encode(service_) + "-";
225225
header_value += Base64::encode(service_instance_) + "-";
226226
header_value += Base64::encode(endpoint) + "-";
227-
header_value += Base64::encode(target_address.data());
227+
header_value +=
228+
Base64::encode(target_address.data(), target_address.length());
228229

229230
return header_value;
230231
}

test/tracing_context_test.cc

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,26 @@ TEST_F(TracingContextTest, SW8CreateTest) {
342342
"1-MQ==-dXVpZA==-1-bWVzaA==-c2VydmljZV8w-c2FtcGxlMQ==-MTAuMC4wLjE6NDQz");
343343

344344
EXPECT_EQ(expect_sw8, *sc.createSW8HeaderValue(span2, target_address));
345+
346+
std::vector<char> target_address_based_vector;
347+
target_address_based_vector.reserve(target_address.size() * 2);
348+
349+
target_address_based_vector = {'1', '0', '.', '0', '.', '0',
350+
'.', '1', ':', '4', '4', '3'};
351+
352+
std::string_view target_address_based_vector_view{
353+
target_address_based_vector.data(), target_address_based_vector.size()};
354+
355+
EXPECT_EQ(target_address_based_vector.size(), target_address.size());
356+
EXPECT_EQ(expect_sw8,
357+
*sc.createSW8HeaderValue(span2, target_address_based_vector_view));
358+
359+
// Make sure that the end of target_address_based_vector_view is not '\0'. We
360+
// reserve enough memory for target_address_based_vector, so push back will
361+
// not cause content to be re-allocated.
362+
target_address_based_vector.push_back('x');
363+
EXPECT_EQ(expect_sw8,
364+
*sc.createSW8HeaderValue(span2, target_address_based_vector_view));
345365
}
346366

347367
TEST_F(TracingContextTest, ReadyToSendTest) {

0 commit comments

Comments
 (0)