nccgroup/sobelow

error handler block in parse.ex throws on syntax error

開放

#105 建立於 2022年2月8日

 (7 則留言) (0 個反應) (0 位負責人)Elixir (119 個分叉)batch import
backlogbuggood first issue

倉庫指標

星標
 (1,780 顆星)
PR 合併指標
 (30 天內沒有已合併 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.

貢獻者指南