1- // semmle-extractor-options: /r:System.Data.dll /r:System.ComponentModel.Primitives.dll ${testdir} /../../../ resources/stubs/NHibernate.cs ${testdir}/../../../resources/stubs/System.Data.cs /r:System.ComponentModel.TypeConverter.dll /r:System.Data.Common.dll
1+ // semmle-extractor-options: /nostdlib /noconfig --load-sources-from-project:.. /../../resources/stubs/NHibernate/5.3.8/NHibernate.csproj
22
33
44using NHibernate ;
55using NHibernate . SqlCommand ;
66
77namespace NHibernateTest
88{
9- class Test
10- {
11- ISession session ;
12-
13- void SqlExprs ( )
14- {
15- var sql = "sql" ;
16- new SqlString ( sql ) ; // SQL expression
17- session . Delete ( sql ) ; // SQL expression
18- }
19-
20- class Person
21- {
22- public int Id { get ; set ; }
23- public string Name { get ; set ; }
24- public string Address { get ; set ; }
25- }
26-
27- class Person2
28- {
29- public int Id { get ; set ; }
30- public int Age { get ; set ; }
31- public string Address { get ; set ; }
32- }
33-
34- void FlowSources ( )
35- {
36- session . Query < Person > ( ) ;
37- session . Save ( new Person2 ( ) ) ;
38- }
39-
40- void DataFlow ( )
41- {
42- var p = new Person ( ) ;
43- var p2 = new Person2 ( ) ;
44-
45- string taint = "tainted" ;
46- p . Name = taint ;
47- p2 . Address = taint ;
48-
49- Sink ( p . Id ) ; // Not tainted
50- Sink ( p . Name ) ; // Tainted
51- Sink ( p . Address ) ; // Not tainted
52-
53- Sink ( p2 . Id ) ; // Not tainted
54- Sink ( p2 . Age ) ; // Not tainted
55- Sink ( p2 . Address ) ; // Tainted
56- }
57-
58- void Sink ( object sink )
9+ class Test
5910 {
11+ ISession session ;
12+
13+ void SqlExprs ( )
14+ {
15+ var sql = "sql" ;
16+ new SqlString ( sql ) ; // SQL expression
17+ session . Delete ( sql ) ; // SQL expression
18+ }
19+
20+ class Person
21+ {
22+ public int Id { get ; set ; }
23+ public string Name { get ; set ; }
24+ public string Address { get ; set ; }
25+ }
26+
27+ class Person2
28+ {
29+ public int Id { get ; set ; }
30+ public int Age { get ; set ; }
31+ public string Address { get ; set ; }
32+ }
33+
34+ void FlowSources ( )
35+ {
36+ session . Query < Person > ( ) ;
37+ session . Save ( new Person2 ( ) ) ;
38+ }
39+
40+ void DataFlow ( )
41+ {
42+ var p = new Person ( ) ;
43+ var p2 = new Person2 ( ) ;
44+
45+ string taint = "tainted" ;
46+ p . Name = taint ;
47+ p2 . Address = taint ;
48+
49+ Sink ( p . Id ) ; // Not tainted
50+ Sink ( p . Name ) ; // Tainted
51+ Sink ( p . Address ) ; // Not tainted
52+
53+ Sink ( p2 . Id ) ; // Not tainted
54+ Sink ( p2 . Age ) ; // Not tainted
55+ Sink ( p2 . Address ) ; // Tainted
56+ }
57+
58+ void Sink ( object sink )
59+ {
60+ }
6061 }
61- }
6262}
0 commit comments