Don't crash on empty tracestate value (#3104)
This commit is contained in:
parent
43e0f5e1b1
commit
d110a6075c
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
package io.opentelemetry.api.trace;
|
||||
|
||||
import io.opentelemetry.api.internal.StringUtils;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
|
@ -158,7 +159,7 @@ final class ArrayBasedTraceStateBuilder implements TraceStateBuilder {
|
|||
// Value is opaque string up to 256 characters printable ASCII RFC0020 characters (i.e., the range
|
||||
// 0x20 to 0x7E) except comma , and =.
|
||||
private static boolean isValueValid(@Nullable String value) {
|
||||
if (value == null) {
|
||||
if (StringUtils.isNullOrEmpty(value)) {
|
||||
return false;
|
||||
}
|
||||
if (value.length() > VALUE_MAX_SIZE || value.charAt(value.length() - 1) == ' ' /* '\u0020' */) {
|
||||
|
|
|
|||
|
|
@ -436,6 +436,24 @@ class W3CTraceContextPropagatorTest {
|
|||
TRACE_ID_BASE16, SPAN_ID_BASE16, TraceFlags.getSampled(), TraceState.getDefault()));
|
||||
}
|
||||
|
||||
@Test
|
||||
void extract_InvalidTracestate_EmptyValue() {
|
||||
Map<String, String> invalidHeaders = new HashMap<>();
|
||||
invalidHeaders.put(
|
||||
W3CTraceContextPropagator.TRACE_PARENT,
|
||||
"00-" + TRACE_ID_BASE16 + "-" + SPAN_ID_BASE16 + "-01");
|
||||
invalidHeaders.put(W3CTraceContextPropagator.TRACE_STATE, "foo=,test=test");
|
||||
assertThat(
|
||||
getSpanContext(
|
||||
w3cTraceContextPropagator.extract(Context.current(), invalidHeaders, getter)))
|
||||
.isEqualTo(
|
||||
SpanContext.createFromRemoteParent(
|
||||
TRACE_ID_BASE16,
|
||||
SPAN_ID_BASE16,
|
||||
TraceFlags.getSampled(),
|
||||
TraceState.builder().put("test", "test").build()));
|
||||
}
|
||||
|
||||
@Test
|
||||
void extract_InvalidTracestate_OneString() {
|
||||
Map<String, String> invalidHeaders = new HashMap<>();
|
||||
|
|
|
|||
Loading…
Reference in New Issue