Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 62db8cc

Browse files
tausbnRasmusWL
authored andcommitted
Python: Add MarkupSafe model
1 parent cdb0ac5 commit 62db8cc

2 files changed

Lines changed: 13 additions & 1 deletion

File tree

python/ql/lib/semmle/python/frameworks/MarkupSafe.qll

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,15 @@ private import semmle.python.dataflow.new.TaintTracking
99
private import semmle.python.Concepts
1010
private import semmle.python.ApiGraphs
1111
private import semmle.python.frameworks.internal.InstanceTaintStepsHelper
12+
private import semmle.python.frameworks.data.ModelsAsData
1213

1314
/**
15+
* INTERNAL: Do not use.
16+
*
1417
* Provides models for the `MarkupSafe` PyPI package.
1518
* See https://markupsafe.palletsprojects.com/en/2.0.x/.
1619
*/
17-
private module MarkupSafeModel {
20+
module MarkupSafeModel {
1821
/**
1922
* Provides models for the `markupsafe.Markup` class
2023
*
@@ -26,6 +29,8 @@ private module MarkupSafeModel {
2629
result = API::moduleImport("markupsafe").getMember("Markup")
2730
or
2831
result = API::moduleImport("flask").getMember("Markup")
32+
or
33+
result = ModelOutput::getATypeNode("markupsafe.Markup~Subclass").getASubclass*()
2934
}
3035

3136
/**

python/ql/src/meta/ClassHierarchy/Find.ql

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ private import semmle.python.frameworks.Aiohttp
2020
private import semmle.python.frameworks.Fabric
2121
private import semmle.python.frameworks.Httpx
2222
private import semmle.python.frameworks.Invoke
23+
private import semmle.python.frameworks.MarkupSafe
2324
import semmle.python.frameworks.data.internal.ApiGraphModelsExtensions as Extensions
2425

2526
class FlaskViewClasses extends FindSubclassesSpec {
@@ -303,6 +304,12 @@ class InvokeContext extends FindSubclassesSpec {
303304
}
304305
}
305306

307+
class MarkupSafe extends FindSubclassesSpec {
308+
MarkupSafe() { this = "markupsafe.Markup~Subclass" }
309+
310+
override API::Node getAlreadyModeledClass() { result = MarkupSafeModel::Markup::classRef() }
311+
}
312+
306313
bindingset[fullyQualified]
307314
predicate fullyQualifiedToYamlFormat(string fullyQualified, string type2, string path) {
308315
exists(int firstDot | firstDot = fullyQualified.indexOf(".", 0, 0) |

0 commit comments

Comments
 (0)