mirror of
https://github.com/github/codeql.git
synced 2025-12-21 03:06:31 +01:00
Add requested changes
This commit is contained in:
@@ -48,4 +48,26 @@ module Mysql2 {
|
|||||||
|
|
||||||
override DataFlow::Node getSql() { result = query }
|
override DataFlow::Node getSql() { result = query }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A call to `Mysql2::Client.escape`, considered as a sanitizer for SQL statements.
|
||||||
|
*/
|
||||||
|
private class Mysql2EscapeSanitization extends SqlSanitization::Range {
|
||||||
|
Mysql2EscapeSanitization() {
|
||||||
|
this = API::getTopLevelMember("Mysql2").getMember("Client").getAMethodCall("escape")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Flow summary for `Mysql2::Client.escape()`.
|
||||||
|
*/
|
||||||
|
private class EscapeSummary extends SummarizedCallable {
|
||||||
|
EscapeSummary() { this = "Mysql2::Client.escape()" }
|
||||||
|
|
||||||
|
override MethodCall getACall() { result = any(Mysql2EscapeSanitization c).asExpr().getExpr() }
|
||||||
|
|
||||||
|
override predicate propagatesFlowExt(string input, string output, boolean preservesValue) {
|
||||||
|
input = "Argument[0]" and output = "ReturnValue" and preservesValue = false
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,4 +77,26 @@ module Sqlite3 {
|
|||||||
|
|
||||||
override DataFlow::Node getSql() { result = this.getArgument(0) }
|
override DataFlow::Node getSql() { result = this.getArgument(0) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A call to `SQLite3::Database.quote`, considered as a sanitizer for SQL statements.
|
||||||
|
*/
|
||||||
|
private class SQLite3QuoteSanitization extends SqlSanitization {
|
||||||
|
SQLite3QuoteSanitization() {
|
||||||
|
this = API::getTopLevelMember("SQLite3").getMember("Database").getAMethodCall("quote")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Flow summary for `SQLite3::Database.quote()`.
|
||||||
|
*/
|
||||||
|
private class QuoteSummary extends SummarizedCallable {
|
||||||
|
QuoteSummary() { this = "SQLite3::Database.quote()" }
|
||||||
|
|
||||||
|
override MethodCall getACall() { result = any(SQLite3QuoteSanitization c).asExpr().getExpr() }
|
||||||
|
|
||||||
|
override predicate propagatesFlowExt(string input, string output, boolean preservesValue) {
|
||||||
|
input = "Argument[0]" and output = "ReturnValue" and preservesValue = false
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -52,23 +52,8 @@ module SqlInjection {
|
|||||||
* sanitizer-guard.
|
* sanitizer-guard.
|
||||||
*/
|
*/
|
||||||
class StringConstArrayInclusionCallAsSanitizer extends Sanitizer,
|
class StringConstArrayInclusionCallAsSanitizer extends Sanitizer,
|
||||||
StringConstArrayInclusionCallBarrier { }
|
StringConstArrayInclusionCallBarrier
|
||||||
|
{ }
|
||||||
|
|
||||||
/**
|
private class SqlSanitizationAsSanitizer extends Sanitizer, SqlSanitization { }
|
||||||
* A call to `Mysql2::Client.escape`, considered as a sanitizer.
|
|
||||||
*/
|
|
||||||
private class Mysql2EscapeSanitization extends Sanitizer {
|
|
||||||
Mysql2EscapeSanitization() {
|
|
||||||
this = API::getTopLevelMember("Mysql2").getMember("Client").getAMethodCall("escape")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A call to `SQLite3::Database.quote`, considered as a sanitizer.
|
|
||||||
*/
|
|
||||||
private class SQLite3EscapeSanitization extends Sanitizer {
|
|
||||||
SQLite3EscapeSanitization() {
|
|
||||||
this = API::getTopLevelMember("SQLite3").getMember("Database").getAMethodCall("quote")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user