11/**
22 * Provides classes modeling security-relevant aspects of the `bottle` PyPI package.
3- * See https://www.tornadoweb. org/en/stable /.
3+ * See https://bottlepy. org/docs/dev /.
44 */
55
66private import python
@@ -14,28 +14,24 @@ private import semmle.python.frameworks.internal.InstanceTaintStepsHelper
1414 * INTERNAL: Do not use.
1515 *
1616 * Provides models for the `bottle` PyPI package.
17- * See https://www.tornadoweb. org/en/stable /.
17+ * See https://bottlepy. org/docs/dev /.
1818 */
1919module Bottle {
2020 module BottleModule {
2121 API:: Node bottle ( ) { result = API:: moduleImport ( "bottle" ) }
2222
2323 module Response {
24- API:: Node response ( ) {
25- result = bottle ( ) .getMember ( "response" )
26- //or
27- //result = ModelOutput::getATypeNode("tornado.web.RequestHandler~Subclass").getASubclass*()
28- }
24+ API:: Node response ( ) { result = bottle ( ) .getMember ( "response" ) }
2925
3026 /**
31- * A call to the `bottle.web.RequestHandler.set_header` method.
27+ * A call to the `bottle.web.RequestHandler.set_header` or `bottle.web.RequestHandler.add_header` method.
3228 *
33- * See https://www.tornadoweb. org/en/stable/web .html#tornado.web.RequestHandler .set_header
29+ * See https://bottlepy. org/docs/dev/api .html#bottle.BaseResponse .set_header
3430 */
35- class BottleRequestHandlerSetHeaderCall extends Http:: Server:: ResponseHeaderWrite:: Range ,
31+ class BottleResponseHandlerSetHeaderCall extends Http:: Server:: ResponseHeaderWrite:: Range ,
3632 DataFlow:: MethodCallNode
3733 {
38- BottleRequestHandlerSetHeaderCall ( ) {
34+ BottleResponseHandlerSetHeaderCall ( ) {
3935 this = response ( ) .getMember ( [ "set_header" , "add_header" ] ) .getACall ( )
4036 }
4137
@@ -58,15 +54,13 @@ module Bottle {
5854 private class Request extends RemoteFlowSource:: Range {
5955 Request ( ) { this = request ( ) .asSource ( ) }
6056
61- //or
62- //result = ModelOutput::getATypeNode("tornado.web.RequestHandler~Subclass").getASubclass*()
6357 override string getSourceType ( ) { result = "bottle.request" }
6458 }
6559
6660 /**
6761 * Taint propagation for `bottle.request`.
6862 *
69- * See https://flask.palletsprojects.com/en/1.1.x /api/#flask.Request
63+ * See https://bottlepy.org/docs/dev /api.html#bottle.request
7064 */
7165 private class InstanceTaintSteps extends InstanceTaintStepsHelper {
7266 InstanceTaintSteps ( ) { this = "bottle.request" }
@@ -86,11 +80,7 @@ module Bottle {
8680 }
8781
8882 module Header {
89- API:: Node instance ( ) {
90- result = bottle ( ) .getMember ( "response" ) .getMember ( "headers" )
91- //or
92- //result = ModelOutput::getATypeNode("tornado.web.RequestHandler~Subclass").getASubclass*()
93- }
83+ API:: Node instance ( ) { result = bottle ( ) .getMember ( "response" ) .getMember ( "headers" ) }
9484
9585 /** A dict-like write to a response header. */
9686 class HeaderWriteSubscript extends Http:: Server:: ResponseHeaderWrite:: Range , DataFlow:: Node {
@@ -105,12 +95,10 @@ module Bottle {
10595 )
10696 }
10797
108- //name = instance().getASubscript().getIndex().asSink()
10998 override DataFlow:: Node getNameArg ( ) { result = name .asSink ( ) }
11099
111100 override DataFlow:: Node getValueArg ( ) { result = value .asSink ( ) }
112101
113- // TODO: These checks perhaps could be made more precise.
114102 override predicate nameAllowsNewline ( ) { none ( ) }
115103
116104 override predicate valueAllowsNewline ( ) { none ( ) }
0 commit comments