From 95381b7b0b95cbd9c7223e5a58d17aef22e15d97 Mon Sep 17 00:00:00 2001 From: Chris Capurso <1036769+ccapurso@users.noreply.github.com> Date: Tue, 15 Mar 2022 15:55:44 +0000 Subject: [PATCH 1/2] backport of commit 156bfc1c736598baf00e23b6ee5ca5679b50a84e --- helper/random/parser.go | 5 +++++ helper/random/parser_test.go | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/helper/random/parser.go b/helper/random/parser.go index 572767263e3b0..3184db8aa5c62 100644 --- a/helper/random/parser.go +++ b/helper/random/parser.go @@ -126,6 +126,11 @@ func getRuleInfo(rule map[string]interface{}) (data ruleInfo, err error) { if err != nil { return data, fmt.Errorf("unable to get rule data: %w", err) } + + if len(slice) == 0 { + return data, fmt.Errorf("rule info cannot be empty") + } + data = ruleInfo{ ruleType: key, data: slice[0], diff --git a/helper/random/parser_test.go b/helper/random/parser_test.go index 2ce1fde521e40..59cdb81430438 100644 --- a/helper/random/parser_test.go +++ b/helper/random/parser_test.go @@ -297,6 +297,15 @@ func TestParser_ParsePolicy(t *testing.T) { expected: StringGenerator{}, expectErr: true, }, + "config value with empty slice": { + registry: defaultRuleNameMapping, + rawConfig: ` + rule { + n = [] + }`, + expected: StringGenerator{}, + expectErr: true, + }, } for name, test := range tests { From 0ef88ad2c294921cb6559b381e9617fc8746105d Mon Sep 17 00:00:00 2001 From: Chris Capurso <1036769+ccapurso@users.noreply.github.com> Date: Tue, 15 Mar 2022 16:06:58 +0000 Subject: [PATCH 2/2] backport of commit 38f51cc51b6616995c4be8d0925def3a02a47749 --- changelog/14501.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 changelog/14501.txt diff --git a/changelog/14501.txt b/changelog/14501.txt new file mode 100644 index 0000000000000..5ed687e28ad70 --- /dev/null +++ b/changelog/14501.txt @@ -0,0 +1,3 @@ +```release-note:bug +core: Fix panic caused by parsing policies with empty slice values. +```