mirror of
https://github.com/prometheus/prometheus.git
synced 2025-01-12 22:37:27 -08:00
Single quotes are not valid label value delimiters.
This commit is contained in:
parent
a6ca391e6e
commit
dd07f693c8
|
@ -88,8 +88,6 @@ M [a-zA-Z_:]
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
l.offsets = append(l.offsets, l.i-1)
|
l.offsets = append(l.offsets, l.i-1)
|
||||||
<lstateLValue>\'(\\.|[^\\']|\0)*\' s = lstateLabels
|
|
||||||
l.offsets = append(l.offsets, l.i-1)
|
|
||||||
|
|
||||||
<lstateValue>[ \t]+ l.vstart = l.i
|
<lstateValue>[ \t]+ l.vstart = l.i
|
||||||
<lstateValue>(NaN) l.val = math.Float64frombits(value.NormalNaN)
|
<lstateValue>(NaN) l.val = math.Float64frombits(value.NormalNaN)
|
||||||
|
|
|
@ -146,7 +146,7 @@ yystate9:
|
||||||
c = l.next()
|
c = l.next()
|
||||||
switch {
|
switch {
|
||||||
default:
|
default:
|
||||||
goto yyrule14
|
goto yyrule13
|
||||||
case c >= '\x01' && c <= '\b' || c == '\v' || c == '\f' || c >= '\x0e' && c <= '\x1f' || c >= '!' && c <= 'ÿ':
|
case c >= '\x01' && c <= '\b' || c == '\v' || c == '\f' || c >= '\x0e' && c <= '\x1f' || c >= '!' && c <= 'ÿ':
|
||||||
goto yystate9
|
goto yystate9
|
||||||
}
|
}
|
||||||
|
@ -155,7 +155,7 @@ yystate10:
|
||||||
c = l.next()
|
c = l.next()
|
||||||
switch {
|
switch {
|
||||||
default:
|
default:
|
||||||
goto yyrule12
|
goto yyrule11
|
||||||
case c == '\t' || c == ' ':
|
case c == '\t' || c == ' ':
|
||||||
goto yystate10
|
goto yystate10
|
||||||
}
|
}
|
||||||
|
@ -164,7 +164,7 @@ yystate11:
|
||||||
c = l.next()
|
c = l.next()
|
||||||
switch {
|
switch {
|
||||||
default:
|
default:
|
||||||
goto yyrule14
|
goto yyrule13
|
||||||
case c == 'a':
|
case c == 'a':
|
||||||
goto yystate12
|
goto yystate12
|
||||||
case c >= '\x01' && c <= '\b' || c == '\v' || c == '\f' || c >= '\x0e' && c <= '\x1f' || c >= '!' && c <= '`' || c >= 'b' && c <= 'ÿ':
|
case c >= '\x01' && c <= '\b' || c == '\v' || c == '\f' || c >= '\x0e' && c <= '\x1f' || c >= '!' && c <= '`' || c >= 'b' && c <= 'ÿ':
|
||||||
|
@ -175,7 +175,7 @@ yystate12:
|
||||||
c = l.next()
|
c = l.next()
|
||||||
switch {
|
switch {
|
||||||
default:
|
default:
|
||||||
goto yyrule14
|
goto yyrule13
|
||||||
case c == 'N':
|
case c == 'N':
|
||||||
goto yystate13
|
goto yystate13
|
||||||
case c >= '\x01' && c <= '\b' || c == '\v' || c == '\f' || c >= '\x0e' && c <= '\x1f' || c >= '!' && c <= 'M' || c >= 'O' && c <= 'ÿ':
|
case c >= '\x01' && c <= '\b' || c == '\v' || c == '\f' || c >= '\x0e' && c <= '\x1f' || c >= '!' && c <= 'M' || c >= 'O' && c <= 'ÿ':
|
||||||
|
@ -186,7 +186,7 @@ yystate13:
|
||||||
c = l.next()
|
c = l.next()
|
||||||
switch {
|
switch {
|
||||||
default:
|
default:
|
||||||
goto yyrule13
|
goto yyrule12
|
||||||
case c >= '\x01' && c <= '\b' || c == '\v' || c == '\f' || c >= '\x0e' && c <= '\x1f' || c >= '!' && c <= 'ÿ':
|
case c >= '\x01' && c <= '\b' || c == '\v' || c == '\f' || c >= '\x0e' && c <= '\x1f' || c >= '!' && c <= 'ÿ':
|
||||||
goto yystate9
|
goto yystate9
|
||||||
}
|
}
|
||||||
|
@ -210,13 +210,13 @@ yystart14:
|
||||||
|
|
||||||
yystate15:
|
yystate15:
|
||||||
c = l.next()
|
c = l.next()
|
||||||
goto yyrule18
|
goto yyrule17
|
||||||
|
|
||||||
yystate16:
|
yystate16:
|
||||||
c = l.next()
|
c = l.next()
|
||||||
switch {
|
switch {
|
||||||
default:
|
default:
|
||||||
goto yyrule15
|
goto yyrule14
|
||||||
case c == '\t' || c == ' ':
|
case c == '\t' || c == ' ':
|
||||||
goto yystate16
|
goto yystate16
|
||||||
}
|
}
|
||||||
|
@ -225,7 +225,7 @@ yystate17:
|
||||||
c = l.next()
|
c = l.next()
|
||||||
switch {
|
switch {
|
||||||
default:
|
default:
|
||||||
goto yyrule17
|
goto yyrule16
|
||||||
case c == '\n' || c == '\r':
|
case c == '\n' || c == '\r':
|
||||||
goto yystate17
|
goto yystate17
|
||||||
}
|
}
|
||||||
|
@ -234,7 +234,7 @@ yystate18:
|
||||||
c = l.next()
|
c = l.next()
|
||||||
switch {
|
switch {
|
||||||
default:
|
default:
|
||||||
goto yyrule16
|
goto yyrule15
|
||||||
case c >= '0' && c <= '9':
|
case c >= '0' && c <= '9':
|
||||||
goto yystate18
|
goto yystate18
|
||||||
}
|
}
|
||||||
|
@ -311,8 +311,6 @@ yystart26:
|
||||||
goto yyabort
|
goto yyabort
|
||||||
case c == '"':
|
case c == '"':
|
||||||
goto yystate27
|
goto yystate27
|
||||||
case c == '\'':
|
|
||||||
goto yystate30
|
|
||||||
}
|
}
|
||||||
|
|
||||||
yystate27:
|
yystate27:
|
||||||
|
@ -339,30 +337,6 @@ yystate29:
|
||||||
goto yystate27
|
goto yystate27
|
||||||
}
|
}
|
||||||
|
|
||||||
yystate30:
|
|
||||||
c = l.next()
|
|
||||||
switch {
|
|
||||||
default:
|
|
||||||
goto yystate30 // c >= '\x00' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= 'ÿ'
|
|
||||||
case c == '\'':
|
|
||||||
goto yystate31
|
|
||||||
case c == '\\':
|
|
||||||
goto yystate32
|
|
||||||
}
|
|
||||||
|
|
||||||
yystate31:
|
|
||||||
c = l.next()
|
|
||||||
goto yyrule11
|
|
||||||
|
|
||||||
yystate32:
|
|
||||||
c = l.next()
|
|
||||||
switch {
|
|
||||||
default:
|
|
||||||
goto yyabort
|
|
||||||
case c >= '\x01' && c <= '\t' || c >= '\v' && c <= 'ÿ':
|
|
||||||
goto yystate30
|
|
||||||
}
|
|
||||||
|
|
||||||
yyrule1: // \0
|
yyrule1: // \0
|
||||||
{
|
{
|
||||||
return eof
|
return eof
|
||||||
|
@ -421,24 +395,18 @@ yyrule10: // \"(\\.|[^\\"]|\0)*\"
|
||||||
l.offsets = append(l.offsets, l.i-1)
|
l.offsets = append(l.offsets, l.i-1)
|
||||||
goto yystate0
|
goto yystate0
|
||||||
}
|
}
|
||||||
yyrule11: // \'(\\.|[^\\']|\0)*\'
|
yyrule11: // [ \t]+
|
||||||
{
|
|
||||||
s = lstateLabels
|
|
||||||
l.offsets = append(l.offsets, l.i-1)
|
|
||||||
goto yystate0
|
|
||||||
}
|
|
||||||
yyrule12: // [ \t]+
|
|
||||||
{
|
{
|
||||||
l.vstart = l.i
|
l.vstart = l.i
|
||||||
goto yystate0
|
goto yystate0
|
||||||
}
|
}
|
||||||
yyrule13: // (NaN)
|
yyrule12: // (NaN)
|
||||||
{
|
{
|
||||||
l.val = math.Float64frombits(value.NormalNaN)
|
l.val = math.Float64frombits(value.NormalNaN)
|
||||||
s = lstateTimestamp
|
s = lstateTimestamp
|
||||||
goto yystate0
|
goto yystate0
|
||||||
}
|
}
|
||||||
yyrule14: // [^\n \t\r]+
|
yyrule13: // [^\n \t\r]+
|
||||||
{
|
{
|
||||||
// We don't parse strictly correct floats as the conversion
|
// We don't parse strictly correct floats as the conversion
|
||||||
// repeats the effort anyway.
|
// repeats the effort anyway.
|
||||||
|
@ -449,12 +417,12 @@ yyrule14: // [^\n \t\r]+
|
||||||
s = lstateTimestamp
|
s = lstateTimestamp
|
||||||
goto yystate0
|
goto yystate0
|
||||||
}
|
}
|
||||||
yyrule15: // [ \t]+
|
yyrule14: // [ \t]+
|
||||||
{
|
{
|
||||||
l.tstart = l.i
|
l.tstart = l.i
|
||||||
goto yystate0
|
goto yystate0
|
||||||
}
|
}
|
||||||
yyrule16: // {D}+
|
yyrule15: // {D}+
|
||||||
{
|
{
|
||||||
ts, err := strconv.ParseInt(yoloString(l.b[l.tstart:l.i]), 10, 64)
|
ts, err := strconv.ParseInt(yoloString(l.b[l.tstart:l.i]), 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -464,12 +432,12 @@ yyrule16: // {D}+
|
||||||
l.ts = &ts
|
l.ts = &ts
|
||||||
goto yystate0
|
goto yystate0
|
||||||
}
|
}
|
||||||
yyrule17: // [\r\n]+
|
yyrule16: // [\r\n]+
|
||||||
{
|
{
|
||||||
l.nextMstart = l.i
|
l.nextMstart = l.i
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
yyrule18: // \0
|
yyrule17: // \0
|
||||||
{
|
{
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|
|
@ -113,6 +113,14 @@ func TestParseErrors(t *testing.T) {
|
||||||
input: "a",
|
input: "a",
|
||||||
err: "no token found",
|
err: "no token found",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
input: "a{b='c'} 1\n",
|
||||||
|
err: "no token found",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
input: "a{b=\n",
|
||||||
|
err: "no token found",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
input: "a{\xff=\"foo\"} 1\n",
|
input: "a{\xff=\"foo\"} 1\n",
|
||||||
err: "no token found",
|
err: "no token found",
|
||||||
|
|
Loading…
Reference in a new issue