Skip to content

Commit 06e98aa

Browse files
committed
Coerce a few base AdapterTest tests that deal with sanitizing limit offset since we take a hard nose Argument error vs coercing integers from possilbe sql injection. This resolves 2 errors.
1 parent 30172c9 commit 06e98aa

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

test/cases/adapter_test_sqlserver.rb

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,3 +349,29 @@ def order_to_min_set(order)
349349

350350
end
351351

352+
353+
class AdapterTest < ActiveRecord::TestCase
354+
355+
COERCED_TESTS = [
356+
:test_add_limit_offset_should_sanitize_sql_injection_for_limit_without_comas,
357+
:test_add_limit_offset_should_sanitize_sql_injection_for_limit_with_comas
358+
]
359+
360+
include SqlserverCoercedTest
361+
362+
def test_coerced_test_add_limit_offset_should_sanitize_sql_injection_for_limit_without_comas
363+
sql_inject = "1 select * from schema"
364+
connection = ActiveRecord::Base.connection
365+
assert_raise(ArgumentError) { connection.add_limit_offset!("", :limit=>sql_inject) }
366+
assert_raise(ArgumentError) { connection.add_limit_offset!("", :limit=>sql_inject, :offset=>7) }
367+
end
368+
369+
def test_coerced_test_add_limit_offset_should_sanitize_sql_injection_for_limit_with_comas
370+
sql_inject = "1, 7 procedure help()"
371+
connection = ActiveRecord::Base.connection
372+
assert_raise(ArgumentError) { connection.add_limit_offset!("", :limit=>sql_inject) }
373+
assert_raise(ArgumentError) { connection.add_limit_offset!("", :limit=> '1 ; DROP TABLE USERS', :offset=>7) }
374+
assert_raise(ArgumentError) { connection.add_limit_offset!("", :limit=>sql_inject, :offset=>7) }
375+
end
376+
377+
end

0 commit comments

Comments
 (0)