nccgroup/sobelow
View on GitHuberror handler block in parse.ex throws on syntax error
Open
#105 opened on Feb 8, 2022
backlogbuggood first issue
Description
The following error handling block in lib/sobelow/parse.ex is incorrectly destructuring the line parameter:
https://github.com/nccgroup/sobelow/blob/master/lib/sobelow/parse.ex#L45_L51
When scanning my code which contained a syntax error, the line variable was a list instead of a number, looking like this:
[line: 123, column: 456]
This in turn causes the IO.puts line to throw as it can't convert a list to a string.
I fixed this locally by changing the error handling block to the following:
{:error, {line, err, _}} ->
if Application.get_env(:sobelow, :strict) do
if is_list(line) do
IO.puts(:stderr, "#{filepath}:#{line[:line]}:#{line[:column]}}: #{err}")
else
IO.puts(:stderr, "#{filepath}:#{line}: #{err}")
end
System.halt(2)
else
{}
end
Happy to submit a PR with any feedback you may have.