Template.ParseLiquid throws ArgumentOutOfRangeException
Metalnem opened this issue · 1 comments
Metalnem commented
Template.ParseLiquid can sometimes throw ArgumentOutOfRangeException instead of storing error details in the resulting template. Here's the full program that reproduces this:
namespace Scriban.Run
{
public class Program
{
public static void Main(string[] args)
{
Template.ParseLiquid(@"{%""\u""");
}
}
}
And here's the full stack trace:
Exception has occurred: CLR/System.ArgumentOutOfRangeException
An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in Scriban.dll: 'The character '"' is not an hexa [0a-fA-F] character'
at Scriban.Parsing.Util.HexToInt(Char c)
at Scriban.Parsing.Parser.ParseString()
at Scriban.Parsing.Parser.ParseExpression(ScriptNode parentNode, Boolean& hasAnonymousFunction, ScriptExpression parentExpression, Int32 precedence, ParseExpressionMode mode)
at Scriban.Parsing.Parser.ExpectAndParseExpressionAndAnonymous(ScriptNode parentNode, Boolean& hasAnonymousFunction, ParseExpressionMode mode)
at Scriban.Parsing.Parser.ParseExpressionStatement()
at Scriban.Parsing.Parser.TryParseStatement(ScriptStatement parent, ScriptStatement& statement, Boolean& hasEnd)
at Scriban.Parsing.Parser.ParseBlockStatement(ScriptStatement parentStatement)
at Scriban.Parsing.Parser.Run()
at Scriban.Template.ParseInternal(String text, String sourceFilePath)
at Scriban.Template.ParseLiquid(String text, String sourceFilePath, Nullable`1 parserOptions, Nullable`1 lexerOptions)
I'm using .NET Core 2.2 and the latest NuGet alpha version of Scriban (2.0.0-alpha-005).
Found via SharpFuzz.
xoofx commented
Fixed in 2.0.0+