mirror of
https://github.com/github/codeql.git
synced 2026-04-30 19:26:02 +02:00
Simplify modeling of NewContent.
This commit is contained in:
@@ -47,15 +47,15 @@ module EmailData {
|
||||
bindingset[result]
|
||||
private string sendgridMail() { result = "github.com/sendgrid/sendgrid-go/helpers/mail" }
|
||||
|
||||
/* Gets the value of the `i`th content parameter of the given `call` */
|
||||
private DataFlow::Node getContent(DataFlow::CallNode call, int i) {
|
||||
exists(DataFlow::CallNode cn, DataFlow::Node content |
|
||||
private class NewContent extends TaintTracking::FunctionModel {
|
||||
NewContent() {
|
||||
// func NewContent(contentType string, value string) *Content
|
||||
cn.getTarget().hasQualifiedName(sendgridMail(), "NewContent") and
|
||||
cn.getResult() = content and
|
||||
content.getASuccessor*() = call.getArgument(i) and
|
||||
result = cn.getArgument(1)
|
||||
)
|
||||
this.hasQualifiedName(sendgridMail(), "NewContent")
|
||||
}
|
||||
|
||||
override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) {
|
||||
input.isParameter(1) and output.isResult()
|
||||
}
|
||||
}
|
||||
|
||||
/** A data-flow node that is written to an email using the sendgrid/sendgrid-go package. */
|
||||
@@ -69,17 +69,14 @@ module EmailData {
|
||||
or
|
||||
// func NewV3MailInit(from *Email, subject string, to *Email, content ...*Content) *SGMailV3
|
||||
exists(Function newv3MailInit |
|
||||
newv3MailInit.hasQualifiedName(sendgridMail(), "NewV3MailInit")
|
||||
|
|
||||
this = getContent(newv3MailInit.getACall(), any(int i | i >= 3))
|
||||
or
|
||||
this = newv3MailInit.getACall().getArgument(1)
|
||||
newv3MailInit.hasQualifiedName(sendgridMail(), "NewV3MailInit") and
|
||||
this = newv3MailInit.getACall().getArgument(any(int i | i = 1 or i >= 3))
|
||||
)
|
||||
or
|
||||
// func (s *SGMailV3) AddContent(c ...*Content) *SGMailV3
|
||||
exists(Method addContent |
|
||||
addContent.hasQualifiedName(sendgridMail(), "SGMailV3", "AddContent") and
|
||||
this = getContent(addContent.getACall(), _)
|
||||
this = addContent.getACall().getAnArgument()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,37 +1,43 @@
|
||||
edges
|
||||
| email.go:24:10:24:17 | selection of Header : Header | email.go:27:56:27:67 | type conversion |
|
||||
| email.go:34:21:34:31 | call to Referer : string | email.go:36:57:36:78 | type conversion |
|
||||
| email.go:42:21:42:31 | call to Referer : string | email.go:46:25:46:38 | untrustedInput |
|
||||
| email.go:42:21:42:31 | call to Referer : string | email.go:45:3:45:7 | definition of write |
|
||||
| email.go:51:21:51:31 | call to Referer : string | email.go:57:46:57:59 | untrustedInput |
|
||||
| email.go:51:21:51:31 | call to Referer : string | email.go:58:52:58:65 | untrustedInput |
|
||||
| email.go:63:21:63:31 | call to Referer : string | email.go:65:47:65:60 | untrustedInput |
|
||||
| email.go:73:21:73:31 | call to Referer : string | email.go:79:47:79:60 | untrustedInput |
|
||||
| email.go:63:21:63:31 | call to Referer : string | email.go:68:16:68:22 | content |
|
||||
| email.go:73:21:73:31 | call to Referer : string | email.go:81:50:81:56 | content |
|
||||
| email.go:73:21:73:31 | call to Referer : string | email.go:81:59:81:65 | content |
|
||||
| email.go:73:21:73:31 | call to Referer : string | email.go:82:16:82:22 | content |
|
||||
| email.go:87:21:87:31 | call to Referer : string | email.go:94:37:94:50 | untrustedInput |
|
||||
| email.go:87:21:87:31 | call to Referer : string | email.go:96:48:96:61 | untrustedInput |
|
||||
| email.go:87:21:87:31 | call to Referer : string | email.go:98:16:98:23 | content2 |
|
||||
nodes
|
||||
| email.go:24:10:24:17 | selection of Header : Header | semmle.label | selection of Header : Header |
|
||||
| email.go:27:56:27:67 | type conversion | semmle.label | type conversion |
|
||||
| email.go:34:21:34:31 | call to Referer : string | semmle.label | call to Referer : string |
|
||||
| email.go:36:57:36:78 | type conversion | semmle.label | type conversion |
|
||||
| email.go:42:21:42:31 | call to Referer : string | semmle.label | call to Referer : string |
|
||||
| email.go:46:25:46:38 | untrustedInput | semmle.label | untrustedInput |
|
||||
| email.go:45:3:45:7 | definition of write | semmle.label | definition of write |
|
||||
| email.go:51:21:51:31 | call to Referer : string | semmle.label | call to Referer : string |
|
||||
| email.go:57:46:57:59 | untrustedInput | semmle.label | untrustedInput |
|
||||
| email.go:58:52:58:65 | untrustedInput | semmle.label | untrustedInput |
|
||||
| email.go:63:21:63:31 | call to Referer : string | semmle.label | call to Referer : string |
|
||||
| email.go:65:47:65:60 | untrustedInput | semmle.label | untrustedInput |
|
||||
| email.go:68:16:68:22 | content | semmle.label | content |
|
||||
| email.go:73:21:73:31 | call to Referer : string | semmle.label | call to Referer : string |
|
||||
| email.go:79:47:79:60 | untrustedInput | semmle.label | untrustedInput |
|
||||
| email.go:81:50:81:56 | content | semmle.label | content |
|
||||
| email.go:81:59:81:65 | content | semmle.label | content |
|
||||
| email.go:82:16:82:22 | content | semmle.label | content |
|
||||
| email.go:87:21:87:31 | call to Referer : string | semmle.label | call to Referer : string |
|
||||
| email.go:94:37:94:50 | untrustedInput | semmle.label | untrustedInput |
|
||||
| email.go:96:48:96:61 | untrustedInput | semmle.label | untrustedInput |
|
||||
| email.go:98:16:98:23 | content2 | semmle.label | content2 |
|
||||
#select
|
||||
| email.go:27:56:27:67 | type conversion | email.go:24:10:24:17 | selection of Header : Header | email.go:27:56:27:67 | type conversion | Email content may contain $@. | email.go:24:10:24:17 | selection of Header | untrusted input |
|
||||
| email.go:36:57:36:78 | type conversion | email.go:34:21:34:31 | call to Referer : string | email.go:36:57:36:78 | type conversion | Email content may contain $@. | email.go:34:21:34:31 | call to Referer | untrusted input |
|
||||
| email.go:46:25:46:38 | untrustedInput | email.go:42:21:42:31 | call to Referer : string | email.go:46:25:46:38 | untrustedInput | Email content may contain $@. | email.go:42:21:42:31 | call to Referer | untrusted input |
|
||||
| email.go:45:3:45:7 | definition of write | email.go:42:21:42:31 | call to Referer : string | email.go:45:3:45:7 | definition of write | Email content may contain $@. | email.go:42:21:42:31 | call to Referer | untrusted input |
|
||||
| email.go:57:46:57:59 | untrustedInput | email.go:51:21:51:31 | call to Referer : string | email.go:57:46:57:59 | untrustedInput | Email content may contain $@. | email.go:51:21:51:31 | call to Referer | untrusted input |
|
||||
| email.go:58:52:58:65 | untrustedInput | email.go:51:21:51:31 | call to Referer : string | email.go:58:52:58:65 | untrustedInput | Email content may contain $@. | email.go:51:21:51:31 | call to Referer | untrusted input |
|
||||
| email.go:65:47:65:60 | untrustedInput | email.go:63:21:63:31 | call to Referer : string | email.go:65:47:65:60 | untrustedInput | Email content may contain $@. | email.go:63:21:63:31 | call to Referer | untrusted input |
|
||||
| email.go:79:47:79:60 | untrustedInput | email.go:73:21:73:31 | call to Referer : string | email.go:79:47:79:60 | untrustedInput | Email content may contain $@. | email.go:73:21:73:31 | call to Referer | untrusted input |
|
||||
| email.go:68:16:68:22 | content | email.go:63:21:63:31 | call to Referer : string | email.go:68:16:68:22 | content | Email content may contain $@. | email.go:63:21:63:31 | call to Referer | untrusted input |
|
||||
| email.go:81:50:81:56 | content | email.go:73:21:73:31 | call to Referer : string | email.go:81:50:81:56 | content | Email content may contain $@. | email.go:73:21:73:31 | call to Referer | untrusted input |
|
||||
| email.go:81:59:81:65 | content | email.go:73:21:73:31 | call to Referer : string | email.go:81:59:81:65 | content | Email content may contain $@. | email.go:73:21:73:31 | call to Referer | untrusted input |
|
||||
| email.go:82:16:82:22 | content | email.go:73:21:73:31 | call to Referer : string | email.go:82:16:82:22 | content | Email content may contain $@. | email.go:73:21:73:31 | call to Referer | untrusted input |
|
||||
| email.go:94:37:94:50 | untrustedInput | email.go:87:21:87:31 | call to Referer : string | email.go:94:37:94:50 | untrustedInput | Email content may contain $@. | email.go:87:21:87:31 | call to Referer | untrusted input |
|
||||
| email.go:96:48:96:61 | untrustedInput | email.go:87:21:87:31 | call to Referer : string | email.go:96:48:96:61 | untrustedInput | Email content may contain $@. | email.go:87:21:87:31 | call to Referer | untrusted input |
|
||||
| email.go:98:16:98:23 | content2 | email.go:87:21:87:31 | call to Referer : string | email.go:98:16:98:23 | content2 | Email content may contain $@. | email.go:87:21:87:31 | call to Referer | untrusted input |
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
| mail.go:16:56:16:77 | type conversion |
|
||||
| mail.go:22:24:22:37 | untrustedInput |
|
||||
| mail.go:19:2:19:6 | definition of write |
|
||||
| mail.go:29:32:29:36 | alert |
|
||||
| mail.go:29:43:29:47 | alert |
|
||||
| mail.go:29:50:29:54 | alert |
|
||||
| mail.go:32:46:32:50 | alert |
|
||||
| mail.go:36:47:36:51 | alert |
|
||||
| mail.go:37:47:37:51 | alert |
|
||||
| mail.go:34:15:34:21 | content |
|
||||
| mail.go:40:35:40:39 | alert |
|
||||
| mail.go:40:46:40:53 | content2 |
|
||||
| mail.go:40:56:40:63 | content3 |
|
||||
|
||||
Reference in New Issue
Block a user