Skip to content

Commit dd9aec0

Browse files
committed
handle basic dynamic method dispatch for jQuery methods
1 parent 964a619 commit dd9aec0

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

  • javascript/ql/src/semmle/javascript/frameworks

javascript/ql/src/semmle/javascript/frameworks/jQuery.qll

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -538,9 +538,13 @@ module JQuery {
538538
MethodCall() {
539539
this = dollarCall() and name = "$"
540540
or
541-
this = dollar().getAMemberCall(name)
541+
this = ([dollar(), objectRef()]).getAMemberCall(name)
542542
or
543-
this = objectRef().getAMethodCall(name)
543+
// Handle basic dynamic method dispatch (e.g. `$element[html ? 'html' : 'text'](content)`)
544+
exists(DataFlow::PropRead read | read = this.getCalleeNode() |
545+
read.getBase().getALocalSource() = [dollar(), objectRef()] and
546+
read.getPropertyNameExpr().flow().mayHaveStringValue(name)
547+
)
544548
or
545549
// Handle contributed JQuery objects that aren't source nodes (usually parameter uses)
546550
getReceiver() = legacyObjectSource() and

0 commit comments

Comments
 (0)