Skip to content

Commit 12f4ce8

Browse files
committed
merge two cases of jQuery method calls
1 parent 2d3e42e commit 12f4ce8

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -538,12 +538,13 @@ module JQuery {
538538
MethodCall() {
539539
this = dollarCall() and name = "$"
540540
or
541-
this = ([dollar(), objectRef()]).getAMemberCall(name)
542-
or
543541
// Handle basic dynamic method dispatch (e.g. `$element[html ? 'html' : 'text'](content)`)
544542
exists(DataFlow::PropRead read | read = this.getCalleeNode() |
545543
read.getBase().getALocalSource() = [dollar(), objectRef()] and
546-
read.getPropertyNameExpr().flow().mayHaveStringValue(name)
544+
(
545+
read.getPropertyNameExpr().flow().mayHaveStringValue(name) or
546+
read.getPropertyName() = name
547+
)
547548
)
548549
or
549550
// Handle contributed JQuery objects that aren't source nodes (usually parameter uses)

javascript/ql/test/query-tests/Security/CWE-079/xss-through-dom.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,5 +58,8 @@
5858

5959
$("#id").get(0).innerHTML = $("input").getAttribute("id"); // OK.
6060

61-
$("#id").get(0).innerHTML = $(document).find("option").attr("value"); // NOT OK.
61+
$("#id").get(0).innerHTML = $(document).find("option").attr("value"); // NOT OK.
62+
63+
var valMethod = $("textarea").val;
64+
$("#id").get(0).innerHTML = valMethod(); // OK - Not a method call, not valid receiver for jQuery.
6265
})();

0 commit comments

Comments
 (0)