Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

panic when object.union_n() called on an array with non-object elements #5073

Closed
charlesdaniels opened this issue Aug 31, 2022 · 0 comments · Fixed by #5074
Closed

panic when object.union_n() called on an array with non-object elements #5073

charlesdaniels opened this issue Aug 31, 2022 · 0 comments · Fixed by #5074
Labels

Comments

@charlesdaniels
Copy link
Contributor

$ cat repro.rego
package repro

a := input

x := object.union_n(a)
$ printf '[{"foo": 1}, {"bar": 2}, "baz"]' | opa eval -I --bundle . -f pretty 'data.repro.x'
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x48 pc=0x104ca7934]

goroutine 1 [running]:
github.com/open-policy-agent/opa/ast.object.MergeWith.func1(0x14000439401?, 0x104ca60bc?)
	/Users/runner/work/opa/opa/ast/term.go:2074 +0x44
github.com/open-policy-agent/opa/ast.(*object).Until.func1(0x1058b4b10?, 0x1400019e6d8?)
	/Users/runner/work/opa/opa/ast/term.go:1988 +0x28
github.com/open-policy-agent/opa/ast.(*object).Iter(0x14000206640?, 0x140004394b8)
	/Users/runner/work/opa/opa/ast/term.go:1976 +0xbc
github.com/open-policy-agent/opa/ast.(*object).Until(0x0?, 0x0?)
	/Users/runner/work/opa/opa/ast/term.go:1987 +0x38
github.com/open-policy-agent/opa/ast.object.MergeWith({0x140003a9350, {0x140003b4660, 0x2, 0x2}, 0x4, 0x42f668c43f5621d1, 0x2}, {0x0, 0x0}, 0x1058a5908)
	/Users/runner/work/opa/opa/ast/term.go:2073 +0xf4
github.com/open-policy-agent/opa/topdown.mergeWithOverwrite({0x1058bcf58?, 0x14000206600?}, {0x0?, 0x0?})
	/Users/runner/work/opa/opa/topdown/object.go:157 +0x48
github.com/open-policy-agent/opa/topdown.builtinObjectUnionN.func1(0x38?)
	/Users/runner/work/opa/opa/topdown/object.go:39 +0xec
github.com/open-policy-agent/opa/ast.(*Array).Foreach.func1(0x140004396f8?)
	/Users/runner/work/opa/opa/ast/term.go:1306 +0x28
github.com/open-policy-agent/opa/ast.(*Array).Iter(0x14000044c80, 0x140004396e8)
	/Users/runner/work/opa/opa/ast/term.go:1285 +0x74
github.com/open-policy-agent/opa/ast.(*Array).Foreach(0x0?, 0x0?)
	/Users/runner/work/opa/opa/ast/term.go:1305 +0x38
github.com/open-policy-agent/opa/topdown.builtinObjectUnionN({{0x1058b5918, 0x140001aa008}, {0x1058b9950, 0x140003a46a0}, {0x1058aae78, 0x140001921b0}, 0x1400069bda0, {0x1058b0318, 0x1400026eefc}, 0x14000296678, ...}, ...)
	/Users/runner/work/opa/opa/topdown/object.go:36 +0x98
github.com/open-policy-agent/opa/topdown.builtinErrorWrapper.func1({{0x1058b5918, 0x140001aa008}, {0x1058b9950, 0x140003a46a0}, {0x1058aae78, 0x140001921b0}, 0x1400069bda0, {0x1058b0318, 0x1400026eefc}, 0x14000296678, ...}, ...)
	/Users/runner/work/opa/opa/topdown/builtins.go:126 +0x60
github.com/open-policy-agent/opa/topdown.evalBuiltin.eval({0x1400038c3c0, 0x105fea700, {{0x1058b5918, 0x140001aa008}, {0x1058b9950, 0x140003a46a0}, {0x1058aae78, 0x140001921b0}, 0x1400069bda0, {0x1058b0318, ...}, ...}, ...}, ...)
	/Users/runner/work/opa/opa/topdown/eval.go:1686 +0x33c
github.com/open-policy-agent/opa/topdown.(*eval).evalCall(0x1400038c3c0, {0x140002f79e0, 0x3, 0x4}, 0x140003a92c0)
	/Users/runner/work/opa/opa/topdown/eval.go:813 +0x804
github.com/open-policy-agent/opa/topdown.(*eval).evalStep(0x1400038c3c0, 0x140003b4630)
	/Users/runner/work/opa/opa/topdown/eval.go:358 +0x6c4
github.com/open-policy-agent/opa/topdown.(*eval).evalExpr(0x1400038c3c0, 0x140003a6bd0)
	/Users/runner/work/opa/opa/topdown/eval.go:332 +0xe8
github.com/open-policy-agent/opa/topdown.(*eval).next(...)
	/Users/runner/work/opa/opa/topdown/eval.go:164
github.com/open-policy-agent/opa/topdown.(*eval).evalExpr.func1(0x1400038c3c0)
	/Users/runner/work/opa/opa/topdown/eval.go:333 +0x34
github.com/open-policy-agent/opa/topdown.(*eval).evalStep.func1()
	/Users/runner/work/opa/opa/topdown/eval.go:353 +0x48
github.com/open-policy-agent/opa/topdown.(*eval).biunifyValues(0x1400038c3c0, 0x1400069bd58, 0x1400069a9f0, 0x140003a9110, 0x140003a8f90, 0x140003a8ff0)
	/Users/runner/work/opa/opa/topdown/eval.go:990 +0x4a0
github.com/open-policy-agent/opa/topdown.(*eval).biunify(0x1064bc108?, 0x90?, 0x10600d360?, 0x140003a6ea0?, 0x0?, 0x140003a9290?)
	/Users/runner/work/opa/opa/topdown/eval.go:863 +0x34c
github.com/open-policy-agent/opa/topdown.evalTerm.eval({0x1400038c3c0, {0x1400020d380, 0x3, 0x3}, 0x3, 0x140003a8f90, 0x1400069bd58, 0x140003a9110, 0x1400069a9f0, 0x140003a8f90}, ...)
	/Users/runner/work/opa/opa/topdown/eval.go:2861 +0x184
github.com/open-policy-agent/opa/topdown.evalVirtualComplete.evalTerm({0x1400038c3c0, {0x1400020d380, 0x3, 0x3}, {0x1400069bf80, 0x3, 0x3}, 0x2, 0x14000206480, 0x140003a8f90, ...}, ...)
	/Users/runner/work/opa/opa/topdown/eval.go:2844 +0xd4
github.com/open-policy-agent/opa/topdown.evalVirtualComplete.evalValueRule.func1(0x1400038c5a0)
	/Users/runner/work/opa/opa/topdown/eval.go:2731 +0x1ac
github.com/open-policy-agent/opa/topdown.(*eval).evalExpr(0x1400038c5a0, 0x140003a6cf0)
	/Users/runner/work/opa/opa/topdown/eval.go:307 +0x118
github.com/open-policy-agent/opa/topdown.(*eval).next(...)
	/Users/runner/work/opa/opa/topdown/eval.go:164
github.com/open-policy-agent/opa/topdown.(*eval).evalExpr.func1(0x1400038c5a0)
	/Users/runner/work/opa/opa/topdown/eval.go:333 +0x34
github.com/open-policy-agent/opa/topdown.(*eval).evalStep.func1()
	/Users/runner/work/opa/opa/topdown/eval.go:353 +0x48
github.com/open-policy-agent/opa/topdown.(*eval).biunifyValues(0x1400038c5a0, 0x1400069bd58, 0x1400069a7b0, 0x140003a9110, 0x140003a9110, 0x140003a9170)
	/Users/runner/work/opa/opa/topdown/eval.go:990 +0x4a0
github.com/open-policy-agent/opa/topdown.(*eval).biunify(0x1?, 0x1400038e200?, 0x1400043a6e8?, 0x1057c5620?, 0x1400043a688?, 0x104d4d9ec?)
	/Users/runner/work/opa/opa/topdown/eval.go:863 +0x34c
github.com/open-policy-agent/opa/topdown.evalTerm.eval({0x1400038c5a0, {0x140000b6798, 0x1, 0x1}, 0x1, 0x140003a9110, 0x1400069bd58, 0x140003a9110, 0x1400069a7b0, 0x140003a9110}, ...)
	/Users/runner/work/opa/opa/topdown/eval.go:2861 +0x184
github.com/open-policy-agent/opa/topdown.(*eval).biunifyRef(0x1400038c5a0, 0x1058b7750?, 0x1400069a7b0, 0x140003a9110, 0x140003a9110, 0x1400026ed70?)
	/Users/runner/work/opa/opa/topdown/eval.go:1058 +0x224
github.com/open-policy-agent/opa/topdown.(*eval).biunifyValues(0x1400038c5a0, 0x1400069a7b0, 0x1400069a7f8, 0x140003a9110, 0x140003a9110, 0x140003a9170)
	/Users/runner/work/opa/opa/topdown/eval.go:954 +0x15c
github.com/open-policy-agent/opa/topdown.(*eval).biunify(0x1400043a968?, 0x104d48034?, 0x28?, 0x105818bc0?, 0x10583e701?, 0x1057c5440?)
	/Users/runner/work/opa/opa/topdown/eval.go:839 +0x4ac
github.com/open-policy-agent/opa/topdown.(*eval).unify(0x1400043aa38?, 0x1048bc768?, 0x140002f0900?, 0x1058b7650?)
	/Users/runner/work/opa/opa/topdown/eval.go:831 +0x2c
github.com/open-policy-agent/opa/topdown.(*eval).evalStep(0x1400038c5a0, 0x140003b45f0)
	/Users/runner/work/opa/opa/topdown/eval.go:351 +0x624
github.com/open-policy-agent/opa/topdown.(*eval).evalExpr(0x1400038c5a0, 0x140003a6cf0)
	/Users/runner/work/opa/opa/topdown/eval.go:332 +0xe8
github.com/open-policy-agent/opa/topdown.(*eval).next(...)
	/Users/runner/work/opa/opa/topdown/eval.go:164
github.com/open-policy-agent/opa/topdown.(*eval).evalExpr.func1(0x1400038c5a0)
	/Users/runner/work/opa/opa/topdown/eval.go:333 +0x34
github.com/open-policy-agent/opa/topdown.(*eval).evalStep.func3()
	/Users/runner/work/opa/opa/topdown/eval.go:375 +0x158
github.com/open-policy-agent/opa/topdown.(*eval).biunifyValues(0x1400038c5a0, 0x1400069a720, 0x1400019e210, 0x140003a9110, 0x140003a9110, 0x140003a9140)
	/Users/runner/work/opa/opa/topdown/eval.go:990 +0x4a0
github.com/open-policy-agent/opa/topdown.(*eval).biunify(0x1400043ad88?, 0x104d47e5c?, 0x30?, 0x10582d7c0?, 0x1400026ef01?, 0x140000940d0?)
	/Users/runner/work/opa/opa/topdown/eval.go:848 +0x440
github.com/open-policy-agent/opa/topdown.(*eval).unify(0x1400026ef80?, 0xa?, 0x1400043ae70?, 0x2?)
	/Users/runner/work/opa/opa/topdown/eval.go:831 +0x2c
github.com/open-policy-agent/opa/topdown.(*eval).evalStep(0x1400038c5a0, 0x140003b45b0)
	/Users/runner/work/opa/opa/topdown/eval.go:367 +0x440
github.com/open-policy-agent/opa/topdown.(*eval).evalExpr(0x1400038c5a0, 0x140003a6cf0)
	/Users/runner/work/opa/opa/topdown/eval.go:332 +0xe8
github.com/open-policy-agent/opa/topdown.(*eval).eval(...)
	/Users/runner/work/opa/opa/topdown/eval.go:294
github.com/open-policy-agent/opa/topdown.evalVirtualComplete.evalValueRule({0x1400038c3c0, {0x1400020d380, 0x3, 0x3}, {0x1400069bf80, 0x3, 0x3}, 0x2, 0x14000206480, 0x140003a8f90, ...}, ...)
	/Users/runner/work/opa/opa/topdown/eval.go:2715 +0x2f8
github.com/open-policy-agent/opa/topdown.evalVirtualComplete.evalValue({0x1400038c3c0, {0x1400020d380, 0x3, 0x3}, {0x1400069bf80, 0x3, 0x3}, 0x2, 0x14000206480, 0x140003a8f90, ...}, ...)
	/Users/runner/work/opa/opa/topdown/eval.go:2681 +0x1a4
github.com/open-policy-agent/opa/topdown.evalVirtualComplete.eval({0x1400038c3c0, {0x1400020d380, 0x3, 0x3}, {0x1400069bf80, 0x3, 0x3}, 0x2, 0x14000206480, 0x140003a8f90, ...}, ...)
	/Users/runner/work/opa/opa/topdown/eval.go:2647 +0x224
github.com/open-policy-agent/opa/topdown.evalVirtual.eval({0x1400038c3c0, {0x1400020d380, 0x3, 0x3}, {0x1400069bf80, 0x3, 0x3}, 0x2, 0x140003a8f90, 0x1400069a9f0, ...}, ...)
	/Users/runner/work/opa/opa/topdown/eval.go:2238 +0x2bc
github.com/open-policy-agent/opa/topdown.evalTree.next({0x1400038c3c0, {0x1400020d380, 0x3, 0x3}, {0x1400069bf80, 0x3, 0x3}, 0x2, 0x140003a8f90, 0x1400069a9f0, ...}, ...)
	/Users/runner/work/opa/opa/topdown/eval.go:2033 +0x264
github.com/open-policy-agent/opa/topdown.evalTree.eval({0x1400038c3c0, {0x1400020d380, 0x3, 0x3}, {0x1400069bf80, 0x3, 0x3}, 0x2, 0x140003a8f90, 0x1400069a9f0, ...}, ...)
	/Users/runner/work/opa/opa/topdown/eval.go:1986 +0xd0
github.com/open-policy-agent/opa/topdown.evalTree.next({0x1400038c3c0, {0x1400020d380, 0x3, 0x3}, {0x1400069bf80, 0x3, 0x3}, 0x1, 0x140003a8f90, 0x1400069a9f0, ...}, ...)
	/Users/runner/work/opa/opa/topdown/eval.go:2039 +0x2b8
github.com/open-policy-agent/opa/topdown.evalTree.eval({0x1400038c3c0, {0x1400020d380, 0x3, 0x3}, {0x1400069bf80, 0x3, 0x3}, 0x1, 0x140003a8f90, 0x1400069a9f0, ...}, ...)
	/Users/runner/work/opa/opa/topdown/eval.go:1986 +0xd0
github.com/open-policy-agent/opa/topdown.(*eval).biunifyRef(0x1400038c3c0, 0x1058b7750?, 0x1400069a9f0, 0x140003a8f90, 0x140003a8f90, 0x105f7c9e0?)
	/Users/runner/work/opa/opa/topdown/eval.go:1027 +0x344
github.com/open-policy-agent/opa/topdown.(*eval).biunifyValues(0x1400038c3c0, 0x1400069a9f0, 0x1400069a990, 0x140003a8f90, 0x140003a8f90, 0x140003a8ff0)
	/Users/runner/work/opa/opa/topdown/eval.go:954 +0x15c
github.com/open-policy-agent/opa/topdown.(*eval).biunify(0x1400043ba18?, 0x104d48034?, 0x28?, 0x105818bc0?, 0x10583e701?, 0x1057c5440?)
	/Users/runner/work/opa/opa/topdown/eval.go:839 +0x4ac
github.com/open-policy-agent/opa/topdown.(*eval).unify(0x1400043bae8?, 0x1048bc768?, 0x140002f0780?, 0x1058b7650?)
	/Users/runner/work/opa/opa/topdown/eval.go:831 +0x2c
github.com/open-policy-agent/opa/topdown.(*eval).evalStep(0x1400038c3c0, 0x140003b4590)
	/Users/runner/work/opa/opa/topdown/eval.go:351 +0x624
github.com/open-policy-agent/opa/topdown.(*eval).evalExpr(0x1400038c3c0, 0x140003a6bd0)
	/Users/runner/work/opa/opa/topdown/eval.go:332 +0xe8
github.com/open-policy-agent/opa/topdown.(*eval).next(...)
	/Users/runner/work/opa/opa/topdown/eval.go:164
github.com/open-policy-agent/opa/topdown.(*eval).evalExpr.func1(0x1400038c3c0)
	/Users/runner/work/opa/opa/topdown/eval.go:333 +0x34
github.com/open-policy-agent/opa/topdown.(*eval).evalStep.func3()
	/Users/runner/work/opa/opa/topdown/eval.go:375 +0x158
github.com/open-policy-agent/opa/topdown.(*eval).biunifyValues(0x1400038c3c0, 0x1400069a888, 0x1400069bf68, 0x140003a8f90, 0x140003a8f90, 0x140003a8fc0)
	/Users/runner/work/opa/opa/topdown/eval.go:990 +0x4a0
github.com/open-policy-agent/opa/topdown.(*eval).biunify(0x1400043be38?, 0x104d47e5c?, 0x30?, 0x10582d7c0?, 0x1400026ef01?, 0x140000940d0?)
	/Users/runner/work/opa/opa/topdown/eval.go:848 +0x440
github.com/open-policy-agent/opa/topdown.(*eval).unify(0x1400026ef40?, 0xa?, 0x1400043bf20?, 0x2?)
	/Users/runner/work/opa/opa/topdown/eval.go:831 +0x2c
github.com/open-policy-agent/opa/topdown.(*eval).evalStep(0x1400038c3c0, 0x140003b4550)
	/Users/runner/work/opa/opa/topdown/eval.go:367 +0x440
github.com/open-policy-agent/opa/topdown.(*eval).evalExpr(0x1400038c3c0, 0x140003a6bd0)
	/Users/runner/work/opa/opa/topdown/eval.go:332 +0xe8
github.com/open-policy-agent/opa/topdown.(*eval).eval(...)
	/Users/runner/work/opa/opa/topdown/eval.go:294
github.com/open-policy-agent/opa/topdown.evalVirtualComplete.evalValueRule({0x1400038c1e0, {0x140003a44a0, 0x3, 0x4}, {0x1400069be78, 0x3, 0x3}, 0x2, 0x14000206440, 0x140003a8d50, ...}, ...)
	/Users/runner/work/opa/opa/topdown/eval.go:2715 +0x2f8
github.com/open-policy-agent/opa/topdown.evalVirtualComplete.evalValue({0x1400038c1e0, {0x140003a44a0, 0x3, 0x4}, {0x1400069be78, 0x3, 0x3}, 0x2, 0x14000206440, 0x140003a8d50, ...}, ...)
	/Users/runner/work/opa/opa/topdown/eval.go:2681 +0x1a4
github.com/open-policy-agent/opa/topdown.evalVirtualComplete.eval({0x1400038c1e0, {0x140003a44a0, 0x3, 0x4}, {0x1400069be78, 0x3, 0x3}, 0x2, 0x14000206440, 0x140003a8d50, ...}, ...)
	/Users/runner/work/opa/opa/topdown/eval.go:2647 +0x224
github.com/open-policy-agent/opa/topdown.evalVirtual.eval({0x1400038c1e0, {0x140003a44a0, 0x3, 0x4}, {0x1400069be78, 0x3, 0x3}, 0x2, 0x140003a8d50, 0x1400069bbc0, ...}, ...)
	/Users/runner/work/opa/opa/topdown/eval.go:2238 +0x2bc
github.com/open-policy-agent/opa/topdown.evalTree.next({0x1400038c1e0, {0x140003a44a0, 0x3, 0x4}, {0x1400069be78, 0x3, 0x3}, 0x2, 0x140003a8d50, 0x1400069bbc0, ...}, ...)
	/Users/runner/work/opa/opa/topdown/eval.go:2033 +0x264
github.com/open-policy-agent/opa/topdown.evalTree.eval({0x1400038c1e0, {0x140003a44a0, 0x3, 0x4}, {0x1400069be78, 0x3, 0x3}, 0x2, 0x140003a8d50, 0x1400069bbc0, ...}, ...)
	/Users/runner/work/opa/opa/topdown/eval.go:1986 +0xd0
github.com/open-policy-agent/opa/topdown.evalTree.next({0x1400038c1e0, {0x140003a44a0, 0x3, 0x4}, {0x1400069be78, 0x3, 0x3}, 0x1, 0x140003a8d50, 0x1400069bbc0, ...}, ...)
	/Users/runner/work/opa/opa/topdown/eval.go:2039 +0x2b8
github.com/open-policy-agent/opa/topdown.evalTree.eval({0x1400038c1e0, {0x140003a44a0, 0x3, 0x4}, {0x1400069be78, 0x3, 0x3}, 0x1, 0x140003a8d50, 0x1400069bbc0, ...}, ...)
	/Users/runner/work/opa/opa/topdown/eval.go:1986 +0xd0
github.com/open-policy-agent/opa/topdown.(*eval).biunifyRef(0x1400038c1e0, 0x1058b7750?, 0x1400069bbc0, 0x140003a8d50, 0x140003a8d50, 0x0?)
	/Users/runner/work/opa/opa/topdown/eval.go:1027 +0x344
github.com/open-policy-agent/opa/topdown.(*eval).biunifyValues(0x1400038c1e0, 0x1400069bba8, 0x1400069bbc0, 0x140003a8d50, 0x140003a8d50, 0x140003a8e70)
	/Users/runner/work/opa/opa/topdown/eval.go:943 +0xc4
github.com/open-policy-agent/opa/topdown.(*eval).biunify(0x1400043cac8?, 0x104d48034?, 0x28?, 0x105818bc0?, 0x1056d1801?, 0x140002968e8?)
	/Users/runner/work/opa/opa/topdown/eval.go:839 +0x4ac
github.com/open-policy-agent/opa/topdown.(*eval).unify(0x1400043cb98?, 0x1048bc768?, 0x1400063eb28?, 0x0?)
	/Users/runner/work/opa/opa/topdown/eval.go:831 +0x2c
github.com/open-policy-agent/opa/topdown.(*eval).evalStep(0x1400038c1e0, 0x140003b4530)
	/Users/runner/work/opa/opa/topdown/eval.go:351 +0x624
github.com/open-policy-agent/opa/topdown.(*eval).evalExpr(0x1400038c1e0, 0x140003b4520)
	/Users/runner/work/opa/opa/topdown/eval.go:332 +0xe8
github.com/open-policy-agent/opa/topdown.(*eval).eval(0x140000b6aa0?, 0x1052c35cd?)
	/Users/runner/work/opa/opa/topdown/eval.go:294 +0x20
github.com/open-policy-agent/opa/topdown.(*eval).Run(0x1400038c1e0, 0x140003b4510)
	/Users/runner/work/opa/opa/topdown/eval.go:102 +0xb4
github.com/open-policy-agent/opa/topdown.(*Query).Iter(0x1400043cf38, {0x1058b5918?, 0x140001aa008}, 0x140003a46e0)
	/Users/runner/work/opa/opa/topdown/query.go:477 +0x9ec
github.com/open-policy-agent/opa/rego.(*Rego).eval(0x140002f2600, {0x1058b5918?, 0x140001aa008}, 0x140004fcf20)
	/Users/runner/work/opa/opa/rego/rego.go:1940 +0x5ec
github.com/open-policy-agent/opa/rego.PreparedEvalQuery.Eval({{0x140002f2600?, 0x1400038e190?}}, {0x1058b5918, 0x140001aa008}, {0x14000225dc0?, 0x1048c5f20?, 0x1400043d278?})
	/Users/runner/work/opa/opa/rego/rego.go:393 +0x104
github.com/open-policy-agent/opa/cmd.evalOnce({0x1058b5918, 0x140001aa008}, 0x1400038c000)
	/Users/runner/work/opa/opa/cmd/eval.go:403 +0x328
github.com/open-policy-agent/opa/cmd.eval({_, _, _}, {0x1400000d0b0, 0x0, 0x0, {0x140002252b0, 0x1, 0x1}, {0x106048380, ...}, ...}, ...)
	/Users/runner/work/opa/opa/cmd/eval.go:328 +0x318
github.com/open-policy-agent/opa/cmd.init.5.func2(0x14000197680?, {0x140000aecc0?, 0x6?, 0x6?})
	/Users/runner/work/opa/opa/cmd/eval.go:253 +0x6c
github.com/spf13/cobra.(*Command).execute(0x14000197680, {0x140000aec60, 0x6, 0x6})
	/Users/runner/work/opa/opa/vendor/github.com/spf13/cobra/command.go:876 +0x4d0
github.com/spf13/cobra.(*Command).ExecuteC(0x105ff3dc0)
	/Users/runner/work/opa/opa/vendor/github.com/spf13/cobra/command.go:990 +0x360
github.com/spf13/cobra.(*Command).Execute(...)
	/Users/runner/work/opa/opa/vendor/github.com/spf13/cobra/command.go:918
main.main()
	/Users/runner/work/opa/opa/main.go:15 +0x2c

OPA version:

$ opa version
Version: 0.43.0
Build Commit: d75bbdd
Build Timestamp: 2022-07-29T21:15:42Z
Build Hostname: Mac-1659129125033.local
Go Version: go1.18.4
Platform: darwin/arm64
WebAssembly: unavailable

This issue also affects HEAD. I already have a patch for this locally and will open a PR presently.

I would like to give a special thanks to @istalker2 for assisting me with nailing this one down.

charlesdaniels pushed a commit to charlesdaniels/opa that referenced this issue Aug 31, 2022
fixes open-policy-agent#5073

Signed-off-by: Charles Daniels <charles@styra.com>
charlesdaniels pushed a commit to charlesdaniels/opa that referenced this issue Aug 31, 2022
Signed-off-by: Charles Daniels <charles@styra.com>
philipaconrad pushed a commit that referenced this issue Aug 31, 2022
The `object.union_n` builtin could panic from being fed an array with a  wrong-typed element because the error value from a type assertion was being ignored. This could only occur under special circumstances, such as when the malformed array came in through a ref, such as `input`.

This commit fixes the `object.union_n` builtin by no longer ignoring the type assertion's error value. This allows the builtin to fail gracefully, instead of carrying on blithely and hitting a panic.

Fixes #5073

Signed-off-by: Charles Daniels <charles@styra.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant