Skip to content

Commit 0f64822

Browse files
committed
New remote source - reading from an @input() decorated class member
1 parent 09e4c78 commit 0f64822

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

javascript/ql/lib/semmle/javascript/security/dataflow/RemoteFlowSources.qll

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,3 +184,36 @@ private class ExternalRemoteFlowSource extends RemoteFlowSource {
184184

185185
override string getSourceType() { result = ap.getSourceType() }
186186
}
187+
188+
// Angular @Input() decorator on a member declaration.
189+
class InputMember extends MemberDeclaration {
190+
InputMember() {
191+
exists(Decorator decorator, Expr expr |
192+
decorator.getElement() = this
193+
and decorator.getExpression() = expr
194+
and expr.(CallExpr).getCallee().(VarRef).getName() = "Input"
195+
)
196+
}
197+
}
198+
199+
// Use of an Angular @Input() member.
200+
class InputMemberUse extends DataFlow::Node {
201+
InputMemberUse() {
202+
exists(InputMember member, string memberName, ThisExpr ta, FieldAccess fa |
203+
memberName = member.getName()
204+
and fa.getBase() = ta
205+
and fa.getPropertyName() = memberName
206+
and this.asExpr() = fa
207+
)
208+
}
209+
}
210+
211+
private class AngularInputUse extends RemoteFlowSource {
212+
AngularInputUse() {
213+
exists( InputMemberUse inputUse |
214+
this = inputUse
215+
)
216+
}
217+
218+
override string getSourceType() { result = "Angular @Input()" }
219+
}

0 commit comments

Comments
 (0)