Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
社会瑞弟呀
brakeman
提交
b0daabcd
B
brakeman
项目概览
社会瑞弟呀
/
brakeman
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
brakeman
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b0daabcd
编写于
5月 14, 2013
作者:
J
Justin
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #335 from presidentbeef/use_exceptions_instead_of_abort
Use exceptions instead of abort in brakeman.rb
上级
d7f00569
0faded5b
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
63 addition
and
36 deletion
+63
-36
CHANGES
CHANGES
+2
-0
bin/brakeman
bin/brakeman
+16
-15
lib/brakeman.rb
lib/brakeman.rb
+21
-10
lib/brakeman/scanner.rb
lib/brakeman/scanner.rb
+3
-1
test/tests/test_brakeman.rb
test/tests/test_brakeman.rb
+8
-0
test/tests/test_rake_task.rb
test/tests/test_rake_task.rb
+13
-10
未找到文件。
CHANGES
浏览文件 @
b0daabcd
* Use exceptions instead of abort in brakeman lib
# 1.9.5
* Add check for unsafe symbol creation
...
...
bin/brakeman
浏览文件 @
b0daabcd
...
...
@@ -56,22 +56,23 @@ if options[:quiet].nil?
options
[
:quiet
]
=
:command_line
end
if
options
[
:previous_results_json
]
vulns
=
Brakeman
.
compare
options
.
merge
(
:quiet
=>
options
[
:quiet
])
puts
MultiJson
.
dump
(
vulns
,
:pretty
=>
true
)
begin
if
options
[
:previous_results_json
]
vulns
=
Brakeman
.
compare
options
.
merge
(
:quiet
=>
options
[
:quiet
])
puts
MultiJson
.
dump
(
vulns
,
:pretty
=>
true
)
if
options
[
:exit_on_warn
]
and
(
vulns
[
:new
].
count
+
vulns
[
:fixed
].
count
>
0
)
exit
Brakeman
::
Warnings_Found_Exit_Code
end
else
#Run scan and output a report
tracker
=
Brakeman
.
run
options
.
merge
(
:print_report
=>
true
,
:quiet
=>
options
[
:quiet
])
if
options
[
:exit_on_warn
]
and
(
vulns
[
:new
].
count
+
vulns
[
:fixed
].
count
>
0
)
exit
Brakeman
::
Warnings_Found_Exit_Code
end
else
#Run scan and output a report
tracker
=
Brakeman
.
run
options
.
merge
(
:print_report
=>
true
,
:quiet
=>
options
[
:quiet
])
#Return error code if --exit-on-warn is used and warnings were found
if
options
[
:exit_on_warn
]
and
not
tracker
.
checks
.
all_warnings
.
empty?
exit
Brakeman
::
Warnings_Found_Exit_Code
#Return error code if --exit-on-warn is used and warnings were found
if
options
[
:exit_on_warn
]
and
not
tracker
.
checks
.
all_warnings
.
empty?
exit
Brakeman
::
Warnings_Found_Exit_Code
end
end
rescue
Brakeman
::
Scanner
::
NoApplication
=>
e
$stderr
.
puts
e
.
message
end
lib/brakeman.rb
浏览文件 @
b0daabcd
...
...
@@ -195,11 +195,19 @@ module Brakeman
#Installs Rake task for running Brakeman,
#which basically means copying `lib/brakeman/brakeman.rake` to
#`lib/tasks/brakeman.rake` in the current Rails application.
def
self
.
install_rake_task
if
not
File
.
exists?
"Rakefile"
abort
"No Rakefile detected"
elsif
File
.
exists?
"lib/tasks/brakeman.rake"
abort
"Task already exists"
def
self
.
install_rake_task
install_path
=
nil
if
install_path
rake_path
=
File
.
join
(
install_path
,
"Rakefile"
)
task_path
=
File
.
join
(
install_path
,
"lib"
,
"tasks"
,
"brakeman.rake"
)
else
rake_path
=
"Rakefile"
task_path
=
File
.
join
(
"lib"
,
"tasks"
,
"brakeman.rake"
)
end
if
not
File
.
exists?
rake_path
raise
RakeInstallError
,
"No Rakefile detected"
elsif
File
.
exists?
task_path
raise
RakeInstallError
,
"Task already exists"
end
require
'fileutils'
...
...
@@ -211,13 +219,13 @@ module Brakeman
path
=
File
.
expand_path
(
File
.
dirname
(
__FILE__
))
FileUtils
.
cp
"
#{
path
}
/brakeman/brakeman.rake"
,
"lib/tasks/brakeman.rake"
FileUtils
.
cp
"
#{
path
}
/brakeman/brakeman.rake"
,
task_path
if
File
.
exists?
"lib/tasks/brakeman.rake"
notify
"Task created in
lib/tasks/brakeman.rake
"
if
File
.
exists?
task_path
notify
"Task created in
#{
task_path
}
"
notify
"Usage: rake brakeman:run[output_file]"
else
notify
"Could not create task"
raise
RakeInstallError
,
"Could not create task"
end
end
...
...
@@ -256,7 +264,7 @@ module Brakeman
begin
require
'brakeman/scanner'
rescue
LoadError
abort
"Cannot find lib/ directory."
raise
NoBrakemanError
,
"Cannot find lib/ directory."
end
#Start scanning
...
...
@@ -351,4 +359,7 @@ module Brakeman
Brakeman
::
Differ
.
new
(
new_results
,
previous_results
).
diff
end
class
RakeInstallError
<
RuntimeError
;
end
class
NoBrakemanError
<
RuntimeError
;
end
end
lib/brakeman/scanner.rb
浏览文件 @
b0daabcd
...
...
@@ -33,7 +33,7 @@ class Brakeman::Scanner
@app_tree
=
Brakeman
::
AppTree
.
from_options
(
options
)
if
!
@app_tree
.
root
||
!
@app_tree
.
exists?
(
"app"
)
abort
(
"Please supply the path to a Rails application."
)
raise
NoApplication
,
"Please supply the path to a Rails application."
end
if
@app_tree
.
exists?
(
"script/rails"
)
...
...
@@ -355,4 +355,6 @@ class Brakeman::Scanner
def
parse_ruby
input
@ruby_parser
.
new
.
parse
input
end
class
NoApplication
<
RuntimeError
;
end
end
test/tests/test_brakeman.rb
浏览文件 @
b0daabcd
require
'tempfile'
class
BrakemanTests
<
Test
::
Unit
::
TestCase
def
test_exception_on_no_application
assert_raise
Brakeman
::
Scanner
::
NoApplication
do
Brakeman
.
run
"/tmp
#{
rand
}
"
#better not exist
end
end
end
class
UtilTests
<
Test
::
Unit
::
TestCase
def
setup
@ruby_parser
=
RubyParser
...
...
test/tests/test_rake_task.rb
浏览文件 @
b0daabcd
...
...
@@ -14,17 +14,20 @@ class RakeTaskTests < Test::Unit::TestCase
def
in_temp_app
Dir
.
mktmpdir
do
|
dir
|
FileUtils
.
cp_r
"
#{
TEST_PATH
}
/apps/rails3.2/."
,
dir
begin
FileUtils
.
cp_r
"
#{
TEST_PATH
}
/apps/rails3.2/."
,
dir
@rake_task
=
"
#{
dir
}
/lib/tasks/brakeman.rake"
@rakefile
=
"
#{
dir
}
/Rakefile"
@rake_task
=
"
#{
dir
}
/lib/tasks/brakeman.rake"
@rakefile
=
"
#{
dir
}
/Rakefile"
current_dir
=
FileUtils
.
pwd
FileUtils
.
cd
dir
current_dir
=
FileUtils
.
pwd
FileUtils
.
cd
dir
yield
dir
yield
dir
FileUtils
.
cd
current_dir
ensure
FileUtils
.
cd
current_dir
end
end
end
...
...
@@ -40,11 +43,11 @@ class RakeTaskTests < Test::Unit::TestCase
def
test_rake_task_exists
in_temp_app
do
assert_nothing_raised
SystemExit
do
assert_nothing_raised
Brakeman
::
RakeInstallError
do
Brakeman
.
install_rake_task
end
assert_raise
SystemExit
do
assert_raise
Brakeman
::
RakeInstallError
do
Brakeman
.
install_rake_task
end
end
...
...
@@ -54,7 +57,7 @@ class RakeTaskTests < Test::Unit::TestCase
in_temp_app
do
File
.
delete
@rakefile
assert_raise
SystemExit
do
assert_raise
Brakeman
::
RakeInstallError
do
Brakeman
.
install_rake_task
end
end
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录