Merge pull request #2764 from prometheus/nullparse
pkg/textparse: allow null bytes in label values
This commit is contained in:
commit
10d8b6b633
|
@ -81,9 +81,9 @@ M [a-zA-Z_:]
|
||||||
<lstateLName>{S}({L}|{D})*= s = lstateLValue
|
<lstateLName>{S}({L}|{D})*= s = lstateLValue
|
||||||
l.offsets = append(l.offsets, l.i-1)
|
l.offsets = append(l.offsets, l.i-1)
|
||||||
|
|
||||||
<lstateLValue>\"(\\.|[^\\"])*\" s = lstateLabels
|
<lstateLValue>\"(\\.|[^\\"]|\0)*\" s = lstateLabels
|
||||||
l.offsets = append(l.offsets, l.i-1)
|
l.offsets = append(l.offsets, l.i-1)
|
||||||
<lstateLValue>\'(\\.|[^\\'])*\' s = lstateLabels
|
<lstateLValue>\'(\\.|[^\\']|\0)*\' s = lstateLabels
|
||||||
l.offsets = append(l.offsets, l.i-1)
|
l.offsets = append(l.offsets, l.i-1)
|
||||||
|
|
||||||
<lstateValue>[ \t]+ l.vstart = l.i
|
<lstateValue>[ \t]+ l.vstart = l.i
|
||||||
|
|
|
@ -318,13 +318,11 @@ yystate27:
|
||||||
c = l.next()
|
c = l.next()
|
||||||
switch {
|
switch {
|
||||||
default:
|
default:
|
||||||
goto yyabort
|
goto yystate27 // c >= '\x00' && c <= '!' || c >= '#' && c <= '[' || c >= ']' && c <= 'ÿ'
|
||||||
case c == '"':
|
case c == '"':
|
||||||
goto yystate28
|
goto yystate28
|
||||||
case c == '\\':
|
case c == '\\':
|
||||||
goto yystate29
|
goto yystate29
|
||||||
case c >= '\x01' && c <= '!' || c >= '#' && c <= '[' || c >= ']' && c <= 'ÿ':
|
|
||||||
goto yystate27
|
|
||||||
}
|
}
|
||||||
|
|
||||||
yystate28:
|
yystate28:
|
||||||
|
@ -344,13 +342,11 @@ yystate30:
|
||||||
c = l.next()
|
c = l.next()
|
||||||
switch {
|
switch {
|
||||||
default:
|
default:
|
||||||
goto yyabort
|
goto yystate30 // c >= '\x00' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= 'ÿ'
|
||||||
case c == '\'':
|
case c == '\'':
|
||||||
goto yystate31
|
goto yystate31
|
||||||
case c == '\\':
|
case c == '\\':
|
||||||
goto yystate32
|
goto yystate32
|
||||||
case c >= '\x01' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= 'ÿ':
|
|
||||||
goto yystate30
|
|
||||||
}
|
}
|
||||||
|
|
||||||
yystate31:
|
yystate31:
|
||||||
|
@ -414,13 +410,13 @@ yyrule9: // {S}({L}|{D})*=
|
||||||
l.offsets = append(l.offsets, l.i-1)
|
l.offsets = append(l.offsets, l.i-1)
|
||||||
goto yystate0
|
goto yystate0
|
||||||
}
|
}
|
||||||
yyrule10: // \"(\\.|[^\\"])*\"
|
yyrule10: // \"(\\.|[^\\"]|\0)*\"
|
||||||
{
|
{
|
||||||
s = lstateLabels
|
s = lstateLabels
|
||||||
l.offsets = append(l.offsets, l.i-1)
|
l.offsets = append(l.offsets, l.i-1)
|
||||||
goto yystate0
|
goto yystate0
|
||||||
}
|
}
|
||||||
yyrule11: // \'(\\.|[^\\'])*\'
|
yyrule11: // \'(\\.|[^\\']|\0)*\'
|
||||||
{
|
{
|
||||||
s = lstateLabels
|
s = lstateLabels
|
||||||
l.offsets = append(l.offsets, l.i-1)
|
l.offsets = append(l.offsets, l.i-1)
|
||||||
|
|
|
@ -38,6 +38,7 @@ some:aggregate:rate5m{a_b="c"} 1
|
||||||
# HELP go_goroutines Number of goroutines that currently exist.
|
# HELP go_goroutines Number of goroutines that currently exist.
|
||||||
# TYPE go_goroutines gauge
|
# TYPE go_goroutines gauge
|
||||||
go_goroutines 33 123123`
|
go_goroutines 33 123123`
|
||||||
|
input += "\nnull_byte_metric{a=\"abc\x00\"} 1"
|
||||||
|
|
||||||
int64p := func(x int64) *int64 { return &x }
|
int64p := func(x int64) *int64 { return &x }
|
||||||
|
|
||||||
|
@ -72,6 +73,10 @@ go_goroutines 33 123123`
|
||||||
v: 33,
|
v: 33,
|
||||||
t: int64p(123123),
|
t: int64p(123123),
|
||||||
lset: labels.FromStrings("__name__", "go_goroutines"),
|
lset: labels.FromStrings("__name__", "go_goroutines"),
|
||||||
|
}, {
|
||||||
|
m: "null_byte_metric{a=\"abc\x00\"}",
|
||||||
|
v: 1,
|
||||||
|
lset: labels.FromStrings("__name__", "null_byte_metric", "a", "abc\x00"),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue