Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sexp error raised during scanning #1499

Closed
jhulford opened this issue Aug 6, 2020 · 2 comments · Fixed by #1503
Closed

Sexp error raised during scanning #1499

jhulford opened this issue Aug 6, 2020 · 2 comments · Fixed by #1503

Comments

@jhulford
Copy link

jhulford commented Aug 6, 2020

Background

Brakeman version: 4.9.0
Rails version: 4.2.11.3
Ruby version: 2.5.1

Issue

When I run a scan of my project code, I'm receiving an error raised by a sexp_parser call (stacktrace below). Prior to updating brakeman today to 4.9, I was running 4.5. It appears that 4.6 is where the issue starting appearing.

Other Error

Run Brakeman with --debug to see the full stack trace.

Stack trace:

/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/bundle/ruby/2.7.0/gems/sexp_processor-4.15.0/lib/sexp.rb:222:in `line'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/lib/call_conversion_helper.rb:13:in `join_arrays'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/alias_processor.rb:209:in `process_call'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:76:in `block in process'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:113:in `in_context'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:72:in `process'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/alias_processor.rb:62:in `block in process_default'
(eval):3:in `map!'
(eval):3:in `map!'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/alias_processor.rb:60:in `process_default'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:78:in `block in process'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:113:in `in_context'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:72:in `process'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/alias_processor.rb:62:in `block in process_default'
(eval):3:in `map!'
(eval):3:in `map!'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/alias_processor.rb:60:in `process_default'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/alias_processor.rb:177:in `process_call'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:76:in `block in process'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:113:in `in_context'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:72:in `process'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/lib/processor_helper.rb:13:in `block in process_all!'
(eval):3:in `map!'
(eval):3:in `map!'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/lib/processor_helper.rb:11:in `process_all!'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/alias_processor.rb:419:in `block in process_defn'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/alias_processor.rb:429:in `block in meth_env'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/bundle/ruby/2.7.0/gems/sexp_processor-4.15.0/lib/sexp_processor.rb:452:in `scope'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/alias_processor.rb:426:in `meth_env'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/alias_processor.rb:418:in `process_defn'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:76:in `block in process'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:113:in `in_context'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:72:in `process'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/alias_processor.rb:50:in `process_safely'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/library_processor.rb:37:in `process_defn'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:76:in `block in process'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:113:in `in_context'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:72:in `process'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/lib/processor_helper.rb:13:in `block in process_all!'
(eval):3:in `map!'
(eval):3:in `map!'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/lib/processor_helper.rb:11:in `process_all!'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/lib/module_helper.rb:54:in `handle_class'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/library_processor.rb:25:in `process_class'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:76:in `block in process'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:113:in `in_context'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:72:in `process'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/lib/processor_helper.rb:13:in `block in process_all!'
(eval):3:in `map!'
(eval):3:in `map!'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/lib/processor_helper.rb:11:in `process_all!'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/lib/module_helper.rb:22:in `handle_module'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/library_processor.rb:29:in `process_module'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:76:in `block in process'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:113:in `in_context'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:72:in `process'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/lib/processor_helper.rb:13:in `block in process_all!'
(eval):3:in `map!'
(eval):3:in `map!'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/lib/processor_helper.rb:11:in `process_all!'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/lib/module_helper.rb:22:in `handle_module'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/library_processor.rb:29:in `process_module'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:76:in `block in process'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:113:in `in_context'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:72:in `process'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/base_processor.rb:111:in `block in process_block'
(eval):3:in `map!'
(eval):3:in `map!'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/base_processor.rb:110:in `process_block'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:76:in `block in process'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:113:in `in_context'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/ruby_parser/bm_sexp_processor.rb:72:in `process'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processors/library_processor.rb:21:in `process_library'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/processor.rb:98:in `process_lib'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/scanner.rb:217:in `process_lib'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/scanner.rb:211:in `block in process_libs'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/scanner.rb:314:in `block in track_progress'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/scanner.rb:311:in `each'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/scanner.rb:311:in `track_progress'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/scanner.rb:209:in `process_libs'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/scanner.rb:49:in `process'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman.rb:369:in `scan'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman.rb:84:in `run'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/commandline.rb:157:in `run_brakeman'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/commandline.rb:125:in `regular_report'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/commandline.rb:166:in `run_report'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/commandline.rb:35:in `run'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/lib/brakeman/commandline.rb:20:in `start'
/home/me/.rvm/gems/ruby-2.5.1@chain/gems/brakeman-4.9.0/bin/brakeman:10:in `'
/home/me/.rvm/gems/ruby-2.5.1@chain/bin/brakeman:23:in `load'
/home/me/.rvm/gems/ruby-2.5.1@chain/bin/brakeman:23:in `
'
/home/me/.rvm/gems/ruby-2.5.1@chain/bin/ruby_executable_hooks:24:in `eval'
/home/me/.rvm/gems/ruby-2.5.1@chain/bin/ruby_executable_hooks:24:in `
@presidentbeef
Copy link
Owner

Hi @jhulford - are you able to share the error message? Also, if you could narrow this down to a small bit of code to reproduce, that would be helpful.

@jhulford
Copy link
Author

@presidentbeef Sorry about that...the error message from the trace was "setting s(:array).line nil".

Unfortunately, the scan is running over a project that's probably over 100K LOC. I'm not entirely sure how to narrow it down to which code it was scanning when it raised that error.

If you have a suggestion how I can do that, I'll definitely try to get you better info.

presidentbeef added a commit that referenced this issue Aug 17, 2020
Repository owner locked and limited conversation to collaborators Jan 27, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants