nccgroup/sobelow

error handler block in parse.ex throws on syntax error

Open

#105 opened on 2022年2月8日

GitHub で見る
 (7 comments) (0 reactions) (0 assignees)Elixir (119 forks)batch import
backlogbuggood first issue

Repository metrics

Stars
 (1,780 stars)
PR merge metrics
 (30d に merged PR はありません)

説明

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.

コントリビューターガイド