From 8c854759a4326d3ee9dd5f492b59cf97cc927fb1 Mon Sep 17 00:00:00 2001 From: Tim Gross Date: Wed, 1 Feb 2023 16:09:41 -0500 Subject: [PATCH] job parsing: fix panic when variable validation is missing condition --- .changelog/16018.txt | 3 +++ jobspec2/types.variables.go | 11 +++++++++++ 2 files changed, 14 insertions(+) create mode 100644 .changelog/16018.txt diff --git a/.changelog/16018.txt b/.changelog/16018.txt new file mode 100644 index 00000000000..2f3355538a9 --- /dev/null +++ b/.changelog/16018.txt @@ -0,0 +1,3 @@ +```release-note:bug +parser: Fixed a panic in the job spec parser when a variable validation block was missing its condition +``` diff --git a/jobspec2/types.variables.go b/jobspec2/types.variables.go index 8e32ded2083..26af20eb63a 100644 --- a/jobspec2/types.variables.go +++ b/jobspec2/types.variables.go @@ -95,6 +95,17 @@ func (v *Variable) validateValue(val VariableAssignment) (diags hcl.Diagnostics) for _, validation := range v.Validations { const errInvalidCondition = "Invalid variable validation result" + if validation.Condition == nil { + diags = append(diags, &hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Invalid variable validation specification", + Detail: "validation requires a condition.", + Subject: validation.DeclRange.Ptr(), + EvalContext: hclCtx, + }) + continue + } + result, moreDiags := validation.Condition.Value(hclCtx) diags = append(diags, moreDiags...) if !result.IsKnown() {