Fixed multiply string by negative number panic #2211

This commit is contained in:
Mike Farah 2024-12-07 16:28:59 +11:00
parent 5273715428
commit 2201381235
2 changed files with 9 additions and 0 deletions

View File

@ -153,6 +153,8 @@ func repeatString(lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error
count, err := parseInt(intNode.Value)
if err != nil {
return nil, err
} else if count < 0 {
return nil, fmt.Errorf("Cannot repeat string by a negative number (%v)", count)
}
target.Value = strings.Repeat(stringNode.Value, count)

View File

@ -201,6 +201,13 @@ var multiplyOperatorScenarios = []expressionScenario{
fmt.Sprintf("D0, P[], (!!str)::%s\n", strings.Repeat("banana", 4)),
},
},
{
description: "Multiply string X by negative int",
skipDoc: true,
document: `n: -4`,
expression: `"banana" * .n`,
expectedError: "Cannot repeat string by a negative number (-4)",
},
{
description: "Multiply int node X string",
document: `n: 4