@@ -36,10 +36,11 @@ def createTestTable(cls):
3636 data_binary varbinary(40),
3737 decimal_no decimal(38,2),
3838 numeric_no numeric(38,8),
39- stamp_time timestamp
39+ stamp_time timestamp,
40+ bin_data varbinary(16)
4041 )""" )
4142 cls .tableCreated = True
42- cls .testTableColCount = 15
43+ cls .testTableColCount = 16
4344 except _mssql .MSSQLDatabaseException as e :
4445 if e .number != 2714 :
4546 raise
@@ -64,16 +65,18 @@ def insertSampleData(self):
6465 comment_text,
6566 comment_nvch,
6667 decimal_no,
67- numeric_no
68+ numeric_no,
69+ bin_data
6870 ) VALUES (
6971 %d, %d, %d, getdate(), %d,
7072 'comment %d',
7173 'detail %d',
7274 'hmm',
7375 'bhmme',
7476 234.99,
75- 894123.09
76- );""" % (y , y , y , (y % 2 ), y , y )
77+ 894123.09,
78+ %#x
79+ );""" % (y , y , y , (y % 2 ), y , y , y )
7780 self .mssql .execute_non_query (query )
7881
7982 def test01SimpleSelect (self ):
@@ -112,3 +115,8 @@ def test19MultipleResults(self):
112115
113116 rows = tuple (self .mssql )
114117 self .assertEquals (rows [0 ][0 ], 'ret3' )
118+
119+ def test04BinaryTypeSqlInjection (self ):
120+ self .mssql .execute_query ('SELECT * FROM pymssql WHERE bin_data=%s' , ('0x OR 1=1;' ,))
121+ rows = tuple (self .mssql )
122+ self .assertEqual (len (rows ), 0 )
0 commit comments