@@ -16,6 +16,7 @@ private import semmle.python.frameworks.internal.PoorMansFunctionResolution
16
16
private import semmle.python.frameworks.internal.SelfRefMixin
17
17
private import semmle.python.frameworks.internal.InstanceTaintStepsHelper
18
18
private import semmle.python.security.dataflow.UrlRedirectCustomizations
19
+ private import semmle.python.frameworks.data.ModelsAsData
19
20
20
21
/**
21
22
* INTERNAL: Do not use.
@@ -85,6 +86,10 @@ module Django {
85
86
}
86
87
}
87
88
89
+ private class MaDSubclass extends ModeledSubclass {
90
+ MaDSubclass ( ) { this = ModelOutput:: getATypeNode ( "Django.Views.View~Subclass" ) }
91
+ }
92
+
88
93
/** Gets a reference to the `django.views.generic.View` class or any subclass. */
89
94
API:: Node subclassRef ( ) { result = any ( ModeledSubclass subclass ) .getASubclass * ( ) }
90
95
}
@@ -185,6 +190,10 @@ module Django {
185
190
}
186
191
}
187
192
193
+ private class MaDSubclass extends ModeledSubclass {
194
+ MaDSubclass ( ) { this = ModelOutput:: getATypeNode ( "django.forms.BaseForm~Subclass" ) }
195
+ }
196
+
188
197
/** Gets a reference to the `django.forms.forms.BaseForm` class or any subclass. */
189
198
API:: Node subclassRef ( ) { result = any ( ModeledSubclass subclass ) .getASubclass * ( ) }
190
199
}
@@ -290,6 +299,10 @@ module Django {
290
299
}
291
300
}
292
301
302
+ private class MaDSubclass extends ModeledSubclass {
303
+ MaDSubclass ( ) { this = ModelOutput:: getATypeNode ( "Django.Forms.Field~Subclass" ) }
304
+ }
305
+
293
306
/** Gets a reference to the `django.forms.fields.Field` class or any subclass. */
294
307
API:: Node subclassRef ( ) { result = any ( ModeledSubclass subclass ) .getASubclass * ( ) }
295
308
}
@@ -596,6 +609,8 @@ module PrivateDjango {
596
609
.getMember ( "models" )
597
610
.getMember ( "PolymorphicModel" )
598
611
.getASubclass * ( )
612
+ or
613
+ result = ModelOutput:: getATypeNode ( "Django.db.models.Model~Subclass" ) .getASubclass * ( )
599
614
}
600
615
601
616
/**
@@ -766,6 +781,9 @@ module PrivateDjango {
766
781
.getMember ( className )
767
782
.getASubclass * ( )
768
783
)
784
+ or
785
+ result =
786
+ ModelOutput:: getATypeNode ( "django.db.models.FileField~Subclass" ) .getASubclass * ( )
769
787
}
770
788
}
771
789
@@ -823,6 +841,10 @@ module PrivateDjango {
823
841
or
824
842
// Commonly used alias
825
843
result = models ( ) .getMember ( "RawSQL" )
844
+ or
845
+ result =
846
+ ModelOutput:: getATypeNode ( "django.db.models.expressions.RawSQL~Subclass" )
847
+ .getASubclass * ( )
826
848
}
827
849
828
850
/**
@@ -1157,6 +1179,9 @@ module PrivateDjango {
1157
1179
or
1158
1180
// handle django.http.HttpRequest alias
1159
1181
result = http ( ) .getMember ( "HttpRequest" )
1182
+ or
1183
+ result =
1184
+ ModelOutput:: getATypeNode ( "django.http.request.HttpRequest~Subclass" ) .getASubclass * ( )
1160
1185
}
1161
1186
1162
1187
/**
@@ -1322,7 +1347,13 @@ module PrivateDjango {
1322
1347
}
1323
1348
1324
1349
/** Gets a reference to the `django.http.response.HttpResponse` class or any subclass. */
1325
- API:: Node classRef ( ) { result = baseClassRef ( ) .getASubclass * ( ) }
1350
+ API:: Node classRef ( ) {
1351
+ result = baseClassRef ( ) .getASubclass * ( )
1352
+ or
1353
+ result =
1354
+ ModelOutput:: getATypeNode ( "django.http.response.HttpResponse~Subclass" )
1355
+ .getASubclass * ( )
1356
+ }
1326
1357
1327
1358
/**
1328
1359
* A source of instances of `django.http.response.HttpResponse`, extend this class to model new instances.
@@ -1383,7 +1414,12 @@ module PrivateDjango {
1383
1414
}
1384
1415
1385
1416
/** Gets a reference to a subclass of the `django.http.response.HttpResponseRedirect` class. */
1386
- API:: Node classRef ( ) { result = baseClassRef ( ) .getASubclass * ( ) }
1417
+ API:: Node classRef ( ) {
1418
+ result = baseClassRef ( ) .getASubclass * ( ) or
1419
+ result =
1420
+ ModelOutput:: getATypeNode ( "django.http.response.HttpResponseRedirect~Subclass" )
1421
+ .getASubclass * ( )
1422
+ }
1387
1423
1388
1424
/**
1389
1425
* A source of instances of `django.http.response.HttpResponseRedirect`, extend this class to model new instances.
@@ -1446,7 +1482,12 @@ module PrivateDjango {
1446
1482
}
1447
1483
1448
1484
/** Gets a reference to the `django.http.response.HttpResponsePermanentRedirect` class. */
1449
- API:: Node classRef ( ) { result = baseClassRef ( ) .getASubclass * ( ) }
1485
+ API:: Node classRef ( ) {
1486
+ result = baseClassRef ( ) .getASubclass * ( ) or
1487
+ result =
1488
+ ModelOutput:: getATypeNode ( "django.http.response.HttpResponsePermanentRedirect~Subclass" )
1489
+ .getASubclass * ( )
1490
+ }
1450
1491
1451
1492
/**
1452
1493
* A source of instances of `django.http.response.HttpResponsePermanentRedirect`, extend this class to model new instances.
@@ -1510,7 +1551,12 @@ module PrivateDjango {
1510
1551
}
1511
1552
1512
1553
/** Gets a reference to the `django.http.response.HttpResponseNotModified` class. */
1513
- API:: Node classRef ( ) { result = baseClassRef ( ) .getASubclass * ( ) }
1554
+ API:: Node classRef ( ) {
1555
+ result = baseClassRef ( ) .getASubclass * ( ) or
1556
+ result =
1557
+ ModelOutput:: getATypeNode ( "django.http.response.HttpResponseNotModified~Subclass" )
1558
+ .getASubclass * ( )
1559
+ }
1514
1560
1515
1561
/**
1516
1562
* A source of instances of `django.http.response.HttpResponseNotModified`, extend this class to model new instances.
@@ -1562,7 +1608,12 @@ module PrivateDjango {
1562
1608
}
1563
1609
1564
1610
/** Gets a reference to the `django.http.response.HttpResponseBadRequest` class. */
1565
- API:: Node classRef ( ) { result = baseClassRef ( ) .getASubclass * ( ) }
1611
+ API:: Node classRef ( ) {
1612
+ result = baseClassRef ( ) .getASubclass * ( ) or
1613
+ result =
1614
+ ModelOutput:: getATypeNode ( "django.http.response.HttpResponseBadRequest~Subclass" )
1615
+ .getASubclass * ( )
1616
+ }
1566
1617
1567
1618
/**
1568
1619
* A source of instances of `django.http.response.HttpResponseBadRequest`, extend this class to model new instances.
@@ -1616,7 +1667,12 @@ module PrivateDjango {
1616
1667
}
1617
1668
1618
1669
/** Gets a reference to the `django.http.response.HttpResponseNotFound` class. */
1619
- API:: Node classRef ( ) { result = baseClassRef ( ) .getASubclass * ( ) }
1670
+ API:: Node classRef ( ) {
1671
+ result = baseClassRef ( ) .getASubclass * ( ) or
1672
+ result =
1673
+ ModelOutput:: getATypeNode ( "django.http.response.HttpResponseNotFound~Subclass" )
1674
+ .getASubclass * ( )
1675
+ }
1620
1676
1621
1677
/**
1622
1678
* A source of instances of `django.http.response.HttpResponseNotFound`, extend this class to model new instances.
@@ -1670,7 +1726,12 @@ module PrivateDjango {
1670
1726
}
1671
1727
1672
1728
/** Gets a reference to the `django.http.response.HttpResponseForbidden` class. */
1673
- API:: Node classRef ( ) { result = baseClassRef ( ) .getASubclass * ( ) }
1729
+ API:: Node classRef ( ) {
1730
+ result = baseClassRef ( ) .getASubclass * ( ) or
1731
+ result =
1732
+ ModelOutput:: getATypeNode ( "django.http.response.HttpResponseForbidden~Subclass" )
1733
+ .getASubclass * ( )
1734
+ }
1674
1735
1675
1736
/**
1676
1737
* A source of instances of `django.http.response.HttpResponseForbidden`, extend this class to model new instances.
@@ -1724,7 +1785,12 @@ module PrivateDjango {
1724
1785
}
1725
1786
1726
1787
/** Gets a reference to the `django.http.response.HttpResponseNotAllowed` class. */
1727
- API:: Node classRef ( ) { result = baseClassRef ( ) .getASubclass * ( ) }
1788
+ API:: Node classRef ( ) {
1789
+ result = baseClassRef ( ) .getASubclass * ( ) or
1790
+ result =
1791
+ ModelOutput:: getATypeNode ( "django.http.response.HttpResponseNotAllowed~Subclass" )
1792
+ .getASubclass * ( )
1793
+ }
1728
1794
1729
1795
/**
1730
1796
* A source of instances of `django.http.response.HttpResponseNotAllowed`, extend this class to model new instances.
@@ -1779,7 +1845,12 @@ module PrivateDjango {
1779
1845
}
1780
1846
1781
1847
/** Gets a reference to the `django.http.response.HttpResponseGone` class. */
1782
- API:: Node classRef ( ) { result = baseClassRef ( ) .getASubclass * ( ) }
1848
+ API:: Node classRef ( ) {
1849
+ result = baseClassRef ( ) .getASubclass * ( ) or
1850
+ result =
1851
+ ModelOutput:: getATypeNode ( "django.http.response.HttpResponseGone~Subclass" )
1852
+ .getASubclass * ( )
1853
+ }
1783
1854
1784
1855
/**
1785
1856
* A source of instances of `django.http.response.HttpResponseGone`, extend this class to model new instances.
@@ -1833,7 +1904,12 @@ module PrivateDjango {
1833
1904
}
1834
1905
1835
1906
/** Gets a reference to the `django.http.response.HttpResponseServerError` class. */
1836
- API:: Node classRef ( ) { result = baseClassRef ( ) .getASubclass * ( ) }
1907
+ API:: Node classRef ( ) {
1908
+ result = baseClassRef ( ) .getASubclass * ( ) or
1909
+ result =
1910
+ ModelOutput:: getATypeNode ( "django.http.response.HttpResponseServerError~Subclass" )
1911
+ .getASubclass * ( )
1912
+ }
1837
1913
1838
1914
/**
1839
1915
* A source of instances of `django.http.response.HttpResponseServerError`, extend this class to model new instances.
@@ -1887,7 +1963,12 @@ module PrivateDjango {
1887
1963
}
1888
1964
1889
1965
/** Gets a reference to the `django.http.response.JsonResponse` class. */
1890
- API:: Node classRef ( ) { result = baseClassRef ( ) .getASubclass * ( ) }
1966
+ API:: Node classRef ( ) {
1967
+ result = baseClassRef ( ) .getASubclass * ( ) or
1968
+ result =
1969
+ ModelOutput:: getATypeNode ( "django.http.response.JsonResponse~Subclass" )
1970
+ .getASubclass * ( )
1971
+ }
1891
1972
1892
1973
/**
1893
1974
* A source of instances of `django.http.response.JsonResponse`, extend this class to model new instances.
@@ -1944,7 +2025,12 @@ module PrivateDjango {
1944
2025
}
1945
2026
1946
2027
/** Gets a reference to the `django.http.response.StreamingHttpResponse` class. */
1947
- API:: Node classRef ( ) { result = baseClassRef ( ) .getASubclass * ( ) }
2028
+ API:: Node classRef ( ) {
2029
+ result = baseClassRef ( ) .getASubclass * ( ) or
2030
+ result =
2031
+ ModelOutput:: getATypeNode ( "django.http.response.StreamingHttpResponse~Subclass" )
2032
+ .getASubclass * ( )
2033
+ }
1948
2034
1949
2035
/**
1950
2036
* A source of instances of `django.http.response.StreamingHttpResponse`, extend this class to model new instances.
@@ -1998,7 +2084,12 @@ module PrivateDjango {
1998
2084
}
1999
2085
2000
2086
/** Gets a reference to the `django.http.response.FileResponse` class. */
2001
- API:: Node classRef ( ) { result = baseClassRef ( ) .getASubclass * ( ) }
2087
+ API:: Node classRef ( ) {
2088
+ result = baseClassRef ( ) .getASubclass * ( ) or
2089
+ result =
2090
+ ModelOutput:: getATypeNode ( "django.http.response.FileResponse~Subclass" )
2091
+ .getASubclass * ( )
2092
+ }
2002
2093
2003
2094
/**
2004
2095
* A source of instances of `django.http.response.FileResponse`, extend this class to model new instances.
0 commit comments