mirror of
https://github.com/kubernetes/client-go.git
synced 2025-06-28 16:07:29 +00:00
Merge pull request #93408 from joelsmith/master
jsonpath: disallow multiple immediate recursive descent Kubernetes-commit: c0ec2eee41794796dee230f75478602b707f2be2
This commit is contained in:
commit
00dbcca6ee
@ -263,6 +263,8 @@ func TestStructInput(t *testing.T) {
|
|||||||
{"allarray", "{.Book[*].Author}", storeData, "Nigel Rees Evelyn Waugh Herman Melville", false},
|
{"allarray", "{.Book[*].Author}", storeData, "Nigel Rees Evelyn Waugh Herman Melville", false},
|
||||||
{"allfields", `{range .Bicycle[*]}{ "{" }{ @.* }{ "} " }{end}`, storeData, "{red 19.95 true} {green 20.01 false} ", false},
|
{"allfields", `{range .Bicycle[*]}{ "{" }{ @.* }{ "} " }{end}`, storeData, "{red 19.95 true} {green 20.01 false} ", false},
|
||||||
{"recurfields", "{..Price}", storeData, "8.95 12.99 8.99 19.95 20.01", false},
|
{"recurfields", "{..Price}", storeData, "8.95 12.99 8.99 19.95 20.01", false},
|
||||||
|
{"recurdotfields", "{...Price}", storeData, "8.95 12.99 8.99 19.95 20.01", false},
|
||||||
|
{"superrecurfields", "{............................................................Price}", storeData, "", true},
|
||||||
{"allstructsSlice", "{.Bicycle}", storeData,
|
{"allstructsSlice", "{.Bicycle}", storeData,
|
||||||
`[{"Color":"red","Price":19.95,"IsNew":true},{"Color":"green","Price":20.01,"IsNew":false}]`, false},
|
`[{"Color":"red","Price":19.95,"IsNew":true},{"Color":"green","Price":20.01,"IsNew":false}]`, false},
|
||||||
{"allstructs", `{range .Bicycle[*]}{ @ }{ " " }{end}`, storeData,
|
{"allstructs", `{range .Bicycle[*]}{ @ }{ " " }{end}`, storeData,
|
||||||
|
@ -214,8 +214,11 @@ func (p *Parser) parseIdentifier(cur *ListNode) error {
|
|||||||
return p.parseInsideAction(cur)
|
return p.parseInsideAction(cur)
|
||||||
}
|
}
|
||||||
|
|
||||||
// parseRecursive scans the recursive desent operator ..
|
// parseRecursive scans the recursive descent operator ..
|
||||||
func (p *Parser) parseRecursive(cur *ListNode) error {
|
func (p *Parser) parseRecursive(cur *ListNode) error {
|
||||||
|
if lastIndex := len(cur.Nodes) - 1; lastIndex >= 0 && cur.Nodes[lastIndex].Type() == NodeRecursive {
|
||||||
|
return fmt.Errorf("invalid multiple recursive descent")
|
||||||
|
}
|
||||||
p.pos += len("..")
|
p.pos += len("..")
|
||||||
p.consumeText()
|
p.consumeText()
|
||||||
cur.append(newRecursive())
|
cur.append(newRecursive())
|
||||||
|
@ -141,6 +141,7 @@ func TestFailParser(t *testing.T) {
|
|||||||
{"invalid number", "{+12.3.0}", "cannot parse number +12.3.0"},
|
{"invalid number", "{+12.3.0}", "cannot parse number +12.3.0"},
|
||||||
{"unterminated array", "{[1}", "unterminated array"},
|
{"unterminated array", "{[1}", "unterminated array"},
|
||||||
{"unterminated filter", "{[?(.price]}", "unterminated filter"},
|
{"unterminated filter", "{[?(.price]}", "unterminated filter"},
|
||||||
|
{"invalid multiple recursive descent", "{........}", "invalid multiple recursive descent"},
|
||||||
}
|
}
|
||||||
for _, test := range failParserTests {
|
for _, test := range failParserTests {
|
||||||
_, err := Parse(test.name, test.text)
|
_, err := Parse(test.name, test.text)
|
||||||
|
Loading…
Reference in New Issue
Block a user