From dcf63fc4342ebfd541b1092022a4badc838cd796 Mon Sep 17 00:00:00 2001 From: Asger F Date: Wed, 27 Aug 2025 11:20:24 +0200 Subject: [PATCH 1/4] JS: Remove synthetic locations --- javascript/ql/lib/semmle/javascript/AST.qll | 4 +- javascript/ql/lib/semmle/javascript/Files.qll | 3 +- javascript/ql/lib/semmle/javascript/JSON.qll | 3 +- .../ql/lib/semmle/javascript/Locations.qll | 45 +++-- .../semmle/javascript/RestrictedLocations.qll | 2 +- javascript/ql/lib/semmle/javascript/SSA.qll | 68 ++----- .../ql/lib/semmle/javascript/Variables.qll | 4 +- javascript/ql/lib/semmle/javascript/XML.qll | 7 +- javascript/ql/lib/semmle/javascript/YAML.qll | 2 - .../dataflow/internal/VariableCapture.qll | 10 +- .../dataflow/internal/VariableOrThis.qll | 4 +- .../dataflow/internal/sharedlib/Ssa.qll | 4 +- .../semmle/javascript/internal/Locations.qll | 171 ------------------ 13 files changed, 63 insertions(+), 264 deletions(-) delete mode 100644 javascript/ql/lib/semmle/javascript/internal/Locations.qll diff --git a/javascript/ql/lib/semmle/javascript/AST.qll b/javascript/ql/lib/semmle/javascript/AST.qll index bcde7bbaf4a2..db0a2e153d50 100644 --- a/javascript/ql/lib/semmle/javascript/AST.qll +++ b/javascript/ql/lib/semmle/javascript/AST.qll @@ -31,7 +31,7 @@ class AstNode extends @ast_node, NodeInStmtContainer { /** Gets the first token belonging to this element. */ Token getFirstToken() { - exists(DbLocation l1, DbLocation l2, string filepath, int startline, int startcolumn | + exists(Location l1, Location l2, string filepath, int startline, int startcolumn | l1 = this.getLocation() and l2 = result.getLocation() and l1.hasLocationInfo(filepath, startline, startcolumn, _, _) and @@ -41,7 +41,7 @@ class AstNode extends @ast_node, NodeInStmtContainer { /** Gets the last token belonging to this element. */ Token getLastToken() { - exists(DbLocation l1, DbLocation l2, string filepath, int endline, int endcolumn | + exists(Location l1, Location l2, string filepath, int endline, int endcolumn | l1 = this.getLocation() and l2 = result.getLocation() and l1.hasLocationInfo(filepath, _, _, endline, endcolumn) and diff --git a/javascript/ql/lib/semmle/javascript/Files.qll b/javascript/ql/lib/semmle/javascript/Files.qll index e717eb6def41..b9274d92ebaa 100644 --- a/javascript/ql/lib/semmle/javascript/Files.qll +++ b/javascript/ql/lib/semmle/javascript/Files.qll @@ -3,7 +3,6 @@ import javascript private import NodeModuleResolutionImpl private import codeql.util.FileSystem -private import internal.Locations private module FsInput implements InputSig { abstract class ContainerBase extends @container { @@ -99,7 +98,7 @@ class File extends Container, Impl::File { * * Note that files have special locations starting and ending at line zero, column zero. */ - DbLocation getLocation() { result = getLocatableLocation(this) } + Location getLocation() { hasLocation(this, result) } /** Gets the number of lines in this file. */ int getNumberOfLines() { result = sum(int loc | numlines(this, loc, _, _) | loc) } diff --git a/javascript/ql/lib/semmle/javascript/JSON.qll b/javascript/ql/lib/semmle/javascript/JSON.qll index 714228e52b65..19fc3ec84d7a 100644 --- a/javascript/ql/lib/semmle/javascript/JSON.qll +++ b/javascript/ql/lib/semmle/javascript/JSON.qll @@ -3,7 +3,6 @@ */ import javascript -private import semmle.javascript.internal.Locations /** * A JSON-encoded value, which may be a primitive value, an array or an object. @@ -33,7 +32,7 @@ class JsonValue extends @json_value, Locatable { override string toString() { json(this, _, _, _, result) } /** Gets the JSON file containing this value. */ - File getJsonFile() { result = getLocatableLocation(this).getFile() } + File getJsonFile() { exists(Location loc | json_locations(this, loc) and result = loc.getFile()) } /** If this is an object, gets the value of property `name`. */ JsonValue getPropValue(string name) { json_properties(this, name, result) } diff --git a/javascript/ql/lib/semmle/javascript/Locations.qll b/javascript/ql/lib/semmle/javascript/Locations.qll index ce323dfc14db..a36e7807e5d5 100644 --- a/javascript/ql/lib/semmle/javascript/Locations.qll +++ b/javascript/ql/lib/semmle/javascript/Locations.qll @@ -1,7 +1,6 @@ /** Provides classes for working with locations and program elements that have locations. */ import javascript -private import internal.Locations /** * A location as given by a file, a start line, a start column, @@ -11,31 +10,31 @@ private import internal.Locations * * For more information about locations see [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ -class DbLocation extends TDbLocation { +final class Location extends @location_default { /** Gets the file for this location. */ - File getFile() { dbLocationInfo(this, result, _, _, _, _) } + File getFile() { locations_default(this, result, _, _, _, _) } /** Gets the 1-based line number (inclusive) where this location starts. */ - int getStartLine() { dbLocationInfo(this, _, result, _, _, _) } + int getStartLine() { locations_default(this, _, result, _, _, _) } /** Gets the 1-based column number (inclusive) where this location starts. */ - int getStartColumn() { dbLocationInfo(this, _, _, result, _, _) } + int getStartColumn() { locations_default(this, _, _, result, _, _) } /** Gets the 1-based line number (inclusive) where this location ends. */ - int getEndLine() { dbLocationInfo(this, _, _, _, result, _) } + int getEndLine() { locations_default(this, _, _, _, result, _) } /** Gets the 1-based column number (inclusive) where this location ends. */ - int getEndColumn() { dbLocationInfo(this, _, _, _, _, result) } + int getEndColumn() { locations_default(this, _, _, _, _, result) } /** Gets the number of lines covered by this location. */ int getNumLines() { result = this.getEndLine() - this.getStartLine() + 1 } /** Holds if this location starts before location `that`. */ pragma[inline] - predicate startsBefore(DbLocation that) { - exists(File f, int sl1, int sc1, int sl2, int sc2 | - dbLocationInfo(this, f, sl1, sc1, _, _) and - dbLocationInfo(that, f, sl2, sc2, _, _) + predicate startsBefore(Location that) { + exists(string f, int sl1, int sc1, int sl2, int sc2 | + this.hasLocationInfo(f, sl1, sc1, _, _) and + that.hasLocationInfo(f, sl2, sc2, _, _) | sl1 < sl2 or @@ -45,10 +44,10 @@ class DbLocation extends TDbLocation { /** Holds if this location ends after location `that`. */ pragma[inline] - predicate endsAfter(DbLocation that) { - exists(File f, int el1, int ec1, int el2, int ec2 | - dbLocationInfo(this, f, _, _, el1, ec1) and - dbLocationInfo(that, f, _, _, el2, ec2) + predicate endsAfter(Location that) { + exists(string f, int el1, int ec1, int el2, int ec2 | + this.hasLocationInfo(f, _, _, el1, ec1) and + that.hasLocationInfo(f, _, _, el2, ec2) | el1 > el2 or @@ -60,10 +59,10 @@ class DbLocation extends TDbLocation { * Holds if this location contains location `that`, meaning that it starts * before and ends after it. */ - predicate contains(DbLocation that) { this.startsBefore(that) and this.endsAfter(that) } + predicate contains(Location that) { this.startsBefore(that) and this.endsAfter(that) } /** Holds if this location is empty. */ - predicate isEmpty() { exists(int l, int c | dbLocationInfo(this, _, l, c, l, c - 1)) } + predicate isEmpty() { exists(int l, int c | this.hasLocationInfo(_, l, c, l, c - 1)) } /** Gets a textual representation of this element. */ string toString() { result = this.getFile().getBaseName() + ":" + this.getStartLine().toString() } @@ -79,13 +78,19 @@ class DbLocation extends TDbLocation { string filepath, int startline, int startcolumn, int endline, int endcolumn ) { exists(File f | - dbLocationInfo(this, f, startline, startcolumn, endline, endcolumn) and + locations_default(this, f, startline, startcolumn, endline, endcolumn) and filepath = f.getAbsolutePath() ) } } -final class Location = LocationImpl; +cached +private Location getLocatableLocation(@locatable l) { + hasLocation(l, result) or + xmllocations(l, result) or + json_locations(l, result) or + yaml_locations(l, result) +} /** A program element with a location. */ class Locatable extends @locatable { @@ -93,7 +98,7 @@ class Locatable extends @locatable { File getFile() { result = this.getLocation().getFile() } /** Gets this element's location. */ - final DbLocation getLocation() { result = getLocatableLocation(this) } + final Location getLocation() { result = getLocatableLocation(this) } /** * Gets the line on which this element starts. diff --git a/javascript/ql/lib/semmle/javascript/RestrictedLocations.qll b/javascript/ql/lib/semmle/javascript/RestrictedLocations.qll index 05bcd8b3dddc..47ee41a42357 100644 --- a/javascript/ql/lib/semmle/javascript/RestrictedLocations.qll +++ b/javascript/ql/lib/semmle/javascript/RestrictedLocations.qll @@ -26,7 +26,7 @@ class FirstLineOf extends Locatable { then endcolumn = xc else endcolumn = - max(int c | any(DbLocation l).hasLocationInfo(filepath, startline, _, startline, c)) + max(int c | any(Location l).hasLocationInfo(filepath, startline, _, startline, c)) ) } } diff --git a/javascript/ql/lib/semmle/javascript/SSA.qll b/javascript/ql/lib/semmle/javascript/SSA.qll index 2de42193743f..43619307c266 100644 --- a/javascript/ql/lib/semmle/javascript/SSA.qll +++ b/javascript/ql/lib/semmle/javascript/SSA.qll @@ -412,17 +412,22 @@ class SsaVariable extends TSsaDefinition { /** Gets a textual representation of this element. */ string toString() { result = this.getDefinition().prettyPrintRef() } + /** Gets the location of this SSA variable. */ + Location getLocation() { result = this.getDefinition().getLocation() } + /** + * DEPRECATED. Use `getLocation().hasLocationInfo()` instead. + * * Holds if this element is at the specified location. * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ - predicate hasLocationInfo( + deprecated predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn ) { - this.getDefinition().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) } } @@ -478,23 +483,22 @@ class SsaDefinition extends TSsaDefinition { string toString() { result = this.prettyPrintDef() } /** + * DEPRECATED. Use `getLocation().hasLocationInfo()` instead. + * * Holds if this element is at the specified location. * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ - abstract predicate hasLocationInfo( + deprecated predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn - ); + ) { + this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } /** Gets the location of this element. */ - final Location getLocation() { - exists(string filepath, int startline, int startcolumn, int endline, int endcolumn | - this.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and - result.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - ) - } + Location getLocation() { result = this.getBasicBlock().getLocation() } /** Gets the function or toplevel to which this definition belongs. */ StmtContainer getContainer() { result = this.getBasicBlock().getContainer() } @@ -522,20 +526,13 @@ class SsaExplicitDefinition extends SsaDefinition, TExplicitDef { override VarDef getAContributingVarDef() { result = this.getDef() } override string prettyPrintRef() { - exists(int l, int c | this.hasLocationInfo(_, l, c, _, _) | result = "def@" + l + ":" + c) + exists(int l, int c | this.getLocation().hasLocationInfo(_, l, c, _, _) | + result = "def@" + l + ":" + c + ) } override string prettyPrintDef() { result = this.getDef().toString() } - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - exists(Location loc | - pragma[only_bind_into](loc) = pragma[only_bind_into](this.getDef()).getLocation() and - loc.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - ) - } - /** * Gets the data flow node representing the incoming value assigned at this definition, * if any. @@ -557,21 +554,10 @@ abstract class SsaImplicitDefinition extends SsaDefinition { abstract string getKind(); override string prettyPrintRef() { - exists(int l, int c | this.hasLocationInfo(_, l, c, _, _) | + exists(int l, int c | this.getLocation().hasLocationInfo(_, l, c, _, _) | result = this.getKind() + "@" + l + ":" + c ) } - - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - endline = startline and - endcolumn = startcolumn and - exists(Location loc | - pragma[only_bind_into](loc) = pragma[only_bind_into](this.getBasicBlock()).getLocation() and - loc.hasLocationInfo(filepath, startline, startcolumn, _, _) - ) - } } /** @@ -617,16 +603,6 @@ class SsaVariableCapture extends SsaImplicitDefinition, TCapture { override string getKind() { result = "capture" } override string prettyPrintDef() { result = "capture variable " + this.getSourceVariable() } - - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - exists(ReachableBasicBlock bb, int i | this.definesAt(bb, i, _) | - bb.getNode(i) - .getLocation() - .hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - ) - } } /** @@ -747,13 +723,7 @@ class SsaRefinementNode extends SsaPseudoDefinition, TRefinement { this.getSourceVariable() + " = refine[" + this.getGuard() + "](" + this.ppInputs() + ")" } - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - this.getGuard() - .getLocation() - .hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } + override Location getLocation() { result = this.getGuard().getLocation() } } module Ssa { diff --git a/javascript/ql/lib/semmle/javascript/Variables.qll b/javascript/ql/lib/semmle/javascript/Variables.qll index 2f9905f86e17..adc0ad5b9c87 100644 --- a/javascript/ql/lib/semmle/javascript/Variables.qll +++ b/javascript/ql/lib/semmle/javascript/Variables.qll @@ -353,9 +353,9 @@ class LocalVariable extends Variable { * If the variable has one or more declarations, the location of the first declaration is used. * If the variable has no declaration, the entry point of its declaring container is used. */ - DbLocation getLocation() { + Location getLocation() { result = - min(DbLocation loc | + min(Location loc | loc = this.getADeclaration().getLocation() | loc order by loc.getStartLine(), loc.getStartColumn() diff --git a/javascript/ql/lib/semmle/javascript/XML.qll b/javascript/ql/lib/semmle/javascript/XML.qll index 2a351016fd14..54157809260b 100644 --- a/javascript/ql/lib/semmle/javascript/XML.qll +++ b/javascript/ql/lib/semmle/javascript/XML.qll @@ -3,13 +3,12 @@ */ import semmle.files.FileSystem -private import semmle.javascript.internal.Locations private import codeql.xml.Xml -private module Input implements InputSig { +private module Input implements InputSig { class XmlLocatableBase = @xmllocatable or @xmlnamespaceable; - predicate xmllocations_(XmlLocatableBase e, DbLocation loc) { loc = getLocatableLocation(e) } + predicate xmllocations_(XmlLocatableBase e, Location loc) { xmllocations(e, loc) } class XmlParentBase = @xmlparent; @@ -67,4 +66,4 @@ private module Input implements InputSig { } } -import Make +import Make diff --git a/javascript/ql/lib/semmle/javascript/YAML.qll b/javascript/ql/lib/semmle/javascript/YAML.qll index 24486b729c04..a312d78b6fbe 100644 --- a/javascript/ql/lib/semmle/javascript/YAML.qll +++ b/javascript/ql/lib/semmle/javascript/YAML.qll @@ -9,8 +9,6 @@ import javascript private import codeql.yaml.Yaml as LibYaml private module YamlSig implements LibYaml::InputSig { - class Location = DbLocation; - class LocatableBase extends @yaml_locatable, Locatable { } import javascript diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableCapture.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableCapture.qll index 75f21bab38ac..6cdb95bc4d9f 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableCapture.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableCapture.qll @@ -4,7 +4,7 @@ private import semmle.javascript.dataflow.internal.VariableOrThis private import codeql.dataflow.VariableCapture private import semmle.javascript.dataflow.internal.sharedlib.DataFlowImplCommon as DataFlowImplCommon -module VariableCaptureConfig implements InputSig { +module VariableCaptureConfig implements InputSig { private js::Function getLambdaFromVariable(js::LocalVariable variable) { result.getVariable() = variable or @@ -168,7 +168,7 @@ module VariableCaptureConfig implements InputSig { string toString() { none() } // Overridden in subclass - js::DbLocation getLocation() { none() } // Overridden in subclass + js::Location getLocation() { none() } // Overridden in subclass predicate hasCfgNode(BasicBlock bb, int i) { none() } // Overridden in subclass @@ -186,7 +186,7 @@ module VariableCaptureConfig implements InputSig { override string toString() { result = pattern.toString() } /** Gets the location of this write. */ - override js::DbLocation getLocation() { result = pattern.getLocation() } + override js::Location getLocation() { result = pattern.getLocation() } override js::DataFlow::Node getSource() { // Note: there is not always an expression corresponding to the RHS of the assignment. @@ -222,7 +222,7 @@ module VariableCaptureConfig implements InputSig { override string toString() { result = "[implicit init] " + variable } - override js::DbLocation getLocation() { result = variable.getLocation() } + override js::Location getLocation() { result = variable.getLocation() } override CapturedVariable getVariable() { result = variable } @@ -242,7 +242,7 @@ module VariableCaptureConfig implements InputSig { predicate entryBlock(BasicBlock bb) { bb instanceof js::EntryBasicBlock } } -module VariableCaptureOutput = Flow; +module VariableCaptureOutput = Flow; js::DataFlow::Node getNodeFromClosureNode(VariableCaptureOutput::ClosureNode node) { result = TValueNode(node.(VariableCaptureOutput::ExprNode).getExpr()) diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableOrThis.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableOrThis.qll index 8309c0d639c3..a517e0d91fd0 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableOrThis.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableOrThis.qll @@ -25,7 +25,7 @@ class LocalVariableOrThis extends TLocalVariableOrThis { } /** Gets the location of a declaration of this variable, or the declaring container if this is `this`. */ - DbLocation getLocation() { + Location getLocation() { result = this.asLocalVariable().getLocation() or result = this.asThisContainer().getLocation() @@ -95,7 +95,7 @@ abstract class ThisUse instanceof ControlFlowNode { string toString() { result = super.toString() } /** Gets the location of this use of `this`. */ - DbLocation getLocation() { result = super.getLocation() } + Location getLocation() { result = super.getLocation() } } private predicate implicitThisUse(ControlFlowNode node, StmtContainer thisBinder) { diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll index eef4dc08318a..1172a64a0575 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll @@ -9,7 +9,7 @@ private import codeql.ssa.Ssa private import semmle.javascript.internal.BasicBlockInternal as BasicBlockInternal private import semmle.javascript.dataflow.internal.VariableOrThis -module SsaConfig implements InputSig { +module SsaConfig implements InputSig { class ControlFlowNode = js::ControlFlowNode; class BasicBlock = js::BasicBlock; @@ -47,7 +47,7 @@ module SsaConfig implements InputSig { BasicBlock getABasicBlockSuccessor(BasicBlock bb) { result = bb.getASuccessor() } } -import Make +import Make module SsaDataflowInput implements DataFlowIntegrationInputSig { private import codeql.util.Boolean diff --git a/javascript/ql/lib/semmle/javascript/internal/Locations.qll b/javascript/ql/lib/semmle/javascript/internal/Locations.qll deleted file mode 100644 index d1dc8d403f75..000000000000 --- a/javascript/ql/lib/semmle/javascript/internal/Locations.qll +++ /dev/null @@ -1,171 +0,0 @@ -/** Provides classes for working with locations and program elements that have locations. */ - -import javascript - -// Should _not_ be cached, as that would require the data flow stage to be evaluated -// in order to evaluate the AST stage. Ideally, we would cache each injector separately, -// but that's not possible. Instead, we cache all predicates that need the injectors -// to be tuple numbered. -newtype TLocation = - TDbLocation(@location loc) or - TSynthLocation(string filepath, int startline, int startcolumn, int endline, int endcolumn) { - any(SsaDefinition def).hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and - // avoid overlap with existing DB locations - not exists(File f | - locations_default(_, f, startline, startcolumn, endline, endcolumn) and - f.getAbsolutePath() = filepath - ) - } - -/** - * A location as given by a file, a start line, a start column, - * an end line, and an end column. - * - * For more information about locations see [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ -abstract class LocationImpl extends TLocation { - /** Gets the file for this location. */ - abstract File getFile(); - - /** Gets the 1-based line number (inclusive) where this location starts. */ - abstract int getStartLine(); - - /** Gets the 1-based column number (inclusive) where this location starts. */ - abstract int getStartColumn(); - - /** Gets the 1-based line number (inclusive) where this location ends. */ - abstract int getEndLine(); - - /** Gets the 1-based column number (inclusive) where this location ends. */ - abstract int getEndColumn(); - - /** Gets the number of lines covered by this location. */ - int getNumLines() { result = this.getEndLine() - this.getStartLine() + 1 } - - /** Holds if this location starts before location `that`. */ - pragma[inline] - predicate startsBefore(Location that) { - exists(string f, int sl1, int sc1, int sl2, int sc2 | - this.hasLocationInfo(f, sl1, sc1, _, _) and - that.hasLocationInfo(f, sl2, sc2, _, _) - | - sl1 < sl2 - or - sl1 = sl2 and sc1 < sc2 - ) - } - - /** Holds if this location ends after location `that`. */ - pragma[inline] - predicate endsAfter(Location that) { - exists(string f, int el1, int ec1, int el2, int ec2 | - this.hasLocationInfo(f, _, _, el1, ec1) and - that.hasLocationInfo(f, _, _, el2, ec2) - | - el1 > el2 - or - el1 = el2 and ec1 > ec2 - ) - } - - /** - * Holds if this location contains location `that`, meaning that it starts - * before and ends after it. - */ - predicate contains(Location that) { this.startsBefore(that) and this.endsAfter(that) } - - /** Holds if this location is empty. */ - predicate isEmpty() { exists(int l, int c | this.hasLocationInfo(_, l, c, l, c - 1)) } - - /** Gets a textual representation of this element. */ - string toString() { result = this.getFile().getBaseName() + ":" + this.getStartLine().toString() } - - /** - * Holds if this element is at the specified location. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `filepath`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ - abstract predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ); -} - -class DbLocationImpl extends LocationImpl instanceof DbLocation { - override File getFile() { result = DbLocation.super.getFile() } - - override int getStartLine() { result = DbLocation.super.getStartLine() } - - override int getStartColumn() { result = DbLocation.super.getStartColumn() } - - override int getEndLine() { result = DbLocation.super.getEndLine() } - - override int getEndColumn() { result = DbLocation.super.getEndColumn() } - - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - DbLocation.super.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } -} - -class SynthLocationImpl extends LocationImpl, TSynthLocation { - override File getFile() { synthLocationInfo(this, result.getAbsolutePath(), _, _, _, _) } - - override int getStartLine() { synthLocationInfo(this, _, result, _, _, _) } - - override int getStartColumn() { synthLocationInfo(this, _, _, result, _, _) } - - override int getEndLine() { synthLocationInfo(this, _, _, _, result, _) } - - override int getEndColumn() { synthLocationInfo(this, _, _, _, _, result) } - - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - synthLocationInfo(this, filepath, startline, startcolumn, endline, endcolumn) - } -} - -cached -private module Cached { - cached - DbLocation getLocatableLocation(@locatable l) { - exists(@location loc | - hasLocation(l, loc) or - xmllocations(l, loc) or - json_locations(l, loc) or - yaml_locations(l, loc) - | - result = TDbLocation(loc) - ) - } - - cached - predicate dbLocationInfo( - DbLocation l, File f, int startline, int startcolumn, int endline, int endcolumn - ) { - exists(@location loc | - l = TDbLocation(loc) and - locations_default(loc, f, startline, startcolumn, endline, endcolumn) - ) - } -} - -import Cached - -cached -private module CachedInDataFlowStage { - private import semmle.javascript.internal.CachedStages - - cached - predicate synthLocationInfo( - SynthLocationImpl l, string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - Stages::DataFlowStage::ref() and - l = TSynthLocation(filepath, startline, startcolumn, endline, endcolumn) - } -} - -private import CachedInDataFlowStage From 4a687a12220d75ea1a1c07f5acfc39c33d0f530d Mon Sep 17 00:00:00 2001 From: Asger F Date: Wed, 27 Aug 2025 11:21:18 +0200 Subject: [PATCH 2/4] JS: Add deprecated alias The old DbLocation class was public, hence the alias --- javascript/ql/lib/semmle/javascript/Locations.qll | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/javascript/ql/lib/semmle/javascript/Locations.qll b/javascript/ql/lib/semmle/javascript/Locations.qll index a36e7807e5d5..a3ad79ef93ea 100644 --- a/javascript/ql/lib/semmle/javascript/Locations.qll +++ b/javascript/ql/lib/semmle/javascript/Locations.qll @@ -149,3 +149,8 @@ class Locatable extends @locatable { */ string getAPrimaryQlClass() { result = "???" } } + +/** + * DEPRECATED. Use `Location` instead. + */ +deprecated class DbLocation = Location; From d117c52d2fd8df48eb264c521f7e1a6ea129a7fb Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 28 Aug 2025 11:35:15 +0200 Subject: [PATCH 3/4] JS: Use the LHS as the location for SsaExplicitDefinition --- javascript/ql/lib/semmle/javascript/SSA.qll | 17 +++++++++++------ .../javascript/internal/BasicBlockInternal.qll | 12 ++++++++---- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/SSA.qll b/javascript/ql/lib/semmle/javascript/SSA.qll index 43619307c266..a2c5bf1d34e6 100644 --- a/javascript/ql/lib/semmle/javascript/SSA.qll +++ b/javascript/ql/lib/semmle/javascript/SSA.qll @@ -108,8 +108,8 @@ private module Internal { */ cached newtype TSsaDefinition = - TExplicitDef(ReachableBasicBlock bb, int i, VarDef d, SsaSourceVariable v) { - bb.defAt(i, v, d) and + TExplicitDef(ReachableBasicBlock bb, int i, VarDef d, SsaSourceVariable v, VarRef lhs) { + bb.defAt(i, v, d, lhs) and ( liveAfterDef(bb, i, v) or v.isCaptured() @@ -509,19 +509,22 @@ class SsaDefinition extends TSsaDefinition { */ class SsaExplicitDefinition extends SsaDefinition, TExplicitDef { override predicate definesAt(ReachableBasicBlock bb, int i, SsaSourceVariable v) { - this = TExplicitDef(bb, i, _, v) + this = TExplicitDef(bb, i, _, v, _) } /** This SSA definition corresponds to the definition of `v` at `def`. */ - predicate defines(VarDef def, SsaSourceVariable v) { this = TExplicitDef(_, _, def, v) } + predicate defines(VarDef def, SsaSourceVariable v) { this = TExplicitDef(_, _, def, v, _) } /** Gets the variable definition wrapped by this SSA definition. */ - VarDef getDef() { this = TExplicitDef(_, _, result, _) } + VarDef getDef() { this = TExplicitDef(_, _, result, _, _) } + + /** Gets the variable reference appearing on the left-hand side of this assignment. */ + VarRef getLhs() { this = TExplicitDef(_, _, _, _, result) } /** Gets the basic block to which this definition belongs. */ override ReachableBasicBlock getBasicBlock() { this.definesAt(result, _, _) } - override SsaSourceVariable getSourceVariable() { this = TExplicitDef(_, _, _, result) } + override SsaSourceVariable getSourceVariable() { this = TExplicitDef(_, _, _, result, _) } override VarDef getAContributingVarDef() { result = this.getDef() } @@ -533,6 +536,8 @@ class SsaExplicitDefinition extends SsaDefinition, TExplicitDef { override string prettyPrintDef() { result = this.getDef().toString() } + override Location getLocation() { result = this.getLhs().getLocation() } + /** * Gets the data flow node representing the incoming value assigned at this definition, * if any. diff --git a/javascript/ql/lib/semmle/javascript/internal/BasicBlockInternal.qll b/javascript/ql/lib/semmle/javascript/internal/BasicBlockInternal.qll index c7ad2a1ada81..3d71310ee36c 100644 --- a/javascript/ql/lib/semmle/javascript/internal/BasicBlockInternal.qll +++ b/javascript/ql/lib/semmle/javascript/internal/BasicBlockInternal.qll @@ -67,11 +67,12 @@ private module Cached { } cached - predicate defAt(BasicBlock bb, int i, Variable v, VarDef d) { - exists(VarRef lhs | + predicate defAt(BasicBlock bb, int i, Variable v, VarDef d, VarRef lhs) { + ( lhs = d.getTarget().(BindingPattern).getABindingVarRef() and v = lhs.getVariable() - | + ) and + ( lhs = d.getTarget() and bbIndex(bb, d, i) or @@ -148,7 +149,10 @@ module Public { predicate useAt(int i, Variable v, VarUse u) { useAt(this, i, v, u) } /** Holds if this basic block defines variable `v` in its `i`th node `d`. */ - predicate defAt(int i, Variable v, VarDef d) { defAt(this, i, v, d) } + predicate defAt(int i, Variable v, VarDef d) { defAt(this, i, v, d, _) } + + /** Holds if this basic block defines variable `v` in its `i`th node `d`, and `lhs` is the corresponding variable reference. */ + predicate defAt(int i, Variable v, VarDef d, VarRef lhs) { defAt(this, i, v, d, lhs) } /** * Holds if `v` is live at entry to this basic block and `u` is a use of `v` From cc8fe1080175c0bfa25463c3f82779ab8536f276 Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 28 Aug 2025 13:08:12 +0200 Subject: [PATCH 4/4] JS: Update locations in expected files --- .../FormParsers/RemoteFlowSource.expected | 36 +- .../CWE-094-dataURL/CodeInjection.expected | 28 +- .../EnvValueAndKeyInjection.expected | 28 +- .../EnvValueInjection.expected | 10 +- ...JwtWithoutVerificationLocalSource.expected | 84 +- .../decodeJwtWithoutVerification.expected | 56 +- .../Security/CWE-918/SSRF.expected | 12 +- .../CorsPermissiveConfiguration.expected | 18 +- .../CallGraphs/FullTest/tests.expected | 10 +- .../library-tests/DataFlow/tests.expected | 442 +++++----- .../library-tests/DefUse/DefUsePair.expected | 20 +- .../GlobalAccessPaths.expected | 14 +- .../SSA/GetRhsNode/GetRhsNode.expected | 28 +- .../SSA/SSADefinition/SSADefinition.expected | 50 +- .../StringConcatenation/StringOps.expected | 90 +- .../frameworks/Electron/tests.expected | 6 +- .../frameworks/ReactJS/tests.expected | 4 +- .../frameworks/koa/tests.expected | 4 +- .../UntrustedDataToExternalAPI.expected | 30 +- .../CWE-022/TaintedPath/TaintedPath.expected | 780 +++++++++--------- .../Security/CWE-022/ZipSlip/ZipSlip.expected | 30 +- .../CWE-073/TemplateObjectInjection.expected | 50 +- .../CommandInjection.expected | 228 ++--- .../IndirectCommandInjection.expected | 162 ++-- .../SecondOrderCommandInjection.expected | 18 +- .../UnsafeShellCommandConstruction.expected | 18 +- .../Security/CWE-079/DomBasedXss/Xss.expected | 548 ++++++------ .../XssWithAdditionalSources.expected | 572 ++++++------- .../Xss.expected | 114 +-- .../ExceptionXss/ExceptionXss.expected | 32 +- .../ReflectedXss/ReflectedXss.expected | 266 +++--- .../CWE-079/StoredXss/StoredXss.expected | 12 +- .../UnsafeHtmlConstruction.expected | 24 +- .../UnsafeJQueryPlugin.expected | 42 +- .../XssThroughDom/XssThroughDom.expected | 54 +- .../local-threat-source/SqlInjection.expected | 6 +- .../CWE-089/typed/SqlInjection.expected | 14 +- .../CWE-089/untyped/SqlInjection.expected | 438 +++++----- .../CodeInjection/CodeInjection.expected | 168 ++-- .../HeuristicSourceCodeInjection.expected | 168 ++-- .../ImproperCodeSanitization.expected | 6 +- .../UnsafeDynamicMethodAccess.expected | 18 +- ...completeHtmlAttributeSanitization.expected | 6 +- .../Security/CWE-117/LogInjection.expected | 88 +- .../CWE-200/FileAccessToHttp.expected | 82 +- .../CWE-312/BuildArtifactLeak.expected | 18 +- .../CWE-312/CleartextLogging.expected | 58 +- .../CWE-312/CleartextStorage.expected | 12 +- .../CWE-327/BrokenCryptoAlgorithm.expected | 8 +- .../CWE-338/InsecureRandomness.expected | 30 +- ...orsMisconfigurationForCredentials.expected | 6 +- .../CWE-377/InsecureTemporaryFile.expected | 22 +- .../CWE-400/ReDoS/PolynomialReDoS.expected | 352 ++++---- .../RemotePropertyInjection.expected | 24 +- .../HardcodedDataInterpretedAsCode.expected | 12 +- .../DecompressionBombs.expected | 24 +- .../ClientSideUrlRedirect.expected | 156 ++-- .../ServerSideUrlRedirect.expected | 80 +- .../query-tests/Security/CWE-611/Xxe.expected | 8 +- .../Security/CWE-643/XpathInjection.expected | 18 +- .../RegExpInjection.expected | 60 +- .../RegExpInjection.expected | 18 +- .../UnvalidatedDynamicMethodCall.expected | 70 +- .../ResourceExhaustion.expected | 54 +- .../Security/CWE-776/XmlBomb.expected | 22 +- .../CWE-798/HardcodedCredentials.expected | 118 +-- .../CWE-807/ConditionalBypass.expected | 6 +- .../CWE-829/InsecureDownload.expected | 8 +- ...onfusionThroughParameterTampering.expected | 44 +- .../PrototypePollutingAssignment.expected | 96 +-- .../PrototypePollutingFunction.expected | 232 +++--- .../PrototypePollutingMergeCall.expected | 6 +- .../CWE-918/ClientSideRequestForgery.expected | 18 +- .../Security/CWE-918/RequestForgery.expected | 178 ++-- .../Local data flow/query1.expected | 2 +- 75 files changed, 3337 insertions(+), 3337 deletions(-) diff --git a/javascript/ql/test/experimental/FormParsers/RemoteFlowSource.expected b/javascript/ql/test/experimental/FormParsers/RemoteFlowSource.expected index 4cd0cf233782..1d53bbb1b25c 100644 --- a/javascript/ql/test/experimental/FormParsers/RemoteFlowSource.expected +++ b/javascript/ql/test/experimental/FormParsers/RemoteFlowSource.expected @@ -1,17 +1,17 @@ edges | busybus.js:9:30:9:33 | file | busybus.js:13:23:13:23 | z | provenance | | | busybus.js:9:36:9:39 | info | busybus.js:10:54:10:57 | info | provenance | | -| busybus.js:10:19:10:50 | { filen ... eType } | busybus.js:10:19:10:57 | encoding | provenance | | -| busybus.js:10:19:10:50 | { filen ... eType } | busybus.js:10:19:10:57 | filename | provenance | | -| busybus.js:10:19:10:50 | { filen ... eType } | busybus.js:10:19:10:57 | mimeType | provenance | | -| busybus.js:10:19:10:57 | encoding | busybus.js:12:28:12:35 | encoding | provenance | | -| busybus.js:10:19:10:57 | filename | busybus.js:12:18:12:25 | filename | provenance | | -| busybus.js:10:19:10:57 | mimeType | busybus.js:12:38:12:45 | mimeType | provenance | | +| busybus.js:10:19:10:50 | { filen ... eType } | busybus.js:10:21:10:28 | filename | provenance | | +| busybus.js:10:19:10:50 | { filen ... eType } | busybus.js:10:31:10:38 | encoding | provenance | | +| busybus.js:10:19:10:50 | { filen ... eType } | busybus.js:10:41:10:48 | mimeType | provenance | | +| busybus.js:10:21:10:28 | filename | busybus.js:12:18:12:25 | filename | provenance | | +| busybus.js:10:31:10:38 | encoding | busybus.js:12:28:12:35 | encoding | provenance | | +| busybus.js:10:41:10:48 | mimeType | busybus.js:12:38:12:45 | mimeType | provenance | | | busybus.js:10:54:10:57 | info | busybus.js:10:19:10:50 | { filen ... eType } | provenance | | | busybus.js:13:23:13:23 | z | busybus.js:13:31:13:36 | sink() | provenance | | | busybus.js:15:30:15:33 | data | busybus.js:16:22:16:25 | data | provenance | | -| busybus.js:22:25:22:42 | data | busybus.js:23:26:23:29 | data | provenance | | -| busybus.js:22:32:22:42 | this.read() | busybus.js:22:25:22:42 | data | provenance | | +| busybus.js:22:25:22:28 | data | busybus.js:23:26:23:29 | data | provenance | | +| busybus.js:22:32:22:42 | this.read() | busybus.js:22:25:22:28 | data | provenance | | | busybus.js:27:25:27:28 | name | busybus.js:28:18:28:21 | name | provenance | | | busybus.js:27:31:27:33 | val | busybus.js:28:24:28:26 | val | provenance | | | busybus.js:27:36:27:39 | info | busybus.js:28:29:28:32 | info | provenance | | @@ -19,10 +19,10 @@ edges | dicer.js:14:28:14:33 | header | dicer.js:16:22:16:27 | header | provenance | | | dicer.js:16:22:16:27 | header | dicer.js:16:22:16:30 | header[h] | provenance | | | dicer.js:19:26:19:29 | data | dicer.js:20:18:20:21 | data | provenance | | -| formidable.js:7:11:7:25 | [fields, files] | formidable.js:7:11:7:49 | fields | provenance | | -| formidable.js:7:11:7:25 | [fields, files] | formidable.js:7:11:7:49 | files | provenance | | -| formidable.js:7:11:7:49 | fields | formidable.js:8:10:8:15 | fields | provenance | | -| formidable.js:7:11:7:49 | files | formidable.js:8:18:8:22 | files | provenance | | +| formidable.js:7:11:7:25 | [fields, files] | formidable.js:7:12:7:17 | fields | provenance | | +| formidable.js:7:11:7:25 | [fields, files] | formidable.js:7:20:7:24 | files | provenance | | +| formidable.js:7:12:7:17 | fields | formidable.js:8:10:8:15 | fields | provenance | | +| formidable.js:7:20:7:24 | files | formidable.js:8:18:8:22 | files | provenance | | | formidable.js:7:29:7:49 | await f ... se(req) | formidable.js:7:11:7:25 | [fields, files] | provenance | | | formidable.js:7:35:7:49 | form.parse(req) | formidable.js:7:29:7:49 | await f ... se(req) | provenance | | | formidable.js:9:27:9:34 | formname | formidable.js:10:14:10:21 | formname | provenance | | @@ -39,9 +39,9 @@ nodes | busybus.js:9:30:9:33 | file | semmle.label | file | | busybus.js:9:36:9:39 | info | semmle.label | info | | busybus.js:10:19:10:50 | { filen ... eType } | semmle.label | { filen ... eType } | -| busybus.js:10:19:10:57 | encoding | semmle.label | encoding | -| busybus.js:10:19:10:57 | filename | semmle.label | filename | -| busybus.js:10:19:10:57 | mimeType | semmle.label | mimeType | +| busybus.js:10:21:10:28 | filename | semmle.label | filename | +| busybus.js:10:31:10:38 | encoding | semmle.label | encoding | +| busybus.js:10:41:10:48 | mimeType | semmle.label | mimeType | | busybus.js:10:54:10:57 | info | semmle.label | info | | busybus.js:12:18:12:25 | filename | semmle.label | filename | | busybus.js:12:28:12:35 | encoding | semmle.label | encoding | @@ -50,7 +50,7 @@ nodes | busybus.js:13:31:13:36 | sink() | semmle.label | sink() | | busybus.js:15:30:15:33 | data | semmle.label | data | | busybus.js:16:22:16:25 | data | semmle.label | data | -| busybus.js:22:25:22:42 | data | semmle.label | data | +| busybus.js:22:25:22:28 | data | semmle.label | data | | busybus.js:22:32:22:42 | this.read() | semmle.label | this.read() | | busybus.js:23:26:23:29 | data | semmle.label | data | | busybus.js:27:25:27:28 | name | semmle.label | name | @@ -67,8 +67,8 @@ nodes | dicer.js:19:26:19:29 | data | semmle.label | data | | dicer.js:20:18:20:21 | data | semmle.label | data | | formidable.js:7:11:7:25 | [fields, files] | semmle.label | [fields, files] | -| formidable.js:7:11:7:49 | fields | semmle.label | fields | -| formidable.js:7:11:7:49 | files | semmle.label | files | +| formidable.js:7:12:7:17 | fields | semmle.label | fields | +| formidable.js:7:20:7:24 | files | semmle.label | files | | formidable.js:7:29:7:49 | await f ... se(req) | semmle.label | await f ... se(req) | | formidable.js:7:35:7:49 | form.parse(req) | semmle.label | form.parse(req) | | formidable.js:8:10:8:15 | fields | semmle.label | fields | diff --git a/javascript/ql/test/experimental/Security/CWE-094-dataURL/CodeInjection.expected b/javascript/ql/test/experimental/Security/CWE-094-dataURL/CodeInjection.expected index ab162e0b3114..0385389e73c1 100644 --- a/javascript/ql/test/experimental/Security/CWE-094-dataURL/CodeInjection.expected +++ b/javascript/ql/test/experimental/Security/CWE-094-dataURL/CodeInjection.expected @@ -1,33 +1,33 @@ edges -| test.js:5:11:5:44 | payload | test.js:6:30:6:36 | payload | provenance | | -| test.js:5:11:5:44 | payload | test.js:9:26:9:32 | payload | provenance | | -| test.js:5:21:5:44 | req.que ... rameter | test.js:5:11:5:44 | payload | provenance | | -| test.js:6:9:6:43 | payloadURL | test.js:7:16:7:25 | payloadURL | provenance | | -| test.js:6:22:6:43 | new URL ... + sth) | test.js:6:9:6:43 | payloadURL | provenance | | +| test.js:5:11:5:17 | payload | test.js:6:30:6:36 | payload | provenance | | +| test.js:5:11:5:17 | payload | test.js:9:26:9:32 | payload | provenance | | +| test.js:5:21:5:44 | req.que ... rameter | test.js:5:11:5:17 | payload | provenance | | +| test.js:6:9:6:18 | payloadURL | test.js:7:16:7:25 | payloadURL | provenance | | +| test.js:6:22:6:43 | new URL ... + sth) | test.js:6:9:6:18 | payloadURL | provenance | | | test.js:6:30:6:36 | payload | test.js:6:30:6:42 | payload + sth | provenance | | | test.js:6:30:6:42 | payload + sth | test.js:6:22:6:43 | new URL ... + sth) | provenance | Config | -| test.js:9:5:9:39 | payloadURL | test.js:10:16:10:25 | payloadURL | provenance | | -| test.js:9:18:9:39 | new URL ... + sth) | test.js:9:5:9:39 | payloadURL | provenance | | +| test.js:9:5:9:14 | payloadURL | test.js:10:16:10:25 | payloadURL | provenance | | +| test.js:9:18:9:39 | new URL ... + sth) | test.js:9:5:9:14 | payloadURL | provenance | | | test.js:9:26:9:32 | payload | test.js:9:26:9:38 | payload + sth | provenance | | | test.js:9:26:9:38 | payload + sth | test.js:9:18:9:39 | new URL ... + sth) | provenance | Config | -| test.js:17:11:17:44 | payload | test.js:18:18:18:24 | payload | provenance | | -| test.js:17:11:17:44 | payload | test.js:19:18:19:24 | payload | provenance | | -| test.js:17:21:17:44 | req.que ... rameter | test.js:17:11:17:44 | payload | provenance | | +| test.js:17:11:17:17 | payload | test.js:18:18:18:24 | payload | provenance | | +| test.js:17:11:17:17 | payload | test.js:19:18:19:24 | payload | provenance | | +| test.js:17:21:17:44 | req.que ... rameter | test.js:17:11:17:17 | payload | provenance | | | test.js:19:18:19:24 | payload | test.js:19:18:19:30 | payload + sth | provenance | | nodes -| test.js:5:11:5:44 | payload | semmle.label | payload | +| test.js:5:11:5:17 | payload | semmle.label | payload | | test.js:5:21:5:44 | req.que ... rameter | semmle.label | req.que ... rameter | -| test.js:6:9:6:43 | payloadURL | semmle.label | payloadURL | +| test.js:6:9:6:18 | payloadURL | semmle.label | payloadURL | | test.js:6:22:6:43 | new URL ... + sth) | semmle.label | new URL ... + sth) | | test.js:6:30:6:36 | payload | semmle.label | payload | | test.js:6:30:6:42 | payload + sth | semmle.label | payload + sth | | test.js:7:16:7:25 | payloadURL | semmle.label | payloadURL | -| test.js:9:5:9:39 | payloadURL | semmle.label | payloadURL | +| test.js:9:5:9:14 | payloadURL | semmle.label | payloadURL | | test.js:9:18:9:39 | new URL ... + sth) | semmle.label | new URL ... + sth) | | test.js:9:26:9:32 | payload | semmle.label | payload | | test.js:9:26:9:38 | payload + sth | semmle.label | payload + sth | | test.js:10:16:10:25 | payloadURL | semmle.label | payloadURL | -| test.js:17:11:17:44 | payload | semmle.label | payload | +| test.js:17:11:17:17 | payload | semmle.label | payload | | test.js:17:21:17:44 | req.que ... rameter | semmle.label | req.que ... rameter | | test.js:18:18:18:24 | payload | semmle.label | payload | | test.js:19:18:19:24 | payload | semmle.label | payload | diff --git a/javascript/ql/test/experimental/Security/CWE-099/EnvValueAndKeyInjection/EnvValueAndKeyInjection.expected b/javascript/ql/test/experimental/Security/CWE-099/EnvValueAndKeyInjection/EnvValueAndKeyInjection.expected index 40313cf964c9..d54685c97bef 100644 --- a/javascript/ql/test/experimental/Security/CWE-099/EnvValueAndKeyInjection/EnvValueAndKeyInjection.expected +++ b/javascript/ql/test/experimental/Security/CWE-099/EnvValueAndKeyInjection/EnvValueAndKeyInjection.expected @@ -1,28 +1,28 @@ edges -| test.js:5:9:5:28 | { EnvValue, EnvKey } | test.js:5:9:5:39 | EnvKey | provenance | | -| test.js:5:9:5:28 | { EnvValue, EnvKey } | test.js:5:9:5:39 | EnvValue | provenance | | -| test.js:5:9:5:39 | EnvKey | test.js:6:15:6:20 | EnvKey | provenance | | -| test.js:5:9:5:39 | EnvKey | test.js:7:15:7:20 | EnvKey | provenance | | -| test.js:5:9:5:39 | EnvValue | test.js:6:25:6:32 | EnvValue | provenance | | -| test.js:5:9:5:39 | EnvValue | test.js:7:25:7:32 | EnvValue | provenance | | +| test.js:5:9:5:28 | { EnvValue, EnvKey } | test.js:5:11:5:18 | EnvValue | provenance | | +| test.js:5:9:5:28 | { EnvValue, EnvKey } | test.js:5:21:5:26 | EnvKey | provenance | | +| test.js:5:11:5:18 | EnvValue | test.js:6:25:6:32 | EnvValue | provenance | | +| test.js:5:11:5:18 | EnvValue | test.js:7:25:7:32 | EnvValue | provenance | | +| test.js:5:21:5:26 | EnvKey | test.js:6:15:6:20 | EnvKey | provenance | | +| test.js:5:21:5:26 | EnvKey | test.js:7:15:7:20 | EnvKey | provenance | | | test.js:5:32:5:39 | req.body | test.js:5:9:5:28 | { EnvValue, EnvKey } | provenance | | -| test.js:13:9:13:28 | { EnvValue, EnvKey } | test.js:13:9:13:39 | EnvKey | provenance | | -| test.js:13:9:13:28 | { EnvValue, EnvKey } | test.js:13:9:13:39 | EnvValue | provenance | | -| test.js:13:9:13:39 | EnvKey | test.js:15:15:15:20 | EnvKey | provenance | | -| test.js:13:9:13:39 | EnvValue | test.js:16:26:16:33 | EnvValue | provenance | | +| test.js:13:9:13:28 | { EnvValue, EnvKey } | test.js:13:11:13:18 | EnvValue | provenance | | +| test.js:13:9:13:28 | { EnvValue, EnvKey } | test.js:13:21:13:26 | EnvKey | provenance | | +| test.js:13:11:13:18 | EnvValue | test.js:16:26:16:33 | EnvValue | provenance | | +| test.js:13:21:13:26 | EnvKey | test.js:15:15:15:20 | EnvKey | provenance | | | test.js:13:32:13:39 | req.body | test.js:13:9:13:28 | { EnvValue, EnvKey } | provenance | | nodes | test.js:5:9:5:28 | { EnvValue, EnvKey } | semmle.label | { EnvValue, EnvKey } | -| test.js:5:9:5:39 | EnvKey | semmle.label | EnvKey | -| test.js:5:9:5:39 | EnvValue | semmle.label | EnvValue | +| test.js:5:11:5:18 | EnvValue | semmle.label | EnvValue | +| test.js:5:21:5:26 | EnvKey | semmle.label | EnvKey | | test.js:5:32:5:39 | req.body | semmle.label | req.body | | test.js:6:15:6:20 | EnvKey | semmle.label | EnvKey | | test.js:6:25:6:32 | EnvValue | semmle.label | EnvValue | | test.js:7:15:7:20 | EnvKey | semmle.label | EnvKey | | test.js:7:25:7:32 | EnvValue | semmle.label | EnvValue | | test.js:13:9:13:28 | { EnvValue, EnvKey } | semmle.label | { EnvValue, EnvKey } | -| test.js:13:9:13:39 | EnvKey | semmle.label | EnvKey | -| test.js:13:9:13:39 | EnvValue | semmle.label | EnvValue | +| test.js:13:11:13:18 | EnvValue | semmle.label | EnvValue | +| test.js:13:21:13:26 | EnvKey | semmle.label | EnvKey | | test.js:13:32:13:39 | req.body | semmle.label | req.body | | test.js:15:15:15:20 | EnvKey | semmle.label | EnvKey | | test.js:16:26:16:33 | EnvValue | semmle.label | EnvValue | diff --git a/javascript/ql/test/experimental/Security/CWE-099/EnvValueInjection/EnvValueInjection.expected b/javascript/ql/test/experimental/Security/CWE-099/EnvValueInjection/EnvValueInjection.expected index 87f6e5d4b86b..5ba1884017f6 100644 --- a/javascript/ql/test/experimental/Security/CWE-099/EnvValueInjection/EnvValueInjection.expected +++ b/javascript/ql/test/experimental/Security/CWE-099/EnvValueInjection/EnvValueInjection.expected @@ -1,12 +1,12 @@ edges -| test.js:4:9:4:20 | { EnvValue } | test.js:4:9:4:31 | EnvValue | provenance | | -| test.js:4:9:4:31 | EnvValue | test.js:5:35:5:42 | EnvValue | provenance | | -| test.js:4:9:4:31 | EnvValue | test.js:6:23:6:30 | EnvValue | provenance | | -| test.js:4:9:4:31 | EnvValue | test.js:7:22:7:29 | EnvValue | provenance | | +| test.js:4:9:4:20 | { EnvValue } | test.js:4:11:4:18 | EnvValue | provenance | | +| test.js:4:11:4:18 | EnvValue | test.js:5:35:5:42 | EnvValue | provenance | | +| test.js:4:11:4:18 | EnvValue | test.js:6:23:6:30 | EnvValue | provenance | | +| test.js:4:11:4:18 | EnvValue | test.js:7:22:7:29 | EnvValue | provenance | | | test.js:4:24:4:31 | req.body | test.js:4:9:4:20 | { EnvValue } | provenance | | nodes | test.js:4:9:4:20 | { EnvValue } | semmle.label | { EnvValue } | -| test.js:4:9:4:31 | EnvValue | semmle.label | EnvValue | +| test.js:4:11:4:18 | EnvValue | semmle.label | EnvValue | | test.js:4:24:4:31 | req.body | semmle.label | req.body | | test.js:5:35:5:42 | EnvValue | semmle.label | EnvValue | | test.js:6:23:6:30 | EnvValue | semmle.label | EnvValue | diff --git a/javascript/ql/test/experimental/Security/CWE-347/localsource/decodeJwtWithoutVerificationLocalSource.expected b/javascript/ql/test/experimental/Security/CWE-347/localsource/decodeJwtWithoutVerificationLocalSource.expected index 0f67cfc85132..09db119d0786 100644 --- a/javascript/ql/test/experimental/Security/CWE-347/localsource/decodeJwtWithoutVerificationLocalSource.expected +++ b/javascript/ql/test/experimental/Security/CWE-347/localsource/decodeJwtWithoutVerificationLocalSource.expected @@ -1,74 +1,74 @@ edges -| JsonWebToken.js:13:11:13:28 | UserToken | JsonWebToken.js:16:28:16:36 | UserToken | provenance | | -| JsonWebToken.js:13:23:13:28 | aJwt() | JsonWebToken.js:13:11:13:28 | UserToken | provenance | | -| JsonWebToken.js:20:11:20:28 | UserToken | JsonWebToken.js:23:28:23:36 | UserToken | provenance | | -| JsonWebToken.js:20:11:20:28 | UserToken | JsonWebToken.js:24:28:24:36 | UserToken | provenance | | -| JsonWebToken.js:20:23:20:28 | aJwt() | JsonWebToken.js:20:11:20:28 | UserToken | provenance | | -| JsonWebToken.js:28:11:28:28 | UserToken | JsonWebToken.js:31:28:31:36 | UserToken | provenance | | -| JsonWebToken.js:28:23:28:28 | aJwt() | JsonWebToken.js:28:11:28:28 | UserToken | provenance | | -| JsonWebToken.js:35:11:35:28 | UserToken | JsonWebToken.js:38:28:38:36 | UserToken | provenance | | -| JsonWebToken.js:35:11:35:28 | UserToken | JsonWebToken.js:39:28:39:36 | UserToken | provenance | | -| JsonWebToken.js:35:23:35:28 | aJwt() | JsonWebToken.js:35:11:35:28 | UserToken | provenance | | -| JsonWebToken.js:43:11:43:28 | UserToken | JsonWebToken.js:46:28:46:36 | UserToken | provenance | | -| JsonWebToken.js:43:11:43:28 | UserToken | JsonWebToken.js:47:28:47:36 | UserToken | provenance | | -| JsonWebToken.js:43:23:43:28 | aJwt() | JsonWebToken.js:43:11:43:28 | UserToken | provenance | | -| jose.js:12:11:12:28 | UserToken | jose.js:15:20:15:28 | UserToken | provenance | | -| jose.js:12:23:12:28 | aJwt() | jose.js:12:11:12:28 | UserToken | provenance | | -| jose.js:19:11:19:28 | UserToken | jose.js:22:20:22:28 | UserToken | provenance | | -| jose.js:19:11:19:28 | UserToken | jose.js:23:26:23:34 | UserToken | provenance | | -| jose.js:19:23:19:28 | aJwt() | jose.js:19:11:19:28 | UserToken | provenance | | -| jose.js:27:11:27:28 | UserToken | jose.js:30:26:30:34 | UserToken | provenance | | -| jose.js:27:23:27:28 | aJwt() | jose.js:27:11:27:28 | UserToken | provenance | | -| jwtDecode.js:13:11:13:28 | UserToken | jwtDecode.js:17:16:17:24 | UserToken | provenance | | -| jwtDecode.js:13:23:13:28 | aJwt() | jwtDecode.js:13:11:13:28 | UserToken | provenance | | -| jwtSimple.js:13:11:13:28 | UserToken | jwtSimple.js:16:23:16:31 | UserToken | provenance | | -| jwtSimple.js:13:23:13:28 | aJwt() | jwtSimple.js:13:11:13:28 | UserToken | provenance | | -| jwtSimple.js:20:11:20:28 | UserToken | jwtSimple.js:23:23:23:31 | UserToken | provenance | | -| jwtSimple.js:20:11:20:28 | UserToken | jwtSimple.js:24:23:24:31 | UserToken | provenance | | -| jwtSimple.js:20:23:20:28 | aJwt() | jwtSimple.js:20:11:20:28 | UserToken | provenance | | -| jwtSimple.js:28:11:28:28 | UserToken | jwtSimple.js:31:23:31:31 | UserToken | provenance | | -| jwtSimple.js:28:11:28:28 | UserToken | jwtSimple.js:32:23:32:31 | UserToken | provenance | | -| jwtSimple.js:28:23:28:28 | aJwt() | jwtSimple.js:28:11:28:28 | UserToken | provenance | | +| JsonWebToken.js:13:11:13:19 | UserToken | JsonWebToken.js:16:28:16:36 | UserToken | provenance | | +| JsonWebToken.js:13:23:13:28 | aJwt() | JsonWebToken.js:13:11:13:19 | UserToken | provenance | | +| JsonWebToken.js:20:11:20:19 | UserToken | JsonWebToken.js:23:28:23:36 | UserToken | provenance | | +| JsonWebToken.js:20:11:20:19 | UserToken | JsonWebToken.js:24:28:24:36 | UserToken | provenance | | +| JsonWebToken.js:20:23:20:28 | aJwt() | JsonWebToken.js:20:11:20:19 | UserToken | provenance | | +| JsonWebToken.js:28:11:28:19 | UserToken | JsonWebToken.js:31:28:31:36 | UserToken | provenance | | +| JsonWebToken.js:28:23:28:28 | aJwt() | JsonWebToken.js:28:11:28:19 | UserToken | provenance | | +| JsonWebToken.js:35:11:35:19 | UserToken | JsonWebToken.js:38:28:38:36 | UserToken | provenance | | +| JsonWebToken.js:35:11:35:19 | UserToken | JsonWebToken.js:39:28:39:36 | UserToken | provenance | | +| JsonWebToken.js:35:23:35:28 | aJwt() | JsonWebToken.js:35:11:35:19 | UserToken | provenance | | +| JsonWebToken.js:43:11:43:19 | UserToken | JsonWebToken.js:46:28:46:36 | UserToken | provenance | | +| JsonWebToken.js:43:11:43:19 | UserToken | JsonWebToken.js:47:28:47:36 | UserToken | provenance | | +| JsonWebToken.js:43:23:43:28 | aJwt() | JsonWebToken.js:43:11:43:19 | UserToken | provenance | | +| jose.js:12:11:12:19 | UserToken | jose.js:15:20:15:28 | UserToken | provenance | | +| jose.js:12:23:12:28 | aJwt() | jose.js:12:11:12:19 | UserToken | provenance | | +| jose.js:19:11:19:19 | UserToken | jose.js:22:20:22:28 | UserToken | provenance | | +| jose.js:19:11:19:19 | UserToken | jose.js:23:26:23:34 | UserToken | provenance | | +| jose.js:19:23:19:28 | aJwt() | jose.js:19:11:19:19 | UserToken | provenance | | +| jose.js:27:11:27:19 | UserToken | jose.js:30:26:30:34 | UserToken | provenance | | +| jose.js:27:23:27:28 | aJwt() | jose.js:27:11:27:19 | UserToken | provenance | | +| jwtDecode.js:13:11:13:19 | UserToken | jwtDecode.js:17:16:17:24 | UserToken | provenance | | +| jwtDecode.js:13:23:13:28 | aJwt() | jwtDecode.js:13:11:13:19 | UserToken | provenance | | +| jwtSimple.js:13:11:13:19 | UserToken | jwtSimple.js:16:23:16:31 | UserToken | provenance | | +| jwtSimple.js:13:23:13:28 | aJwt() | jwtSimple.js:13:11:13:19 | UserToken | provenance | | +| jwtSimple.js:20:11:20:19 | UserToken | jwtSimple.js:23:23:23:31 | UserToken | provenance | | +| jwtSimple.js:20:11:20:19 | UserToken | jwtSimple.js:24:23:24:31 | UserToken | provenance | | +| jwtSimple.js:20:23:20:28 | aJwt() | jwtSimple.js:20:11:20:19 | UserToken | provenance | | +| jwtSimple.js:28:11:28:19 | UserToken | jwtSimple.js:31:23:31:31 | UserToken | provenance | | +| jwtSimple.js:28:11:28:19 | UserToken | jwtSimple.js:32:23:32:31 | UserToken | provenance | | +| jwtSimple.js:28:23:28:28 | aJwt() | jwtSimple.js:28:11:28:19 | UserToken | provenance | | nodes -| JsonWebToken.js:13:11:13:28 | UserToken | semmle.label | UserToken | +| JsonWebToken.js:13:11:13:19 | UserToken | semmle.label | UserToken | | JsonWebToken.js:13:23:13:28 | aJwt() | semmle.label | aJwt() | | JsonWebToken.js:16:28:16:36 | UserToken | semmle.label | UserToken | -| JsonWebToken.js:20:11:20:28 | UserToken | semmle.label | UserToken | +| JsonWebToken.js:20:11:20:19 | UserToken | semmle.label | UserToken | | JsonWebToken.js:20:23:20:28 | aJwt() | semmle.label | aJwt() | | JsonWebToken.js:23:28:23:36 | UserToken | semmle.label | UserToken | | JsonWebToken.js:24:28:24:36 | UserToken | semmle.label | UserToken | -| JsonWebToken.js:28:11:28:28 | UserToken | semmle.label | UserToken | +| JsonWebToken.js:28:11:28:19 | UserToken | semmle.label | UserToken | | JsonWebToken.js:28:23:28:28 | aJwt() | semmle.label | aJwt() | | JsonWebToken.js:31:28:31:36 | UserToken | semmle.label | UserToken | -| JsonWebToken.js:35:11:35:28 | UserToken | semmle.label | UserToken | +| JsonWebToken.js:35:11:35:19 | UserToken | semmle.label | UserToken | | JsonWebToken.js:35:23:35:28 | aJwt() | semmle.label | aJwt() | | JsonWebToken.js:38:28:38:36 | UserToken | semmle.label | UserToken | | JsonWebToken.js:39:28:39:36 | UserToken | semmle.label | UserToken | -| JsonWebToken.js:43:11:43:28 | UserToken | semmle.label | UserToken | +| JsonWebToken.js:43:11:43:19 | UserToken | semmle.label | UserToken | | JsonWebToken.js:43:23:43:28 | aJwt() | semmle.label | aJwt() | | JsonWebToken.js:46:28:46:36 | UserToken | semmle.label | UserToken | | JsonWebToken.js:47:28:47:36 | UserToken | semmle.label | UserToken | -| jose.js:12:11:12:28 | UserToken | semmle.label | UserToken | +| jose.js:12:11:12:19 | UserToken | semmle.label | UserToken | | jose.js:12:23:12:28 | aJwt() | semmle.label | aJwt() | | jose.js:15:20:15:28 | UserToken | semmle.label | UserToken | -| jose.js:19:11:19:28 | UserToken | semmle.label | UserToken | +| jose.js:19:11:19:19 | UserToken | semmle.label | UserToken | | jose.js:19:23:19:28 | aJwt() | semmle.label | aJwt() | | jose.js:22:20:22:28 | UserToken | semmle.label | UserToken | | jose.js:23:26:23:34 | UserToken | semmle.label | UserToken | -| jose.js:27:11:27:28 | UserToken | semmle.label | UserToken | +| jose.js:27:11:27:19 | UserToken | semmle.label | UserToken | | jose.js:27:23:27:28 | aJwt() | semmle.label | aJwt() | | jose.js:30:26:30:34 | UserToken | semmle.label | UserToken | -| jwtDecode.js:13:11:13:28 | UserToken | semmle.label | UserToken | +| jwtDecode.js:13:11:13:19 | UserToken | semmle.label | UserToken | | jwtDecode.js:13:23:13:28 | aJwt() | semmle.label | aJwt() | | jwtDecode.js:17:16:17:24 | UserToken | semmle.label | UserToken | -| jwtSimple.js:13:11:13:28 | UserToken | semmle.label | UserToken | +| jwtSimple.js:13:11:13:19 | UserToken | semmle.label | UserToken | | jwtSimple.js:13:23:13:28 | aJwt() | semmle.label | aJwt() | | jwtSimple.js:16:23:16:31 | UserToken | semmle.label | UserToken | -| jwtSimple.js:20:11:20:28 | UserToken | semmle.label | UserToken | +| jwtSimple.js:20:11:20:19 | UserToken | semmle.label | UserToken | | jwtSimple.js:20:23:20:28 | aJwt() | semmle.label | aJwt() | | jwtSimple.js:23:23:23:31 | UserToken | semmle.label | UserToken | | jwtSimple.js:24:23:24:31 | UserToken | semmle.label | UserToken | -| jwtSimple.js:28:11:28:28 | UserToken | semmle.label | UserToken | +| jwtSimple.js:28:11:28:19 | UserToken | semmle.label | UserToken | | jwtSimple.js:28:23:28:28 | aJwt() | semmle.label | aJwt() | | jwtSimple.js:31:23:31:31 | UserToken | semmle.label | UserToken | | jwtSimple.js:32:23:32:31 | UserToken | semmle.label | UserToken | diff --git a/javascript/ql/test/experimental/Security/CWE-347/remotesource/decodeJwtWithoutVerification.expected b/javascript/ql/test/experimental/Security/CWE-347/remotesource/decodeJwtWithoutVerification.expected index bb6ca940759f..364fbd76b002 100644 --- a/javascript/ql/test/experimental/Security/CWE-347/remotesource/decodeJwtWithoutVerification.expected +++ b/javascript/ql/test/experimental/Security/CWE-347/remotesource/decodeJwtWithoutVerification.expected @@ -1,50 +1,50 @@ edges -| JsonWebToken.js:10:11:10:47 | UserToken | JsonWebToken.js:13:28:13:36 | UserToken | provenance | | -| JsonWebToken.js:10:23:10:47 | req.hea ... ization | JsonWebToken.js:10:11:10:47 | UserToken | provenance | | -| JsonWebToken.js:17:11:17:47 | UserToken | JsonWebToken.js:20:28:20:36 | UserToken | provenance | | -| JsonWebToken.js:17:11:17:47 | UserToken | JsonWebToken.js:21:28:21:36 | UserToken | provenance | | -| JsonWebToken.js:17:23:17:47 | req.hea ... ization | JsonWebToken.js:17:11:17:47 | UserToken | provenance | | -| JsonWebToken.js:32:11:32:47 | UserToken | JsonWebToken.js:35:28:35:36 | UserToken | provenance | | -| JsonWebToken.js:32:23:32:47 | req.hea ... ization | JsonWebToken.js:32:11:32:47 | UserToken | provenance | | -| JsonWebToken.js:40:11:40:47 | UserToken | JsonWebToken.js:43:28:43:36 | UserToken | provenance | | -| JsonWebToken.js:40:23:40:47 | req.hea ... ization | JsonWebToken.js:40:11:40:47 | UserToken | provenance | | -| jose.js:11:11:11:47 | UserToken | jose.js:13:20:13:28 | UserToken | provenance | | -| jose.js:11:23:11:47 | req.hea ... ization | jose.js:11:11:11:47 | UserToken | provenance | | -| jose.js:24:11:24:47 | UserToken | jose.js:26:20:26:28 | UserToken | provenance | | -| jose.js:24:23:24:47 | req.hea ... ization | jose.js:24:11:24:47 | UserToken | provenance | | -| jwtDecode.js:11:11:11:47 | UserToken | jwtDecode.js:15:16:15:24 | UserToken | provenance | | -| jwtDecode.js:11:23:11:47 | req.hea ... ization | jwtDecode.js:11:11:11:47 | UserToken | provenance | | -| jwtSimple.js:10:11:10:47 | UserToken | jwtSimple.js:13:23:13:31 | UserToken | provenance | | -| jwtSimple.js:10:23:10:47 | req.hea ... ization | jwtSimple.js:10:11:10:47 | UserToken | provenance | | -| jwtSimple.js:25:11:25:47 | UserToken | jwtSimple.js:28:23:28:31 | UserToken | provenance | | -| jwtSimple.js:25:23:25:47 | req.hea ... ization | jwtSimple.js:25:11:25:47 | UserToken | provenance | | +| JsonWebToken.js:10:11:10:19 | UserToken | JsonWebToken.js:13:28:13:36 | UserToken | provenance | | +| JsonWebToken.js:10:23:10:47 | req.hea ... ization | JsonWebToken.js:10:11:10:19 | UserToken | provenance | | +| JsonWebToken.js:17:11:17:19 | UserToken | JsonWebToken.js:20:28:20:36 | UserToken | provenance | | +| JsonWebToken.js:17:11:17:19 | UserToken | JsonWebToken.js:21:28:21:36 | UserToken | provenance | | +| JsonWebToken.js:17:23:17:47 | req.hea ... ization | JsonWebToken.js:17:11:17:19 | UserToken | provenance | | +| JsonWebToken.js:32:11:32:19 | UserToken | JsonWebToken.js:35:28:35:36 | UserToken | provenance | | +| JsonWebToken.js:32:23:32:47 | req.hea ... ization | JsonWebToken.js:32:11:32:19 | UserToken | provenance | | +| JsonWebToken.js:40:11:40:19 | UserToken | JsonWebToken.js:43:28:43:36 | UserToken | provenance | | +| JsonWebToken.js:40:23:40:47 | req.hea ... ization | JsonWebToken.js:40:11:40:19 | UserToken | provenance | | +| jose.js:11:11:11:19 | UserToken | jose.js:13:20:13:28 | UserToken | provenance | | +| jose.js:11:23:11:47 | req.hea ... ization | jose.js:11:11:11:19 | UserToken | provenance | | +| jose.js:24:11:24:19 | UserToken | jose.js:26:20:26:28 | UserToken | provenance | | +| jose.js:24:23:24:47 | req.hea ... ization | jose.js:24:11:24:19 | UserToken | provenance | | +| jwtDecode.js:11:11:11:19 | UserToken | jwtDecode.js:15:16:15:24 | UserToken | provenance | | +| jwtDecode.js:11:23:11:47 | req.hea ... ization | jwtDecode.js:11:11:11:19 | UserToken | provenance | | +| jwtSimple.js:10:11:10:19 | UserToken | jwtSimple.js:13:23:13:31 | UserToken | provenance | | +| jwtSimple.js:10:23:10:47 | req.hea ... ization | jwtSimple.js:10:11:10:19 | UserToken | provenance | | +| jwtSimple.js:25:11:25:19 | UserToken | jwtSimple.js:28:23:28:31 | UserToken | provenance | | +| jwtSimple.js:25:23:25:47 | req.hea ... ization | jwtSimple.js:25:11:25:19 | UserToken | provenance | | nodes -| JsonWebToken.js:10:11:10:47 | UserToken | semmle.label | UserToken | +| JsonWebToken.js:10:11:10:19 | UserToken | semmle.label | UserToken | | JsonWebToken.js:10:23:10:47 | req.hea ... ization | semmle.label | req.hea ... ization | | JsonWebToken.js:13:28:13:36 | UserToken | semmle.label | UserToken | -| JsonWebToken.js:17:11:17:47 | UserToken | semmle.label | UserToken | +| JsonWebToken.js:17:11:17:19 | UserToken | semmle.label | UserToken | | JsonWebToken.js:17:23:17:47 | req.hea ... ization | semmle.label | req.hea ... ization | | JsonWebToken.js:20:28:20:36 | UserToken | semmle.label | UserToken | | JsonWebToken.js:21:28:21:36 | UserToken | semmle.label | UserToken | -| JsonWebToken.js:32:11:32:47 | UserToken | semmle.label | UserToken | +| JsonWebToken.js:32:11:32:19 | UserToken | semmle.label | UserToken | | JsonWebToken.js:32:23:32:47 | req.hea ... ization | semmle.label | req.hea ... ization | | JsonWebToken.js:35:28:35:36 | UserToken | semmle.label | UserToken | -| JsonWebToken.js:40:11:40:47 | UserToken | semmle.label | UserToken | +| JsonWebToken.js:40:11:40:19 | UserToken | semmle.label | UserToken | | JsonWebToken.js:40:23:40:47 | req.hea ... ization | semmle.label | req.hea ... ization | | JsonWebToken.js:43:28:43:36 | UserToken | semmle.label | UserToken | -| jose.js:11:11:11:47 | UserToken | semmle.label | UserToken | +| jose.js:11:11:11:19 | UserToken | semmle.label | UserToken | | jose.js:11:23:11:47 | req.hea ... ization | semmle.label | req.hea ... ization | | jose.js:13:20:13:28 | UserToken | semmle.label | UserToken | -| jose.js:24:11:24:47 | UserToken | semmle.label | UserToken | +| jose.js:24:11:24:19 | UserToken | semmle.label | UserToken | | jose.js:24:23:24:47 | req.hea ... ization | semmle.label | req.hea ... ization | | jose.js:26:20:26:28 | UserToken | semmle.label | UserToken | -| jwtDecode.js:11:11:11:47 | UserToken | semmle.label | UserToken | +| jwtDecode.js:11:11:11:19 | UserToken | semmle.label | UserToken | | jwtDecode.js:11:23:11:47 | req.hea ... ization | semmle.label | req.hea ... ization | | jwtDecode.js:15:16:15:24 | UserToken | semmle.label | UserToken | -| jwtSimple.js:10:11:10:47 | UserToken | semmle.label | UserToken | +| jwtSimple.js:10:11:10:19 | UserToken | semmle.label | UserToken | | jwtSimple.js:10:23:10:47 | req.hea ... ization | semmle.label | req.hea ... ization | | jwtSimple.js:13:23:13:31 | UserToken | semmle.label | UserToken | -| jwtSimple.js:25:11:25:47 | UserToken | semmle.label | UserToken | +| jwtSimple.js:25:11:25:19 | UserToken | semmle.label | UserToken | | jwtSimple.js:25:23:25:47 | req.hea ... ization | semmle.label | req.hea ... ization | | jwtSimple.js:28:23:28:31 | UserToken | semmle.label | UserToken | subpaths diff --git a/javascript/ql/test/experimental/Security/CWE-918/SSRF.expected b/javascript/ql/test/experimental/Security/CWE-918/SSRF.expected index da02dc248485..8a0dabd4c59e 100644 --- a/javascript/ql/test/experimental/Security/CWE-918/SSRF.expected +++ b/javascript/ql/test/experimental/Security/CWE-918/SSRF.expected @@ -1,6 +1,6 @@ edges -| check-domain.js:16:9:16:27 | url | check-domain.js:17:13:17:15 | url | provenance | | -| check-domain.js:16:15:16:27 | req.query.url | check-domain.js:16:9:16:27 | url | provenance | | +| check-domain.js:16:9:16:11 | url | check-domain.js:17:13:17:15 | url | provenance | | +| check-domain.js:16:15:16:27 | req.query.url | check-domain.js:16:9:16:11 | url | provenance | | | check-middleware.js:9:27:9:43 | req.query.tainted | check-middleware.js:9:13:9:43 | "test.c ... tainted | provenance | | | check-path.js:19:27:19:43 | req.query.tainted | check-path.js:19:13:19:43 | 'test.c ... tainted | provenance | | | check-path.js:23:27:23:43 | req.query.tainted | check-path.js:23:13:23:45 | `/addre ... inted}` | provenance | | @@ -16,13 +16,13 @@ edges | check-validator.js:15:29:15:45 | req.query.tainted | check-validator.js:15:15:15:45 | "test.c ... tainted | provenance | | | check-validator.js:27:29:27:45 | req.query.tainted | check-validator.js:27:15:27:45 | "test.c ... tainted | provenance | | | check-validator.js:50:29:50:45 | req.query.tainted | check-validator.js:50:15:50:45 | "test.c ... tainted | provenance | | -| check-validator.js:54:9:54:37 | numberURL | check-validator.js:62:29:62:37 | numberURL | provenance | | -| check-validator.js:54:21:54:37 | req.query.tainted | check-validator.js:54:9:54:37 | numberURL | provenance | | +| check-validator.js:54:9:54:17 | numberURL | check-validator.js:62:29:62:37 | numberURL | provenance | | +| check-validator.js:54:21:54:37 | req.query.tainted | check-validator.js:54:9:54:17 | numberURL | provenance | | | check-validator.js:59:29:59:45 | req.query.tainted | check-validator.js:59:15:59:45 | "test.c ... tainted | provenance | | | check-validator.js:62:29:62:37 | numberURL | check-validator.js:62:15:62:37 | "test.c ... mberURL | provenance | | | check-validator.js:68:29:68:45 | req.query.tainted | check-validator.js:68:15:68:45 | "test.c ... tainted | provenance | | nodes -| check-domain.js:16:9:16:27 | url | semmle.label | url | +| check-domain.js:16:9:16:11 | url | semmle.label | url | | check-domain.js:16:15:16:27 | req.query.url | semmle.label | req.query.url | | check-domain.js:17:13:17:15 | url | semmle.label | url | | check-domain.js:26:15:26:27 | req.query.url | semmle.label | req.query.url | @@ -56,7 +56,7 @@ nodes | check-validator.js:27:29:27:45 | req.query.tainted | semmle.label | req.query.tainted | | check-validator.js:50:15:50:45 | "test.c ... tainted | semmle.label | "test.c ... tainted | | check-validator.js:50:29:50:45 | req.query.tainted | semmle.label | req.query.tainted | -| check-validator.js:54:9:54:37 | numberURL | semmle.label | numberURL | +| check-validator.js:54:9:54:17 | numberURL | semmle.label | numberURL | | check-validator.js:54:21:54:37 | req.query.tainted | semmle.label | req.query.tainted | | check-validator.js:59:15:59:45 | "test.c ... tainted | semmle.label | "test.c ... tainted | | check-validator.js:59:29:59:45 | req.query.tainted | semmle.label | req.query.tainted | diff --git a/javascript/ql/test/experimental/Security/CWE-942/CorsPermissiveConfiguration.expected b/javascript/ql/test/experimental/Security/CWE-942/CorsPermissiveConfiguration.expected index 6c28b7105a18..ddebfa1d1c8a 100644 --- a/javascript/ql/test/experimental/Security/CWE-942/CorsPermissiveConfiguration.expected +++ b/javascript/ql/test/experimental/Security/CWE-942/CorsPermissiveConfiguration.expected @@ -1,16 +1,16 @@ edges -| apollo-test.js:8:9:8:59 | user_origin | apollo-test.js:26:25:26:35 | user_origin | provenance | | -| apollo-test.js:8:9:8:59 | user_origin | apollo-test.js:26:25:26:35 | user_origin | provenance | | -| apollo-test.js:8:23:8:46 | url.par ... , true) | apollo-test.js:8:9:8:59 | user_origin | provenance | | -| apollo-test.js:8:23:8:46 | url.par ... , true) | apollo-test.js:8:9:8:59 | user_origin | provenance | | +| apollo-test.js:8:9:8:19 | user_origin | apollo-test.js:26:25:26:35 | user_origin | provenance | | +| apollo-test.js:8:9:8:19 | user_origin | apollo-test.js:26:25:26:35 | user_origin | provenance | | +| apollo-test.js:8:23:8:46 | url.par ... , true) | apollo-test.js:8:9:8:19 | user_origin | provenance | | +| apollo-test.js:8:23:8:46 | url.par ... , true) | apollo-test.js:8:9:8:19 | user_origin | provenance | | | apollo-test.js:8:33:8:39 | req.url | apollo-test.js:8:23:8:46 | url.par ... , true) | provenance | | | apollo-test.js:8:42:8:45 | true | apollo-test.js:8:23:8:46 | url.par ... , true) | provenance | | -| express-test.js:10:9:10:59 | user_origin | express-test.js:33:17:33:27 | user_origin | provenance | | -| express-test.js:10:23:10:46 | url.par ... , true) | express-test.js:10:9:10:59 | user_origin | provenance | | +| express-test.js:10:9:10:19 | user_origin | express-test.js:33:17:33:27 | user_origin | provenance | | +| express-test.js:10:23:10:46 | url.par ... , true) | express-test.js:10:9:10:19 | user_origin | provenance | | | express-test.js:10:33:10:39 | req.url | express-test.js:10:23:10:46 | url.par ... , true) | provenance | | nodes -| apollo-test.js:8:9:8:59 | user_origin | semmle.label | user_origin | -| apollo-test.js:8:9:8:59 | user_origin | semmle.label | user_origin | +| apollo-test.js:8:9:8:19 | user_origin | semmle.label | user_origin | +| apollo-test.js:8:9:8:19 | user_origin | semmle.label | user_origin | | apollo-test.js:8:23:8:46 | url.par ... , true) | semmle.label | url.par ... , true) | | apollo-test.js:8:23:8:46 | url.par ... , true) | semmle.label | url.par ... , true) | | apollo-test.js:8:33:8:39 | req.url | semmle.label | req.url | @@ -19,7 +19,7 @@ nodes | apollo-test.js:21:25:21:28 | null | semmle.label | null | | apollo-test.js:26:25:26:35 | user_origin | semmle.label | user_origin | | apollo-test.js:26:25:26:35 | user_origin | semmle.label | user_origin | -| express-test.js:10:9:10:59 | user_origin | semmle.label | user_origin | +| express-test.js:10:9:10:19 | user_origin | semmle.label | user_origin | | express-test.js:10:23:10:46 | url.par ... , true) | semmle.label | url.par ... , true) | | express-test.js:10:33:10:39 | req.url | semmle.label | req.url | | express-test.js:26:17:26:19 | '*' | semmle.label | '*' | diff --git a/javascript/ql/test/library-tests/CallGraphs/FullTest/tests.expected b/javascript/ql/test/library-tests/CallGraphs/FullTest/tests.expected index 8185f693b227..1192c8ec8fb6 100644 --- a/javascript/ql/test/library-tests/CallGraphs/FullTest/tests.expected +++ b/javascript/ql/test/library-tests/CallGraphs/FullTest/tests.expected @@ -50,15 +50,15 @@ test_getAFunctionValue | c.js:2:8:2:24 | function bar() {} | c.js:2:8:2:24 | function bar() {} | | classes.js:1:1:19:2 | (functi ... o();\\n}) | classes.js:1:2:19:1 | functio ... lo();\\n} | | classes.js:1:2:19:1 | functio ... lo();\\n} | classes.js:1:2:19:1 | functio ... lo();\\n} | -| classes.js:2:3:10:3 | A | classes.js:2:11:2:10 | () {} | | classes.js:2:3:10:3 | class A ... }\\n } | classes.js:2:11:2:10 | () {} | +| classes.js:2:9:2:9 | A | classes.js:2:11:2:10 | () {} | | classes.js:2:11:2:10 | () {} | classes.js:2:11:2:10 | () {} | | classes.js:3:10:5:5 | () {\\n ... ;\\n } | classes.js:3:10:5:5 | () {\\n ... ;\\n } | | classes.js:7:6:9:5 | () {\\n ... ;\\n } | classes.js:7:6:9:5 | () {\\n ... ;\\n } | | classes.js:8:7:8:16 | this.hello | classes.js:3:10:5:5 | () {\\n ... ;\\n } | | classes.js:8:7:8:16 | this.hello | classes.js:13:10:15:5 | () {\\n ... ;\\n } | -| classes.js:12:3:16:3 | B | classes.js:12:21:12:20 | (...arg ... rgs); } | | classes.js:12:3:16:3 | class B ... }\\n } | classes.js:12:21:12:20 | (...arg ... rgs); } | +| classes.js:12:9:12:9 | B | classes.js:12:21:12:20 | (...arg ... rgs); } | | classes.js:12:19:12:19 | A | classes.js:2:11:2:10 | () {} | | classes.js:12:21:12:20 | (...arg ... rgs); } | classes.js:12:21:12:20 | (...arg ... rgs); } | | classes.js:13:10:15:5 | () {\\n ... ;\\n } | classes.js:13:10:15:5 | () {\\n ... ;\\n } | @@ -146,9 +146,9 @@ test_getAFunctionValue | tst.js:11:1:20:1 | functio ... \\tf();\\n} | tst.js:11:1:20:1 | functio ... \\tf();\\n} | | tst.js:11:12:11:12 | m | tst.js:2:9:2:21 | function() {} | | tst.js:11:12:11:12 | m | tst.js:2:9:2:21 | function() {} | -| tst.js:12:6:12:6 | m | tst.js:2:9:2:21 | function() {} | -| tst.js:12:6:12:27 | n | tst.js:2:9:2:21 | function() {} | -| tst.js:12:6:12:27 | n | tst.js:12:15:12:27 | function() {} | +| tst.js:12:6:12:6 | n | tst.js:2:9:2:21 | function() {} | +| tst.js:12:6:12:6 | n | tst.js:12:15:12:27 | function() {} | +| tst.js:12:6:12:27 | m | tst.js:2:9:2:21 | function() {} | | tst.js:12:10:12:10 | m | tst.js:2:9:2:21 | function() {} | | tst.js:12:10:12:10 | m | tst.js:2:9:2:21 | function() {} | | tst.js:12:10:12:10 | m | tst.js:2:9:2:21 | function() {} | diff --git a/javascript/ql/test/library-tests/DataFlow/tests.expected b/javascript/ql/test/library-tests/DataFlow/tests.expected index 26ba8c46a993..7655c8b9f84c 100644 --- a/javascript/ql/test/library-tests/DataFlow/tests.expected +++ b/javascript/ql/test/library-tests/DataFlow/tests.expected @@ -19,8 +19,8 @@ basicBlock | arguments.js:1:2:12:1 | exceptional return of anonymous function | arguments.js:1:2:1:1 | entry node of functio ... , 3);\\n} | | arguments.js:1:2:12:1 | functio ... , 3);\\n} | arguments.js:1:1:1:0 | entry node of | | arguments.js:1:2:12:1 | return of anonymous function | arguments.js:1:2:1:1 | entry node of functio ... , 3);\\n} | +| arguments.js:2:5:2:4 | arguments | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | | arguments.js:2:5:2:4 | this | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | -| arguments.js:2:5:2:5 | arguments | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | | arguments.js:2:5:10:5 | 'arguments' object of function f | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | | arguments.js:2:5:10:5 | [function self-reference] functio ... ;\\n } | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | | arguments.js:2:5:10:5 | exceptional return of function f | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | @@ -44,7 +44,7 @@ basicBlock | arguments.js:5:25:5:36 | arguments[1] | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | | arguments.js:5:35:5:35 | 1 | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | | arguments.js:6:13:6:16 | args | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | -| arguments.js:6:13:6:28 | args | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | +| arguments.js:6:13:6:16 | args | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | | arguments.js:6:13:6:28 | args = arguments | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | | arguments.js:6:20:6:28 | arguments | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | | arguments.js:7:13:7:20 | thirdArg | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | @@ -53,7 +53,7 @@ basicBlock | arguments.js:7:24:7:30 | args[2] | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | | arguments.js:7:29:7:29 | 2 | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | | arguments.js:8:9:8:17 | arguments | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | -| arguments.js:8:9:8:22 | arguments | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | +| arguments.js:8:9:8:17 | arguments | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | | arguments.js:8:9:8:22 | arguments = {} | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | | arguments.js:8:21:8:22 | {} | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | | arguments.js:9:13:9:23 | notFirstArg | arguments.js:2:5:2:4 | entry node of functio ... ;\\n } | @@ -75,7 +75,7 @@ basicBlock | eval.js:1:1:5:1 | return of function k | eval.js:1:1:1:0 | entry node of functio ... eval`\\n} | | eval.js:1:10:1:10 | k | eval.js:1:1:1:0 | entry node of | | eval.js:2:7:2:7 | x | eval.js:1:1:1:0 | entry node of functio ... eval`\\n} | -| eval.js:2:7:2:12 | x | eval.js:1:1:1:0 | entry node of functio ... eval`\\n} | +| eval.js:2:7:2:7 | x | eval.js:1:1:1:0 | entry node of functio ... eval`\\n} | | eval.js:2:7:2:12 | x = 42 | eval.js:1:1:1:0 | entry node of functio ... eval`\\n} | | eval.js:2:11:2:12 | 42 | eval.js:1:1:1:0 | entry node of functio ... eval`\\n} | | eval.js:3:3:3:6 | eval | eval.js:1:1:1:0 | entry node of functio ... eval`\\n} | @@ -122,23 +122,23 @@ basicBlock | sources.js:10:12:10:14 | key | sources.js:10:8:10:14 | let key | | sources.js:10:19:10:23 | array | sources.js:9:1:9:0 | entry node of functio ... ey; }\\n} | | sources.js:10:28:10:30 | key | sources.js:10:8:10:14 | let key | -| sources.js:11:12:11:18 | key | sources.js:11:8:11:18 | let { key } | | sources.js:11:12:11:18 | { key } | sources.js:11:8:11:18 | let { key } | | sources.js:11:12:11:18 | { key } | sources.js:11:8:11:18 | let { key } | | sources.js:11:14:11:16 | key | sources.js:11:8:11:18 | let { key } | | sources.js:11:14:11:16 | key | sources.js:11:8:11:18 | let { key } | | sources.js:11:14:11:16 | key | sources.js:11:8:11:18 | let { key } | | sources.js:11:14:11:16 | key | sources.js:11:8:11:18 | let { key } | +| sources.js:11:14:11:16 | key | sources.js:11:8:11:18 | let { key } | | sources.js:11:23:11:27 | array | sources.js:11:23:11:27 | array | | sources.js:11:32:11:34 | key | sources.js:11:8:11:18 | let { key } | +| tst2.ts:1:1:1:0 | A | tst2.ts:1:1:1:0 | entry node of | | tst2.ts:1:1:1:0 | this | tst2.ts:1:1:1:0 | entry node of | -| tst2.ts:1:1:1:1 | A | tst2.ts:1:1:1:0 | entry node of | -| tst2.ts:1:8:5:1 | A | tst2.ts:1:1:1:0 | entry node of | | tst2.ts:1:8:5:1 | namespa ... lysed\\n} | tst2.ts:1:1:1:0 | entry node of | | tst2.ts:1:18:1:18 | A | tst2.ts:1:1:1:0 | entry node of | | tst2.ts:1:18:1:18 | A | tst2.ts:1:1:1:0 | entry node of | +| tst2.ts:1:18:1:18 | A | tst2.ts:1:1:1:0 | entry node of | +| tst2.ts:2:14:2:14 | x | tst2.ts:1:1:1:0 | entry node of | | tst2.ts:2:14:2:14 | x | tst2.ts:1:1:1:0 | entry node of | -| tst2.ts:2:14:2:19 | x | tst2.ts:1:1:1:0 | entry node of | | tst2.ts:2:14:2:19 | x = 42 | tst2.ts:1:1:1:0 | entry node of | | tst2.ts:2:18:2:19 | 42 | tst2.ts:1:1:1:0 | entry node of | | tst2.ts:3:3:3:6 | setX | tst2.ts:1:1:1:0 | entry node of | @@ -190,17 +190,17 @@ basicBlock | tst2.ts:15:11:15:30 | A.x satisfies number | tst2.ts:1:1:1:0 | entry node of | | tst2.ts:15:13:15:13 | x | tst2.ts:1:1:1:0 | entry node of | | tst.js:1:1:1:0 | this | tst.js:1:1:1:0 | entry node of | -| tst.js:1:1:1:1 | x | tst.js:1:1:1:0 | entry node of | +| tst.js:1:1:1:0 | x | tst.js:1:1:1:0 | entry node of | | tst.js:1:1:1:24 | import ... m 'fs'; | tst.js:1:1:1:0 | entry node of | | tst.js:1:10:1:11 | fs | tst.js:1:1:1:0 | entry node of | | tst.js:1:10:1:11 | fs | tst.js:1:1:1:0 | entry node of | | tst.js:3:5:3:5 | x | tst.js:1:1:1:0 | entry node of | | tst.js:3:5:3:5 | x | tst.js:1:1:1:0 | entry node of | -| tst.js:3:5:3:10 | x | tst.js:1:1:1:0 | entry node of | +| tst.js:3:5:3:5 | x | tst.js:1:1:1:0 | entry node of | | tst.js:3:5:3:10 | x = 42 | tst.js:1:1:1:0 | entry node of | | tst.js:3:9:3:10 | 42 | tst.js:1:1:1:0 | entry node of | | tst.js:4:5:4:5 | y | tst.js:1:1:1:0 | entry node of | -| tst.js:4:5:4:12 | y | tst.js:1:1:1:0 | entry node of | +| tst.js:4:5:4:5 | y | tst.js:1:1:1:0 | entry node of | | tst.js:4:5:4:12 | y = "hi" | tst.js:1:1:1:0 | entry node of | | tst.js:4:9:4:12 | "hi" | tst.js:1:1:1:0 | entry node of | | tst.js:5:5:5:5 | z | tst.js:1:1:1:0 | entry node of | @@ -220,13 +220,13 @@ basicBlock | tst.js:12:1:12:1 | x | tst.js:12:1:12:1 | guard: x is false | | tst.js:12:1:12:1 | x | tst.js:12:1:12:1 | guard: x is true | | tst.js:12:1:12:1 | x | tst.js:12:1:12:7 | x \|\| y; | -| tst.js:12:1:12:1 | x | tst.js:12:1:12:7 | x \|\| y; | | tst.js:12:1:12:6 | x \|\| y | tst.js:12:1:12:7 | x \|\| y; | +| tst.js:12:1:12:7 | x | tst.js:12:1:12:7 | x \|\| y; | | tst.js:12:6:12:6 | y | tst.js:12:1:12:1 | guard: x is false | -| tst.js:13:1:13:1 | x | tst.js:13:1:13:6 | z = y; | | tst.js:13:1:13:1 | z | tst.js:13:1:13:6 | z = y; | -| tst.js:13:1:13:5 | z | tst.js:13:1:13:6 | z = y; | +| tst.js:13:1:13:1 | z | tst.js:13:1:13:6 | z = y; | | tst.js:13:1:13:5 | z = y | tst.js:13:1:13:6 | z = y; | +| tst.js:13:1:13:6 | x | tst.js:13:1:13:6 | z = y; | | tst.js:13:5:13:5 | y | tst.js:13:1:13:6 | z = y; | | tst.js:14:1:14:1 | z | tst.js:13:1:13:6 | z = y; | | tst.js:14:1:14:9 | z ? x : y | tst.js:13:1:13:6 | z = y; | @@ -254,16 +254,16 @@ basicBlock | tst.js:19:10:19:11 | "" | tst.js:17:7:17:25 | guard: Math.random() > 0.5 is false | | tst.js:20:4:20:8 | "arg" | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:22:5:22:20 | { readFileSync } | tst.js:16:1:20:10 | (functi ... "arg"); | -| tst.js:22:5:22:25 | readFileSync | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:22:5:22:25 | { readF ... } = fs | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:22:7:22:18 | readFileSync | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:22:7:22:18 | readFileSync | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:22:7:22:18 | readFileSync | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:22:7:22:18 | readFileSync | tst.js:16:1:20:10 | (functi ... "arg"); | +| tst.js:22:7:22:18 | readFileSync | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:22:24:22:25 | fs | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:23:1:23:12 | readFileSync | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:25:1:25:3 | ++x | tst.js:16:1:20:10 | (functi ... "arg"); | -| tst.js:25:1:25:3 | x | tst.js:16:1:20:10 | (functi ... "arg"); | +| tst.js:25:3:25:3 | x | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:25:3:25:3 | x | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:26:1:26:1 | x | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:28:1:30:1 | (() =>\\n ... ables\\n) | tst.js:16:1:20:10 | (functi ... "arg"); | @@ -290,7 +290,7 @@ basicBlock | tst.js:35:1:35:7 | g(true) | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:35:3:35:6 | true | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:37:5:37:5 | o | tst.js:16:1:20:10 | (functi ... "arg"); | -| tst.js:37:5:42:1 | o | tst.js:16:1:20:10 | (functi ... "arg"); | +| tst.js:37:5:37:5 | o | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:37:5:42:1 | o = {\\n ... ;\\n }\\n} | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:37:9:42:1 | {\\n x: ... ;\\n }\\n} | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:38:3:38:3 | x | tst.js:16:1:20:10 | (functi ... "arg"); | @@ -318,9 +318,9 @@ basicBlock | tst.js:46:1:46:11 | global = "" | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:46:10:46:11 | "" | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:47:1:47:6 | global | tst.js:16:1:20:10 | (functi ... "arg"); | -| tst.js:49:1:54:1 | A | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:49:1:54:1 | class A ... `\\n }\\n} | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:49:7:49:7 | A | tst.js:16:1:20:10 | (functi ... "arg"); | +| tst.js:49:7:49:7 | A | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:49:17:49:17 | B | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:50:3:50:13 | constructor | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:50:3:53:3 | constru ... et`\\n } | tst.js:16:1:20:10 | (functi ... "arg"); | @@ -365,7 +365,7 @@ basicBlock | tst.js:66:7:66:25 | tmp = function.sent | tst.js:64:1:64:0 | entry node of functio ... lysed\\n} | | tst.js:66:13:66:25 | function.sent | tst.js:64:1:64:0 | entry node of functio ... lysed\\n} | | tst.js:68:5:68:8 | iter | tst.js:16:1:20:10 | (functi ... "arg"); | -| tst.js:68:5:68:14 | iter | tst.js:16:1:20:10 | (functi ... "arg"); | +| tst.js:68:5:68:8 | iter | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:68:5:68:14 | iter = h() | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:68:12:68:12 | h | tst.js:16:1:20:10 | (functi ... "arg"); | | tst.js:68:12:68:14 | exceptional return of h() | tst.js:16:1:20:10 | (functi ... "arg"); | @@ -424,33 +424,33 @@ basicBlock | tst.js:87:2:92:1 | exceptional return of anonymous function | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:87:2:92:1 | functio ... + z;\\n} | tst.js:85:5:85:28 | vs2 = ( ... o) v ) | | tst.js:87:2:92:1 | return of anonymous function | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | -| tst.js:87:11:87:24 | o | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | -| tst.js:87:11:87:24 | x | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:87:11:87:24 | { p: x, ...o } | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:87:13:87:13 | p | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:87:13:87:16 | p: x | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:87:13:87:16 | p: x | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:87:16:87:16 | x | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | +| tst.js:87:16:87:16 | x | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:87:22:87:22 | ...o | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:87:22:87:22 | o | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | +| tst.js:87:22:87:22 | o | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:88:7:88:14 | { q: y } | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | -| tst.js:88:7:88:18 | y | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:88:7:88:18 | { q: y } = o | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:88:9:88:9 | q | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:88:9:88:12 | q: y | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:88:9:88:12 | q: y | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:88:12:88:12 | y | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | +| tst.js:88:12:88:12 | y | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:88:18:88:18 | o | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:89:7:89:7 | z | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:89:7:89:7 | z | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:90:3:90:16 | ({ r: z } = o) | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:90:4:90:11 | { r: z } | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | -| tst.js:90:4:90:15 | z | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:90:4:90:15 | { r: z } = o | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:90:6:90:6 | r | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:90:6:90:9 | r: z | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:90:6:90:9 | r: z | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:90:9:90:9 | z | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | +| tst.js:90:9:90:9 | z | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:90:15:90:15 | o | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:91:10:91:10 | x | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | | tst.js:91:10:91:14 | x + y | tst.js:87:2:87:1 | entry node of functio ... + z;\\n} | @@ -479,15 +479,15 @@ basicBlock | tst.js:98:2:103:1 | functio ... + z;\\n} | tst.js:85:5:85:28 | vs2 = ( ... o) v ) | | tst.js:98:2:103:1 | return of anonymous function | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | | tst.js:98:11:98:24 | [ x, ...rest ] | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | -| tst.js:98:11:98:24 | rest | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | -| tst.js:98:11:98:24 | x | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | +| tst.js:98:13:98:13 | x | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | | tst.js:98:13:98:13 | x | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | | tst.js:98:13:98:13 | x | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | | tst.js:98:19:98:22 | ...rest | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | | tst.js:98:19:98:22 | rest | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | +| tst.js:98:19:98:22 | rest | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | | tst.js:99:7:99:11 | [ y ] | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | | tst.js:99:7:99:18 | [ y ] = rest | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | -| tst.js:99:7:99:18 | y | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | +| tst.js:99:9:99:9 | y | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | | tst.js:99:9:99:9 | y | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | | tst.js:99:9:99:9 | y | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | | tst.js:99:15:99:18 | rest | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | @@ -495,7 +495,7 @@ basicBlock | tst.js:100:7:100:7 | z | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | | tst.js:101:3:101:9 | [ , z ] | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | | tst.js:101:3:101:16 | [ , z ] = rest | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | -| tst.js:101:3:101:16 | z | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | +| tst.js:101:7:101:7 | z | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | | tst.js:101:7:101:7 | z | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | | tst.js:101:7:101:7 | z | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | | tst.js:101:13:101:16 | rest | tst.js:98:2:98:1 | entry node of functio ... + z;\\n} | @@ -521,14 +521,13 @@ basicBlock | tst.js:107:2:113:1 | functio ... v2c;\\n} | tst.js:107:1:113:3 | (functi ... 2c;\\n}); | | tst.js:107:2:113:1 | return of anonymous function | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:108:6:108:32 | {v1a, v ... = o1c} | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | -| tst.js:108:6:108:38 | v1a | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | -| tst.js:108:6:108:38 | v1b | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | -| tst.js:108:6:108:38 | v1c | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:108:6:108:38 | {v1a, v ... } = o1d | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:108:7:108:9 | v1a | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:108:7:108:9 | v1a | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:108:7:108:9 | v1a | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:108:7:108:9 | v1a | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | +| tst.js:108:7:108:9 | v1a | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | +| tst.js:108:12:108:14 | v1b | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:108:12:108:14 | v1b | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:108:12:108:14 | v1b | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:108:12:108:20 | v1b = o1b | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | @@ -536,6 +535,7 @@ basicBlock | tst.js:108:18:108:20 | o1b | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:108:23:108:25 | v1c | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:108:23:108:25 | v1c | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | +| tst.js:108:23:108:25 | v1c | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:108:23:108:31 | v1c = o1c | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:108:23:108:31 | v1c = o1c | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:108:29:108:31 | o1c | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | @@ -547,16 +547,16 @@ basicBlock | tst.js:109:14:109:16 | v1c | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:111:6:111:32 | [v2a, v ... = o2c] | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:111:6:111:38 | [v2a, v ... ] = o2d | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | -| tst.js:111:6:111:38 | v2a | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | -| tst.js:111:6:111:38 | v2b | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | -| tst.js:111:6:111:38 | v2c | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | +| tst.js:111:7:111:9 | v2a | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:111:7:111:9 | v2a | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:111:7:111:9 | v2a | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:111:12:111:14 | v2b | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:111:12:111:14 | v2b | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | +| tst.js:111:12:111:14 | v2b | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:111:18:111:20 | o2b | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:111:23:111:25 | v2c | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:111:23:111:25 | v2c | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | +| tst.js:111:23:111:25 | v2c | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:111:29:111:31 | o2c | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:111:36:111:38 | o2d | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | | tst.js:112:2:112:4 | v2a | tst.js:107:2:107:1 | entry node of functio ... v2c;\\n} | @@ -946,9 +946,9 @@ enclosingExpr | tst.js:117:22:117:23 | x1 | tst.js:117:22:117:23 | x1 | flowStep | arguments.js:1:2:12:1 | functio ... , 3);\\n} | arguments.js:1:1:12:2 | (functi ... 3);\\n}) | -| arguments.js:2:5:2:5 | arguments | arguments.js:4:28:4:36 | arguments | -| arguments.js:2:5:2:5 | arguments | arguments.js:5:25:5:33 | arguments | -| arguments.js:2:5:2:5 | arguments | arguments.js:6:20:6:28 | arguments | +| arguments.js:2:5:2:4 | arguments | arguments.js:4:28:4:36 | arguments | +| arguments.js:2:5:2:4 | arguments | arguments.js:5:25:5:33 | arguments | +| arguments.js:2:5:2:4 | arguments | arguments.js:6:20:6:28 | arguments | | arguments.js:2:5:10:5 | 'arguments' object of function f | arguments.js:4:28:4:36 | arguments | | arguments.js:2:5:10:5 | 'arguments' object of function f | arguments.js:5:25:5:33 | arguments | | arguments.js:2:5:10:5 | 'arguments' object of function f | arguments.js:6:20:6:28 | arguments | @@ -958,13 +958,13 @@ flowStep | arguments.js:2:14:2:14 | f | arguments.js:11:5:11:5 | f | | arguments.js:2:16:2:16 | x | arguments.js:2:16:2:16 | x | | arguments.js:2:16:2:16 | x | arguments.js:3:24:3:24 | x | -| arguments.js:6:13:6:28 | args | arguments.js:7:24:7:27 | args | -| arguments.js:6:20:6:28 | arguments | arguments.js:6:13:6:28 | args | -| arguments.js:8:9:8:22 | arguments | arguments.js:9:27:9:35 | arguments | -| arguments.js:8:21:8:22 | {} | arguments.js:8:9:8:22 | arguments | +| arguments.js:6:13:6:16 | args | arguments.js:7:24:7:27 | args | +| arguments.js:6:20:6:28 | arguments | arguments.js:6:13:6:16 | args | +| arguments.js:8:9:8:17 | arguments | arguments.js:9:27:9:35 | arguments | +| arguments.js:8:21:8:22 | {} | arguments.js:8:9:8:17 | arguments | | arguments.js:8:21:8:22 | {} | arguments.js:8:9:8:22 | arguments = {} | -| eval.js:2:7:2:12 | x | eval.js:4:3:4:3 | x | -| eval.js:2:11:2:12 | 42 | eval.js:2:7:2:12 | x | +| eval.js:2:7:2:7 | x | eval.js:4:3:4:3 | x | +| eval.js:2:11:2:12 | 42 | eval.js:2:7:2:7 | x | | sources.js:1:6:1:6 | x | sources.js:1:6:1:6 | x | | sources.js:1:6:1:6 | x | sources.js:1:11:1:11 | x | | sources.js:1:6:1:11 | x => x | sources.js:1:5:1:12 | (x => x) | @@ -980,17 +980,17 @@ flowStep | sources.js:9:14:9:18 | array | sources.js:10:19:10:23 | array | | sources.js:9:14:9:18 | array | sources.js:11:23:11:27 | array | | sources.js:10:12:10:14 | key | sources.js:10:28:10:30 | key | -| sources.js:11:12:11:18 | key | sources.js:11:32:11:34 | key | -| sources.js:11:14:11:16 | key | sources.js:11:12:11:18 | key | -| tst2.ts:1:1:1:1 | A | tst2.ts:1:18:1:18 | A | -| tst2.ts:1:1:1:1 | A | tst2.ts:1:18:1:18 | A | -| tst2.ts:1:8:5:1 | A | tst2.ts:1:18:1:18 | A | -| tst2.ts:1:8:5:1 | A | tst2.ts:11:11:11:11 | A | -| tst2.ts:1:8:5:1 | A | tst2.ts:15:11:15:11 | A | -| tst2.ts:1:8:5:1 | namespa ... lysed\\n} | tst2.ts:1:8:5:1 | A | +| sources.js:11:14:11:16 | key | sources.js:11:14:11:16 | key | +| sources.js:11:14:11:16 | key | sources.js:11:32:11:34 | key | +| tst2.ts:1:1:1:0 | A | tst2.ts:1:18:1:18 | A | +| tst2.ts:1:1:1:0 | A | tst2.ts:1:18:1:18 | A | +| tst2.ts:1:8:5:1 | namespa ... lysed\\n} | tst2.ts:1:18:1:18 | A | +| tst2.ts:1:18:1:18 | A | tst2.ts:1:18:1:18 | A | | tst2.ts:1:18:1:18 | A | tst2.ts:7:1:7:0 | A | -| tst2.ts:2:14:2:19 | x | tst2.ts:4:3:4:3 | x | -| tst2.ts:2:18:2:19 | 42 | tst2.ts:2:14:2:19 | x | +| tst2.ts:1:18:1:18 | A | tst2.ts:11:11:11:11 | A | +| tst2.ts:1:18:1:18 | A | tst2.ts:15:11:15:11 | A | +| tst2.ts:2:14:2:14 | x | tst2.ts:4:3:4:3 | x | +| tst2.ts:2:18:2:19 | 42 | tst2.ts:2:14:2:14 | x | | tst2.ts:7:1:7:0 | A | tst2.ts:8:3:8:3 | A | | tst2.ts:7:1:9:1 | functio ... = 23;\\n} | tst2.ts:7:10:7:13 | setX | | tst2.ts:7:10:7:13 | setX | tst2.ts:3:3:3:6 | setX | @@ -1001,43 +1001,43 @@ flowStep | tst2.ts:13:39:13:38 | args | tst2.ts:13:39:13:38 | args | | tst2.ts:13:39:13:38 | this | tst2.ts:13:39:13:38 | implicit 'this' | | tst2.ts:15:11:15:13 | A.x | tst2.ts:15:11:15:30 | A.x satisfies number | -| tst.js:1:1:1:1 | x | tst.js:3:5:3:5 | x | +| tst.js:1:1:1:0 | x | tst.js:3:5:3:5 | x | | tst.js:1:10:1:11 | fs | tst.js:1:10:1:11 | fs | | tst.js:1:10:1:11 | fs | tst.js:7:1:7:2 | fs | | tst.js:1:10:1:11 | fs | tst.js:22:24:22:25 | fs | +| tst.js:3:5:3:5 | x | tst.js:3:5:3:5 | x | +| tst.js:3:5:3:5 | x | tst.js:8:1:8:1 | x | +| tst.js:3:5:3:5 | x | tst.js:9:2:9:2 | x | +| tst.js:3:5:3:5 | x | tst.js:10:1:10:1 | x | +| tst.js:3:5:3:5 | x | tst.js:11:1:11:1 | x | +| tst.js:3:5:3:5 | x | tst.js:11:1:11:1 | x | +| tst.js:3:5:3:5 | x | tst.js:11:1:11:1 | x | | tst.js:3:5:3:5 | x | tst.js:28:2:28:1 | x | | tst.js:3:5:3:5 | x | tst.js:32:1:32:0 | x | -| tst.js:3:5:3:10 | x | tst.js:3:5:3:5 | x | -| tst.js:3:5:3:10 | x | tst.js:8:1:8:1 | x | -| tst.js:3:5:3:10 | x | tst.js:9:2:9:2 | x | -| tst.js:3:5:3:10 | x | tst.js:10:1:10:1 | x | -| tst.js:3:5:3:10 | x | tst.js:11:1:11:1 | x | -| tst.js:3:5:3:10 | x | tst.js:11:1:11:1 | x | -| tst.js:3:5:3:10 | x | tst.js:11:1:11:1 | x | -| tst.js:3:9:3:10 | 42 | tst.js:3:5:3:10 | x | -| tst.js:4:5:4:12 | y | tst.js:10:4:10:4 | y | -| tst.js:4:5:4:12 | y | tst.js:11:6:11:6 | y | -| tst.js:4:5:4:12 | y | tst.js:12:6:12:6 | y | -| tst.js:4:5:4:12 | y | tst.js:13:5:13:5 | y | -| tst.js:4:5:4:12 | y | tst.js:14:9:14:9 | y | -| tst.js:4:5:4:12 | y | tst.js:105:6:105:6 | y | -| tst.js:4:9:4:12 | "hi" | tst.js:4:5:4:12 | y | +| tst.js:3:9:3:10 | 42 | tst.js:3:5:3:5 | x | +| tst.js:4:5:4:5 | y | tst.js:10:4:10:4 | y | +| tst.js:4:5:4:5 | y | tst.js:11:6:11:6 | y | +| tst.js:4:5:4:5 | y | tst.js:12:6:12:6 | y | +| tst.js:4:5:4:5 | y | tst.js:13:5:13:5 | y | +| tst.js:4:5:4:5 | y | tst.js:14:9:14:9 | y | +| tst.js:4:5:4:5 | y | tst.js:105:6:105:6 | y | +| tst.js:4:9:4:12 | "hi" | tst.js:4:5:4:5 | y | | tst.js:9:2:9:2 | x | tst.js:9:1:9:3 | (x) | | tst.js:10:4:10:4 | y | tst.js:10:1:10:4 | x, y | -| tst.js:11:1:11:1 | x | tst.js:12:1:12:1 | x | -| tst.js:11:1:11:1 | x | tst.js:12:1:12:1 | x | +| tst.js:11:1:11:1 | x | tst.js:12:1:12:7 | x | +| tst.js:11:1:11:1 | x | tst.js:12:1:12:7 | x | | tst.js:11:6:11:6 | y | tst.js:11:1:11:6 | x && y | -| tst.js:12:1:12:1 | x | tst.js:12:1:12:1 | x | -| tst.js:12:1:12:1 | x | tst.js:12:1:12:1 | x | -| tst.js:12:1:12:1 | x | tst.js:12:1:12:1 | x | | tst.js:12:1:12:1 | x | tst.js:12:1:12:6 | x \|\| y | -| tst.js:12:1:12:1 | x | tst.js:13:1:13:1 | x | -| tst.js:12:1:12:1 | x | tst.js:13:1:13:1 | x | +| tst.js:12:1:12:1 | x | tst.js:13:1:13:6 | x | +| tst.js:12:1:12:1 | x | tst.js:13:1:13:6 | x | +| tst.js:12:1:12:7 | x | tst.js:12:1:12:1 | x | +| tst.js:12:1:12:7 | x | tst.js:12:1:12:1 | x | +| tst.js:12:1:12:7 | x | tst.js:12:1:12:1 | x | | tst.js:12:6:12:6 | y | tst.js:12:1:12:6 | x \|\| y | -| tst.js:13:1:13:1 | x | tst.js:14:5:14:5 | x | -| tst.js:13:1:13:1 | x | tst.js:25:3:25:3 | x | -| tst.js:13:1:13:5 | z | tst.js:14:1:14:1 | z | -| tst.js:13:5:13:5 | y | tst.js:13:1:13:5 | z | +| tst.js:13:1:13:1 | z | tst.js:14:1:14:1 | z | +| tst.js:13:1:13:6 | x | tst.js:14:5:14:5 | x | +| tst.js:13:1:13:6 | x | tst.js:25:3:25:3 | x | +| tst.js:13:5:13:5 | y | tst.js:13:1:13:1 | z | | tst.js:13:5:13:5 | y | tst.js:13:1:13:5 | z = y | | tst.js:14:5:14:5 | x | tst.js:14:1:14:9 | z ? x : y | | tst.js:14:9:14:9 | y | tst.js:14:1:14:9 | z ? x : y | @@ -1049,14 +1049,14 @@ flowStep | tst.js:19:10:19:11 | "" | tst.js:16:1:20:9 | (functi ... ("arg") | | tst.js:19:10:19:11 | "" | tst.js:16:2:20:1 | return of function f | | tst.js:20:4:20:8 | "arg" | tst.js:16:13:16:13 | a | -| tst.js:22:5:22:25 | readFileSync | tst.js:23:1:23:12 | readFileSync | -| tst.js:22:7:22:18 | readFileSync | tst.js:22:5:22:25 | readFileSync | +| tst.js:22:7:22:18 | readFileSync | tst.js:22:7:22:18 | readFileSync | +| tst.js:22:7:22:18 | readFileSync | tst.js:23:1:23:12 | readFileSync | | tst.js:22:24:22:25 | fs | tst.js:22:5:22:20 | { readFileSync } | -| tst.js:25:1:25:3 | x | tst.js:3:5:3:5 | x | -| tst.js:25:1:25:3 | x | tst.js:26:1:26:1 | x | -| tst.js:25:1:25:3 | x | tst.js:57:7:57:7 | x | -| tst.js:25:1:25:3 | x | tst.js:58:11:58:11 | x | -| tst.js:25:1:25:3 | x | tst.js:105:1:105:1 | x | +| tst.js:25:3:25:3 | x | tst.js:3:5:3:5 | x | +| tst.js:25:3:25:3 | x | tst.js:26:1:26:1 | x | +| tst.js:25:3:25:3 | x | tst.js:57:7:57:7 | x | +| tst.js:25:3:25:3 | x | tst.js:58:11:58:11 | x | +| tst.js:25:3:25:3 | x | tst.js:105:1:105:1 | x | | tst.js:28:2:28:1 | x | tst.js:29:3:29:3 | x | | tst.js:28:2:29:3 | () =>\\n x | tst.js:28:1:30:1 | (() =>\\n ... ables\\n) | | tst.js:29:3:29:3 | x | tst.js:28:1:30:3 | (() =>\\n ... les\\n)() | @@ -1067,56 +1067,56 @@ flowStep | tst.js:32:10:32:10 | g | tst.js:60:1:60:1 | g | | tst.js:32:10:32:10 | g | tst.js:62:4:62:4 | g | | tst.js:33:10:33:10 | x | tst.js:32:1:34:1 | return of function g | -| tst.js:37:5:42:1 | o | tst.js:43:1:43:1 | o | -| tst.js:37:5:42:1 | o | tst.js:44:1:44:1 | o | -| tst.js:37:5:42:1 | o | tst.js:61:3:61:3 | o | -| tst.js:37:5:42:1 | o | tst.js:62:1:62:1 | o | -| tst.js:37:5:42:1 | o | tst.js:77:15:77:15 | o | -| tst.js:37:5:42:1 | o | tst.js:80:15:80:15 | o | -| tst.js:37:5:42:1 | o | tst.js:83:23:83:23 | o | -| tst.js:37:5:42:1 | o | tst.js:85:23:85:23 | o | -| tst.js:37:9:42:1 | {\\n x: ... ;\\n }\\n} | tst.js:37:5:42:1 | o | +| tst.js:37:5:37:5 | o | tst.js:43:1:43:1 | o | +| tst.js:37:5:37:5 | o | tst.js:44:1:44:1 | o | +| tst.js:37:5:37:5 | o | tst.js:61:3:61:3 | o | +| tst.js:37:5:37:5 | o | tst.js:62:1:62:1 | o | +| tst.js:37:5:37:5 | o | tst.js:77:15:77:15 | o | +| tst.js:37:5:37:5 | o | tst.js:80:15:80:15 | o | +| tst.js:37:5:37:5 | o | tst.js:83:23:83:23 | o | +| tst.js:37:5:37:5 | o | tst.js:85:23:85:23 | o | +| tst.js:37:9:42:1 | {\\n x: ... ;\\n }\\n} | tst.js:37:5:37:5 | o | | tst.js:39:4:39:3 | this | tst.js:40:5:40:8 | this | | tst.js:46:10:46:11 | "" | tst.js:46:1:46:11 | global = "" | -| tst.js:49:1:54:1 | A | tst.js:55:1:55:1 | A | -| tst.js:49:1:54:1 | class A ... `\\n }\\n} | tst.js:49:1:54:1 | A | +| tst.js:49:1:54:1 | class A ... `\\n }\\n} | tst.js:49:7:49:7 | A | +| tst.js:49:7:49:7 | A | tst.js:55:1:55:1 | A | | tst.js:50:14:50:13 | this | tst.js:51:5:51:9 | implicit 'this' | | tst.js:64:1:67:1 | functio ... lysed\\n} | tst.js:64:11:64:11 | h | | tst.js:64:11:64:11 | h | tst.js:68:12:68:12 | h | -| tst.js:68:5:68:14 | iter | tst.js:69:1:69:4 | iter | -| tst.js:68:12:68:14 | h() | tst.js:68:5:68:14 | iter | +| tst.js:68:5:68:8 | iter | tst.js:69:1:69:4 | iter | +| tst.js:68:12:68:14 | h() | tst.js:68:5:68:8 | iter | | tst.js:77:10:77:10 | i | tst.js:78:3:78:3 | i | | tst.js:80:10:80:10 | v | tst.js:81:3:81:3 | v | | tst.js:83:18:83:18 | v | tst.js:83:26:83:26 | v | | tst.js:85:18:85:18 | v | tst.js:85:26:85:26 | v | | tst.js:87:2:92:1 | functio ... + z;\\n} | tst.js:87:1:92:2 | (functi ... + z;\\n}) | -| tst.js:87:11:87:24 | o | tst.js:88:18:88:18 | o | -| tst.js:87:11:87:24 | o | tst.js:90:15:90:15 | o | -| tst.js:87:11:87:24 | x | tst.js:91:10:91:10 | x | -| tst.js:87:13:87:16 | p: x | tst.js:87:11:87:24 | x | -| tst.js:87:22:87:22 | ...o | tst.js:87:11:87:24 | o | -| tst.js:88:7:88:18 | y | tst.js:91:14:91:14 | y | -| tst.js:88:9:88:12 | q: y | tst.js:88:7:88:18 | y | +| tst.js:87:13:87:16 | p: x | tst.js:87:16:87:16 | x | +| tst.js:87:16:87:16 | x | tst.js:91:10:91:10 | x | +| tst.js:87:22:87:22 | ...o | tst.js:87:22:87:22 | o | +| tst.js:87:22:87:22 | o | tst.js:88:18:88:18 | o | +| tst.js:87:22:87:22 | o | tst.js:90:15:90:15 | o | +| tst.js:88:9:88:12 | q: y | tst.js:88:12:88:12 | y | +| tst.js:88:12:88:12 | y | tst.js:91:14:91:14 | y | | tst.js:88:18:88:18 | o | tst.js:88:7:88:14 | { q: y } | -| tst.js:90:4:90:15 | z | tst.js:91:18:91:18 | z | | tst.js:90:4:90:15 | { r: z } = o | tst.js:90:3:90:16 | ({ r: z } = o) | -| tst.js:90:6:90:9 | r: z | tst.js:90:4:90:15 | z | +| tst.js:90:6:90:9 | r: z | tst.js:90:9:90:9 | z | +| tst.js:90:9:90:9 | z | tst.js:91:18:91:18 | z | | tst.js:90:15:90:15 | o | tst.js:90:4:90:11 | { r: z } | | tst.js:90:15:90:15 | o | tst.js:90:4:90:15 | { r: z } = o | | tst.js:91:10:91:18 | x + y + z | tst.js:87:1:96:2 | (functi ... r: 0\\n}) | | tst.js:91:10:91:18 | x + y + z | tst.js:87:2:92:1 | return of anonymous function | | tst.js:92:4:96:1 | {\\n p: ... r: 0\\n} | tst.js:87:11:87:24 | { p: x, ...o } | | tst.js:98:2:103:1 | functio ... + z;\\n} | tst.js:98:1:103:2 | (functi ... + z;\\n}) | -| tst.js:98:11:98:24 | rest | tst.js:99:15:99:18 | rest | -| tst.js:98:11:98:24 | rest | tst.js:101:13:101:16 | rest | -| tst.js:98:11:98:24 | x | tst.js:102:10:102:10 | x | -| tst.js:98:13:98:13 | x | tst.js:98:11:98:24 | x | -| tst.js:98:19:98:22 | ...rest | tst.js:98:11:98:24 | rest | -| tst.js:99:7:99:18 | y | tst.js:102:14:102:14 | y | -| tst.js:99:9:99:9 | y | tst.js:99:7:99:18 | y | +| tst.js:98:13:98:13 | x | tst.js:98:13:98:13 | x | +| tst.js:98:13:98:13 | x | tst.js:102:10:102:10 | x | +| tst.js:98:19:98:22 | ...rest | tst.js:98:19:98:22 | rest | +| tst.js:98:19:98:22 | rest | tst.js:99:15:99:18 | rest | +| tst.js:98:19:98:22 | rest | tst.js:101:13:101:16 | rest | +| tst.js:99:9:99:9 | y | tst.js:99:9:99:9 | y | +| tst.js:99:9:99:9 | y | tst.js:102:14:102:14 | y | | tst.js:99:15:99:18 | rest | tst.js:99:7:99:11 | [ y ] | -| tst.js:101:3:101:16 | z | tst.js:102:18:102:18 | z | -| tst.js:101:7:101:7 | z | tst.js:101:3:101:16 | z | +| tst.js:101:7:101:7 | z | tst.js:101:7:101:7 | z | +| tst.js:101:7:101:7 | z | tst.js:102:18:102:18 | z | | tst.js:101:13:101:16 | rest | tst.js:101:3:101:9 | [ , z ] | | tst.js:101:13:101:16 | rest | tst.js:101:3:101:16 | [ , z ] = rest | | tst.js:102:10:102:18 | x + y + z | tst.js:98:1:103:17 | (functi ... 3, 0 ]) | @@ -1125,41 +1125,41 @@ flowStep | tst.js:105:1:105:1 | x | tst.js:105:1:105:6 | x ?? y | | tst.js:105:6:105:6 | y | tst.js:105:1:105:6 | x ?? y | | tst.js:107:2:113:1 | functio ... v2c;\\n} | tst.js:107:1:113:2 | (functi ... v2c;\\n}) | -| tst.js:108:6:108:38 | v1a | tst.js:109:2:109:4 | v1a | -| tst.js:108:6:108:38 | v1b | tst.js:109:8:109:10 | v1b | -| tst.js:108:6:108:38 | v1c | tst.js:109:14:109:16 | v1c | -| tst.js:108:7:108:9 | v1a | tst.js:108:6:108:38 | v1a | -| tst.js:108:12:108:20 | v1b = o1b | tst.js:108:6:108:38 | v1b | -| tst.js:108:18:108:20 | o1b | tst.js:108:6:108:38 | v1b | -| tst.js:108:23:108:31 | v1c = o1c | tst.js:108:6:108:38 | v1c | -| tst.js:108:29:108:31 | o1c | tst.js:108:6:108:38 | v1c | +| tst.js:108:7:108:9 | v1a | tst.js:108:7:108:9 | v1a | +| tst.js:108:7:108:9 | v1a | tst.js:109:2:109:4 | v1a | +| tst.js:108:12:108:14 | v1b | tst.js:109:8:109:10 | v1b | +| tst.js:108:12:108:20 | v1b = o1b | tst.js:108:12:108:14 | v1b | +| tst.js:108:18:108:20 | o1b | tst.js:108:12:108:14 | v1b | +| tst.js:108:23:108:25 | v1c | tst.js:109:14:109:16 | v1c | +| tst.js:108:23:108:31 | v1c = o1c | tst.js:108:23:108:25 | v1c | +| tst.js:108:29:108:31 | o1c | tst.js:108:23:108:25 | v1c | | tst.js:108:36:108:38 | o1d | tst.js:108:6:108:32 | {v1a, v ... = o1c} | -| tst.js:111:6:111:38 | v2a | tst.js:112:2:112:4 | v2a | -| tst.js:111:6:111:38 | v2b | tst.js:112:8:112:10 | v2b | -| tst.js:111:6:111:38 | v2c | tst.js:112:14:112:16 | v2c | -| tst.js:111:7:111:9 | v2a | tst.js:111:6:111:38 | v2a | -| tst.js:111:12:111:14 | v2b | tst.js:111:6:111:38 | v2b | -| tst.js:111:18:111:20 | o2b | tst.js:111:6:111:38 | v2b | -| tst.js:111:23:111:25 | v2c | tst.js:111:6:111:38 | v2c | -| tst.js:111:29:111:31 | o2c | tst.js:111:6:111:38 | v2c | +| tst.js:111:7:111:9 | v2a | tst.js:111:7:111:9 | v2a | +| tst.js:111:7:111:9 | v2a | tst.js:112:2:112:4 | v2a | +| tst.js:111:12:111:14 | v2b | tst.js:111:12:111:14 | v2b | +| tst.js:111:12:111:14 | v2b | tst.js:112:8:112:10 | v2b | +| tst.js:111:18:111:20 | o2b | tst.js:111:12:111:14 | v2b | +| tst.js:111:23:111:25 | v2c | tst.js:111:23:111:25 | v2c | +| tst.js:111:23:111:25 | v2c | tst.js:112:14:112:16 | v2c | +| tst.js:111:29:111:31 | o2c | tst.js:111:23:111:25 | v2c | | tst.js:111:36:111:38 | o2d | tst.js:111:6:111:32 | [v2a, v ... = o2c] | | tst.js:115:1:115:12 | reflective call | tst.js:115:1:115:12 | Array.call() | getImmediatePredecessor | arguments.js:1:2:12:1 | functio ... , 3);\\n} | arguments.js:1:1:12:2 | (functi ... 3);\\n}) | -| arguments.js:2:5:2:5 | arguments | arguments.js:4:28:4:36 | arguments | -| arguments.js:2:5:2:5 | arguments | arguments.js:5:25:5:33 | arguments | -| arguments.js:2:5:2:5 | arguments | arguments.js:6:20:6:28 | arguments | +| arguments.js:2:5:2:4 | arguments | arguments.js:4:28:4:36 | arguments | +| arguments.js:2:5:2:4 | arguments | arguments.js:5:25:5:33 | arguments | +| arguments.js:2:5:2:4 | arguments | arguments.js:6:20:6:28 | arguments | | arguments.js:2:5:10:5 | functio ... ;\\n } | arguments.js:2:14:2:14 | f | | arguments.js:2:14:2:14 | f | arguments.js:11:5:11:5 | f | | arguments.js:2:16:2:16 | x | arguments.js:2:16:2:16 | x | | arguments.js:2:16:2:16 | x | arguments.js:3:24:3:24 | x | -| arguments.js:6:13:6:28 | args | arguments.js:7:24:7:27 | args | -| arguments.js:6:20:6:28 | arguments | arguments.js:6:13:6:28 | args | -| arguments.js:8:9:8:22 | arguments | arguments.js:9:27:9:35 | arguments | -| arguments.js:8:21:8:22 | {} | arguments.js:8:9:8:22 | arguments | +| arguments.js:6:13:6:16 | args | arguments.js:7:24:7:27 | args | +| arguments.js:6:20:6:28 | arguments | arguments.js:6:13:6:16 | args | +| arguments.js:8:9:8:17 | arguments | arguments.js:9:27:9:35 | arguments | +| arguments.js:8:21:8:22 | {} | arguments.js:8:9:8:17 | arguments | | arguments.js:8:21:8:22 | {} | arguments.js:8:9:8:22 | arguments = {} | -| eval.js:2:7:2:12 | x | eval.js:4:3:4:3 | x | -| eval.js:2:11:2:12 | 42 | eval.js:2:7:2:12 | x | +| eval.js:2:7:2:7 | x | eval.js:4:3:4:3 | x | +| eval.js:2:11:2:12 | 42 | eval.js:2:7:2:7 | x | | sources.js:1:6:1:6 | x | sources.js:1:6:1:6 | x | | sources.js:1:6:1:6 | x | sources.js:1:11:1:11 | x | | sources.js:1:6:1:11 | x => x | sources.js:1:5:1:12 | (x => x) | @@ -1173,14 +1173,14 @@ getImmediatePredecessor | sources.js:9:14:9:18 | array | sources.js:10:19:10:23 | array | | sources.js:9:14:9:18 | array | sources.js:11:23:11:27 | array | | sources.js:10:12:10:14 | key | sources.js:10:28:10:30 | key | -| sources.js:11:12:11:18 | key | sources.js:11:32:11:34 | key | -| sources.js:11:14:11:16 | key | sources.js:11:12:11:18 | key | -| tst2.ts:1:1:1:1 | A | tst2.ts:1:18:1:18 | A | -| tst2.ts:1:8:5:1 | A | tst2.ts:11:11:11:11 | A | -| tst2.ts:1:8:5:1 | A | tst2.ts:15:11:15:11 | A | -| tst2.ts:1:8:5:1 | namespa ... lysed\\n} | tst2.ts:1:8:5:1 | A | -| tst2.ts:2:14:2:19 | x | tst2.ts:4:3:4:3 | x | -| tst2.ts:2:18:2:19 | 42 | tst2.ts:2:14:2:19 | x | +| sources.js:11:14:11:16 | key | sources.js:11:14:11:16 | key | +| sources.js:11:14:11:16 | key | sources.js:11:32:11:34 | key | +| tst2.ts:1:1:1:0 | A | tst2.ts:1:18:1:18 | A | +| tst2.ts:1:8:5:1 | namespa ... lysed\\n} | tst2.ts:1:18:1:18 | A | +| tst2.ts:1:18:1:18 | A | tst2.ts:11:11:11:11 | A | +| tst2.ts:1:18:1:18 | A | tst2.ts:15:11:15:11 | A | +| tst2.ts:2:14:2:14 | x | tst2.ts:4:3:4:3 | x | +| tst2.ts:2:18:2:19 | 42 | tst2.ts:2:14:2:14 | x | | tst2.ts:7:1:7:0 | A | tst2.ts:8:3:8:3 | A | | tst2.ts:7:1:9:1 | functio ... = 23;\\n} | tst2.ts:7:10:7:13 | setX | | tst2.ts:7:10:7:13 | setX | tst2.ts:3:3:3:6 | setX | @@ -1194,43 +1194,43 @@ getImmediatePredecessor | tst.js:1:10:1:11 | fs | tst.js:1:10:1:11 | fs | | tst.js:1:10:1:11 | fs | tst.js:7:1:7:2 | fs | | tst.js:1:10:1:11 | fs | tst.js:22:24:22:25 | fs | -| tst.js:3:5:3:10 | x | tst.js:8:1:8:1 | x | -| tst.js:3:5:3:10 | x | tst.js:9:2:9:2 | x | -| tst.js:3:5:3:10 | x | tst.js:10:1:10:1 | x | -| tst.js:3:5:3:10 | x | tst.js:11:1:11:1 | x | -| tst.js:3:5:3:10 | x | tst.js:11:1:11:1 | x | -| tst.js:3:5:3:10 | x | tst.js:11:1:11:1 | x | -| tst.js:3:5:3:10 | x | tst.js:12:1:12:1 | x | -| tst.js:3:5:3:10 | x | tst.js:13:1:13:1 | x | -| tst.js:3:9:3:10 | 42 | tst.js:3:5:3:10 | x | -| tst.js:4:5:4:12 | y | tst.js:10:4:10:4 | y | -| tst.js:4:5:4:12 | y | tst.js:11:6:11:6 | y | -| tst.js:4:5:4:12 | y | tst.js:12:6:12:6 | y | -| tst.js:4:5:4:12 | y | tst.js:13:5:13:5 | y | -| tst.js:4:5:4:12 | y | tst.js:14:9:14:9 | y | -| tst.js:4:5:4:12 | y | tst.js:105:6:105:6 | y | -| tst.js:4:9:4:12 | "hi" | tst.js:4:5:4:12 | y | +| tst.js:3:5:3:5 | x | tst.js:8:1:8:1 | x | +| tst.js:3:5:3:5 | x | tst.js:9:2:9:2 | x | +| tst.js:3:5:3:5 | x | tst.js:10:1:10:1 | x | +| tst.js:3:5:3:5 | x | tst.js:11:1:11:1 | x | +| tst.js:3:5:3:5 | x | tst.js:11:1:11:1 | x | +| tst.js:3:5:3:5 | x | tst.js:11:1:11:1 | x | +| tst.js:3:5:3:5 | x | tst.js:12:1:12:7 | x | +| tst.js:3:5:3:5 | x | tst.js:13:1:13:6 | x | +| tst.js:3:9:3:10 | 42 | tst.js:3:5:3:5 | x | +| tst.js:4:5:4:5 | y | tst.js:10:4:10:4 | y | +| tst.js:4:5:4:5 | y | tst.js:11:6:11:6 | y | +| tst.js:4:5:4:5 | y | tst.js:12:6:12:6 | y | +| tst.js:4:5:4:5 | y | tst.js:13:5:13:5 | y | +| tst.js:4:5:4:5 | y | tst.js:14:9:14:9 | y | +| tst.js:4:5:4:5 | y | tst.js:105:6:105:6 | y | +| tst.js:4:9:4:12 | "hi" | tst.js:4:5:4:5 | y | | tst.js:9:2:9:2 | x | tst.js:9:1:9:3 | (x) | | tst.js:10:4:10:4 | y | tst.js:10:1:10:4 | x, y | -| tst.js:12:1:12:1 | x | tst.js:12:1:12:1 | x | -| tst.js:12:1:12:1 | x | tst.js:12:1:12:1 | x | -| tst.js:12:1:12:1 | x | tst.js:12:1:12:1 | x | -| tst.js:13:1:13:1 | x | tst.js:14:5:14:5 | x | -| tst.js:13:1:13:1 | x | tst.js:25:3:25:3 | x | -| tst.js:13:1:13:5 | z | tst.js:14:1:14:1 | z | -| tst.js:13:5:13:5 | y | tst.js:13:1:13:5 | z | +| tst.js:12:1:12:7 | x | tst.js:12:1:12:1 | x | +| tst.js:12:1:12:7 | x | tst.js:12:1:12:1 | x | +| tst.js:12:1:12:7 | x | tst.js:12:1:12:1 | x | +| tst.js:13:1:13:1 | z | tst.js:14:1:14:1 | z | +| tst.js:13:1:13:6 | x | tst.js:14:5:14:5 | x | +| tst.js:13:1:13:6 | x | tst.js:25:3:25:3 | x | +| tst.js:13:5:13:5 | y | tst.js:13:1:13:1 | z | | tst.js:13:5:13:5 | y | tst.js:13:1:13:5 | z = y | | tst.js:16:2:20:1 | functio ... n "";\\n} | tst.js:16:1:20:2 | (functi ... "";\\n}) | | tst.js:16:13:16:13 | a | tst.js:16:13:16:13 | a | | tst.js:16:13:16:13 | a | tst.js:18:12:18:12 | a | | tst.js:20:4:20:8 | "arg" | tst.js:16:13:16:13 | a | -| tst.js:22:5:22:25 | readFileSync | tst.js:23:1:23:12 | readFileSync | -| tst.js:22:7:22:18 | readFileSync | tst.js:22:5:22:25 | readFileSync | +| tst.js:22:7:22:18 | readFileSync | tst.js:22:7:22:18 | readFileSync | +| tst.js:22:7:22:18 | readFileSync | tst.js:23:1:23:12 | readFileSync | | tst.js:22:24:22:25 | fs | tst.js:22:5:22:20 | { readFileSync } | -| tst.js:25:1:25:3 | x | tst.js:26:1:26:1 | x | -| tst.js:25:1:25:3 | x | tst.js:57:7:57:7 | x | -| tst.js:25:1:25:3 | x | tst.js:58:11:58:11 | x | -| tst.js:25:1:25:3 | x | tst.js:105:1:105:1 | x | +| tst.js:25:3:25:3 | x | tst.js:26:1:26:1 | x | +| tst.js:25:3:25:3 | x | tst.js:57:7:57:7 | x | +| tst.js:25:3:25:3 | x | tst.js:58:11:58:11 | x | +| tst.js:25:3:25:3 | x | tst.js:105:1:105:1 | x | | tst.js:28:2:28:1 | x | tst.js:29:3:29:3 | x | | tst.js:28:2:29:3 | () =>\\n x | tst.js:28:1:30:1 | (() =>\\n ... ables\\n) | | tst.js:29:3:29:3 | x | tst.js:28:1:30:3 | (() =>\\n ... les\\n)() | @@ -1239,69 +1239,69 @@ getImmediatePredecessor | tst.js:32:10:32:10 | g | tst.js:35:1:35:1 | g | | tst.js:32:10:32:10 | g | tst.js:60:1:60:1 | g | | tst.js:32:10:32:10 | g | tst.js:62:4:62:4 | g | -| tst.js:37:5:42:1 | o | tst.js:43:1:43:1 | o | -| tst.js:37:5:42:1 | o | tst.js:44:1:44:1 | o | -| tst.js:37:5:42:1 | o | tst.js:61:3:61:3 | o | -| tst.js:37:5:42:1 | o | tst.js:62:1:62:1 | o | -| tst.js:37:5:42:1 | o | tst.js:77:15:77:15 | o | -| tst.js:37:5:42:1 | o | tst.js:80:15:80:15 | o | -| tst.js:37:5:42:1 | o | tst.js:83:23:83:23 | o | -| tst.js:37:5:42:1 | o | tst.js:85:23:85:23 | o | -| tst.js:37:9:42:1 | {\\n x: ... ;\\n }\\n} | tst.js:37:5:42:1 | o | +| tst.js:37:5:37:5 | o | tst.js:43:1:43:1 | o | +| tst.js:37:5:37:5 | o | tst.js:44:1:44:1 | o | +| tst.js:37:5:37:5 | o | tst.js:61:3:61:3 | o | +| tst.js:37:5:37:5 | o | tst.js:62:1:62:1 | o | +| tst.js:37:5:37:5 | o | tst.js:77:15:77:15 | o | +| tst.js:37:5:37:5 | o | tst.js:80:15:80:15 | o | +| tst.js:37:5:37:5 | o | tst.js:83:23:83:23 | o | +| tst.js:37:5:37:5 | o | tst.js:85:23:85:23 | o | +| tst.js:37:9:42:1 | {\\n x: ... ;\\n }\\n} | tst.js:37:5:37:5 | o | | tst.js:39:4:39:3 | this | tst.js:40:5:40:8 | this | | tst.js:46:10:46:11 | "" | tst.js:46:1:46:11 | global = "" | -| tst.js:49:1:54:1 | A | tst.js:55:1:55:1 | A | -| tst.js:49:1:54:1 | class A ... `\\n }\\n} | tst.js:49:1:54:1 | A | +| tst.js:49:1:54:1 | class A ... `\\n }\\n} | tst.js:49:7:49:7 | A | +| tst.js:49:7:49:7 | A | tst.js:55:1:55:1 | A | | tst.js:50:14:50:13 | this | tst.js:51:5:51:9 | implicit 'this' | | tst.js:64:1:67:1 | functio ... lysed\\n} | tst.js:64:11:64:11 | h | | tst.js:64:11:64:11 | h | tst.js:68:12:68:12 | h | -| tst.js:68:5:68:14 | iter | tst.js:69:1:69:4 | iter | -| tst.js:68:12:68:14 | h() | tst.js:68:5:68:14 | iter | +| tst.js:68:5:68:8 | iter | tst.js:69:1:69:4 | iter | +| tst.js:68:12:68:14 | h() | tst.js:68:5:68:8 | iter | | tst.js:77:10:77:10 | i | tst.js:78:3:78:3 | i | | tst.js:80:10:80:10 | v | tst.js:81:3:81:3 | v | | tst.js:83:18:83:18 | v | tst.js:83:26:83:26 | v | | tst.js:85:18:85:18 | v | tst.js:85:26:85:26 | v | | tst.js:87:2:92:1 | functio ... + z;\\n} | tst.js:87:1:92:2 | (functi ... + z;\\n}) | -| tst.js:87:11:87:24 | o | tst.js:88:18:88:18 | o | -| tst.js:87:11:87:24 | o | tst.js:90:15:90:15 | o | -| tst.js:87:11:87:24 | x | tst.js:91:10:91:10 | x | -| tst.js:87:13:87:16 | p: x | tst.js:87:11:87:24 | x | -| tst.js:87:22:87:22 | ...o | tst.js:87:11:87:24 | o | -| tst.js:88:7:88:18 | y | tst.js:91:14:91:14 | y | -| tst.js:88:9:88:12 | q: y | tst.js:88:7:88:18 | y | +| tst.js:87:13:87:16 | p: x | tst.js:87:16:87:16 | x | +| tst.js:87:16:87:16 | x | tst.js:91:10:91:10 | x | +| tst.js:87:22:87:22 | ...o | tst.js:87:22:87:22 | o | +| tst.js:87:22:87:22 | o | tst.js:88:18:88:18 | o | +| tst.js:87:22:87:22 | o | tst.js:90:15:90:15 | o | +| tst.js:88:9:88:12 | q: y | tst.js:88:12:88:12 | y | +| tst.js:88:12:88:12 | y | tst.js:91:14:91:14 | y | | tst.js:88:18:88:18 | o | tst.js:88:7:88:14 | { q: y } | -| tst.js:90:4:90:15 | z | tst.js:91:18:91:18 | z | | tst.js:90:4:90:15 | { r: z } = o | tst.js:90:3:90:16 | ({ r: z } = o) | -| tst.js:90:6:90:9 | r: z | tst.js:90:4:90:15 | z | +| tst.js:90:6:90:9 | r: z | tst.js:90:9:90:9 | z | +| tst.js:90:9:90:9 | z | tst.js:91:18:91:18 | z | | tst.js:90:15:90:15 | o | tst.js:90:4:90:11 | { r: z } | | tst.js:90:15:90:15 | o | tst.js:90:4:90:15 | { r: z } = o | | tst.js:91:10:91:18 | x + y + z | tst.js:87:1:96:2 | (functi ... r: 0\\n}) | | tst.js:92:4:96:1 | {\\n p: ... r: 0\\n} | tst.js:87:11:87:24 | { p: x, ...o } | | tst.js:98:2:103:1 | functio ... + z;\\n} | tst.js:98:1:103:2 | (functi ... + z;\\n}) | -| tst.js:98:11:98:24 | rest | tst.js:99:15:99:18 | rest | -| tst.js:98:11:98:24 | rest | tst.js:101:13:101:16 | rest | -| tst.js:98:11:98:24 | x | tst.js:102:10:102:10 | x | -| tst.js:98:13:98:13 | x | tst.js:98:11:98:24 | x | -| tst.js:98:19:98:22 | ...rest | tst.js:98:11:98:24 | rest | -| tst.js:99:7:99:18 | y | tst.js:102:14:102:14 | y | -| tst.js:99:9:99:9 | y | tst.js:99:7:99:18 | y | +| tst.js:98:13:98:13 | x | tst.js:98:13:98:13 | x | +| tst.js:98:13:98:13 | x | tst.js:102:10:102:10 | x | +| tst.js:98:19:98:22 | ...rest | tst.js:98:19:98:22 | rest | +| tst.js:98:19:98:22 | rest | tst.js:99:15:99:18 | rest | +| tst.js:98:19:98:22 | rest | tst.js:101:13:101:16 | rest | +| tst.js:99:9:99:9 | y | tst.js:99:9:99:9 | y | +| tst.js:99:9:99:9 | y | tst.js:102:14:102:14 | y | | tst.js:99:15:99:18 | rest | tst.js:99:7:99:11 | [ y ] | -| tst.js:101:3:101:16 | z | tst.js:102:18:102:18 | z | -| tst.js:101:7:101:7 | z | tst.js:101:3:101:16 | z | +| tst.js:101:7:101:7 | z | tst.js:101:7:101:7 | z | +| tst.js:101:7:101:7 | z | tst.js:102:18:102:18 | z | | tst.js:101:13:101:16 | rest | tst.js:101:3:101:9 | [ , z ] | | tst.js:101:13:101:16 | rest | tst.js:101:3:101:16 | [ , z ] = rest | | tst.js:102:10:102:18 | x + y + z | tst.js:98:1:103:17 | (functi ... 3, 0 ]) | | tst.js:103:4:103:16 | [ 19, 23, 0 ] | tst.js:98:11:98:24 | [ x, ...rest ] | | tst.js:107:2:113:1 | functio ... v2c;\\n} | tst.js:107:1:113:2 | (functi ... v2c;\\n}) | -| tst.js:108:6:108:38 | v1a | tst.js:109:2:109:4 | v1a | -| tst.js:108:6:108:38 | v1b | tst.js:109:8:109:10 | v1b | -| tst.js:108:6:108:38 | v1c | tst.js:109:14:109:16 | v1c | -| tst.js:108:7:108:9 | v1a | tst.js:108:6:108:38 | v1a | +| tst.js:108:7:108:9 | v1a | tst.js:108:7:108:9 | v1a | +| tst.js:108:7:108:9 | v1a | tst.js:109:2:109:4 | v1a | +| tst.js:108:12:108:14 | v1b | tst.js:109:8:109:10 | v1b | +| tst.js:108:23:108:25 | v1c | tst.js:109:14:109:16 | v1c | | tst.js:108:36:108:38 | o1d | tst.js:108:6:108:32 | {v1a, v ... = o1c} | -| tst.js:111:6:111:38 | v2a | tst.js:112:2:112:4 | v2a | -| tst.js:111:6:111:38 | v2b | tst.js:112:8:112:10 | v2b | -| tst.js:111:6:111:38 | v2c | tst.js:112:14:112:16 | v2c | -| tst.js:111:7:111:9 | v2a | tst.js:111:6:111:38 | v2a | +| tst.js:111:7:111:9 | v2a | tst.js:111:7:111:9 | v2a | +| tst.js:111:7:111:9 | v2a | tst.js:112:2:112:4 | v2a | +| tst.js:111:12:111:14 | v2b | tst.js:112:8:112:10 | v2b | +| tst.js:111:23:111:25 | v2c | tst.js:112:14:112:16 | v2c | | tst.js:111:36:111:38 | o2d | tst.js:111:6:111:32 | [v2a, v ... = o2c] | | tst.js:115:1:115:12 | reflective call | tst.js:115:1:115:12 | Array.call() | | tst.js:117:22:117:23 | x1 | tst.js:117:10:117:24 | Object.seal(x1) | @@ -1340,7 +1340,7 @@ incomplete | arguments.js:11:5:11:14 | exceptional return of f(1, 2, 3) | call | | arguments.js:11:5:11:14 | f(1, 2, 3) | call | | eval.js:1:1:5:1 | exceptional return of function k | call | -| eval.js:2:7:2:12 | x | eval | +| eval.js:2:7:2:7 | x | eval | | eval.js:3:3:3:6 | eval | global | | eval.js:3:3:3:16 | eval("x = 23") | call | | eval.js:3:3:3:16 | exceptional return of eval("x = 23") | call | @@ -1351,9 +1351,9 @@ incomplete | sources.js:9:1:12:1 | exceptional return of function foo | call | | sources.js:9:14:9:18 | array | call | | sources.js:10:12:10:14 | key | heap | -| sources.js:11:12:11:18 | key | heap | | sources.js:11:14:11:16 | key | heap | -| tst2.ts:2:14:2:19 | x | namespace | +| sources.js:11:14:11:16 | key | heap | +| tst2.ts:2:14:2:14 | x | namespace | | tst2.ts:3:3:3:8 | exceptional return of setX() | call | | tst2.ts:3:3:3:8 | setX() | call | | tst2.ts:7:1:9:1 | exceptional return of function setX | call | diff --git a/javascript/ql/test/library-tests/DefUse/DefUsePair.expected b/javascript/ql/test/library-tests/DefUse/DefUsePair.expected index f029dd71b6cd..fe8ec09345bd 100644 --- a/javascript/ql/test/library-tests/DefUse/DefUsePair.expected +++ b/javascript/ql/test/library-tests/DefUse/DefUsePair.expected @@ -1,9 +1,9 @@ -| classes.js:7:5:8:5 | def@7:5 | classes.js:10:5:10:12 | LocalFoo | +| classes.js:7:11:7:18 | def@7:11 | classes.js:10:5:10:12 | LocalFoo | | es2015.js:1:10:1:11 | def@1:10 | es2015.js:2:3:2:4 | fn | | es2015.js:5:16:5:16 | def@5:16 | es2015.js:5:32:5:32 | i | | es2015.js:5:16:5:16 | def@5:16 | es2015.js:5:34:5:34 | i | | es2015modules.js:1:10:1:12 | def@1:10 | es2015modules.js:4:3:4:5 | foo | -| es2015modules.js:1:15:1:24 | def@1:15 | es2015modules.js:6:3:6:5 | baz | +| es2015modules.js:1:22:1:24 | def@1:22 | es2015modules.js:6:3:6:5 | baz | | es2015modules.js:10:10:10:13 | def@10:10 | es2015modules.js:7:3:7:6 | quux | | es2015modules.js:15:17:15:17 | def@15:17 | es2015modules.js:12:1:12:1 | f | | es2015modules.js:16:25:16:25 | def@16:25 | es2015modules.js:13:1:13:1 | g | @@ -14,17 +14,17 @@ | fundecls.js:30:12:30:12 | def@30:12 | fundecls.js:28:3:28:3 | f | | fundecls.js:36:12:36:12 | def@36:12 | fundecls.js:35:3:35:3 | f | | fundecls.js:39:11:39:11 | def@39:11 | fundecls.js:40:7:40:7 | x | -| fundecls.js:45:3:45:3 | phi@45:3 | fundecls.js:45:3:45:3 | f | +| fundecls.js:45:3:45:6 | phi@45:3 | fundecls.js:45:3:45:3 | f | | fundecls.js:48:11:48:11 | def@48:11 | fundecls.js:50:7:50:7 | x | | tst.js:1:12:1:12 | def@1:12 | tst.js:3:12:3:12 | o | | tst.js:1:12:1:12 | def@1:12 | tst.js:5:16:5:16 | o | -| tst.js:2:9:2:14 | def@2:9 | tst.js:8:17:8:17 | y | -| tst.js:3:2:3:2 | phi@3:2 | tst.js:4:5:4:5 | i | -| tst.js:5:2:5:2 | phi@5:2 | tst.js:7:6:7:6 | i | -| tst.js:5:2:5:2 | phi@5:2 | tst.js:8:14:8:14 | z | +| tst.js:2:9:2:9 | def@2:9 | tst.js:8:17:8:17 | y | +| tst.js:3:2:4:6 | phi@3:2 | tst.js:4:5:4:5 | i | +| tst.js:5:2:7:7 | phi@5:2 | tst.js:7:6:7:6 | i | +| tst.js:5:2:7:7 | phi@5:2 | tst.js:8:14:8:14 | z | | tst.js:5:11:5:11 | def@5:11 | tst.js:6:7:6:7 | z | -| tst.js:12:2:12:7 | def@12:2 | tst.js:14:9:14:9 | x | +| tst.js:12:2:12:2 | def@12:2 | tst.js:14:9:14:9 | x | | tst.js:19:11:19:11 | def@19:11 | tst.js:18:9:18:9 | x | -| tst.js:23:6:23:23 | def@23:6 | tst.js:24:2:24:2 | a | -| tst.js:23:6:23:23 | def@23:6 | tst.js:24:6:24:6 | c | +| tst.js:23:7:23:7 | def@23:7 | tst.js:24:2:24:2 | a | +| tst.js:23:14:23:14 | def@23:14 | tst.js:24:6:24:6 | c | | tst.js:26:11:26:11 | def@26:11 | tst.js:27:2:27:2 | a | diff --git a/javascript/ql/test/library-tests/GlobalAccessPaths/GlobalAccessPaths.expected b/javascript/ql/test/library-tests/GlobalAccessPaths/GlobalAccessPaths.expected index b216e18c71d8..c6ca30cd3292 100644 --- a/javascript/ql/test/library-tests/GlobalAccessPaths/GlobalAccessPaths.expected +++ b/javascript/ql/test/library-tests/GlobalAccessPaths/GlobalAccessPaths.expected @@ -9,22 +9,22 @@ test_getAReferenceTo | other_ns.js:4:9:4:10 | NS | NS | | other_ns.js:4:9:4:16 | NS \|\| {} | NS | | other_ns.js:6:1:6:8 | Conflict | Conflict | -| test.js:2:7:2:17 | v | foo.bar | +| test.js:2:7:2:7 | v | foo.bar | | test.js:2:11:2:13 | foo | foo | | test.js:2:11:2:17 | foo.bar | foo.bar | | test.js:3:3:3:3 | v | foo.bar | | test.js:3:3:3:7 | v.baz | foo.bar.baz | | test.js:4:7:4:24 | { baz, a, b: {c} } | foo.bar | -| test.js:4:7:4:28 | c | foo.bar.b.c | | test.js:4:9:4:11 | baz | foo.bar.baz | | test.js:4:14:4:14 | a | foo.bar.a | | test.js:4:17:4:22 | b: {c} | foo.bar.b | | test.js:4:20:4:22 | {c} | foo.bar.b | | test.js:4:21:4:21 | c | foo.bar.b.c | +| test.js:4:21:4:21 | c | foo.bar.b.c | | test.js:4:28:4:28 | v | foo.bar | | test.js:5:11:5:11 | c | foo.bar.b.c | | test.js:5:11:5:13 | c.d | foo.bar.b.c.d | -| test.js:7:7:7:16 | w | window | +| test.js:7:7:7:7 | w | window | | test.js:7:11:7:16 | window | window | | test.js:8:13:8:18 | window | window | | test.js:8:13:8:20 | window.x | x | @@ -35,11 +35,11 @@ test_getAReferenceTo | test.js:10:13:10:13 | w | window | | test.js:10:13:10:15 | w.x | x | | test.js:10:13:10:17 | w.x.y | x.y | -| test.js:12:7:12:25 | notUnique | foo.bar | +| test.js:12:7:12:15 | notUnique | foo.bar | | test.js:12:19:12:21 | foo | foo | | test.js:12:19:12:25 | foo.bar | foo.bar | | test.js:13:7:13:15 | something | something | -| test.js:14:5:14:23 | notUnique | bar.baz | +| test.js:14:5:14:13 | notUnique | bar.baz | | test.js:14:5:14:23 | notUnique = bar.baz | bar.baz | | test.js:14:17:14:19 | bar | bar | | test.js:14:17:14:23 | bar.baz | bar.baz | @@ -56,7 +56,7 @@ test_getAReferenceTo | test.js:33:7:33:18 | { bar = {} } | foo | | test.js:33:9:33:16 | bar = {} | foo.bar | | test.js:33:22:33:24 | foo | foo | -| test.js:39:3:39:20 | lazyInit | foo.bar | +| test.js:39:3:39:10 | lazyInit | foo.bar | | test.js:39:3:39:20 | lazyInit = foo.bar | foo.bar | | test.js:39:14:39:16 | foo | foo | | test.js:39:14:39:20 | foo.bar | foo.bar | @@ -77,7 +77,7 @@ test_getAReferenceTo | test.js:68:11:68:34 | Object. ... ar).baz | foo.bar.baz | | test.js:68:23:68:25 | foo | foo | | test.js:68:23:68:29 | foo.bar | foo.bar | -| test.js:69:6:69:15 | O | Object | +| test.js:69:6:69:6 | O | Object | | test.js:69:10:69:15 | Object | Object | | test.js:70:11:70:11 | O | Object | | test.js:70:11:70:16 | O.seal | Object.seal | diff --git a/javascript/ql/test/library-tests/SSA/GetRhsNode/GetRhsNode.expected b/javascript/ql/test/library-tests/SSA/GetRhsNode/GetRhsNode.expected index e971020cdd61..fba49cf683bb 100644 --- a/javascript/ql/test/library-tests/SSA/GetRhsNode/GetRhsNode.expected +++ b/javascript/ql/test/library-tests/SSA/GetRhsNode/GetRhsNode.expected @@ -1,14 +1,14 @@ -| tst.js:2:7:2:13 | a = g() | tst.js:2:7:2:7 | a | tst.js:2:11:2:13 | g() | -| tst.js:4:7:4:24 | { propB: b } = g() | tst.js:4:16:4:16 | b | tst.js:4:9:4:16 | propB: b | -| tst.js:6:7:6:34 | { propC ... } = g() | tst.js:6:16:6:16 | c | tst.js:6:9:6:16 | propC: c | -| tst.js:6:7:6:34 | { propC ... } = g() | tst.js:6:26:6:26 | d | tst.js:6:19:6:26 | propD: d | -| tst.js:8:7:8:41 | { array ... } = g() | tst.js:8:22:8:25 | elm1 | tst.js:8:22:8:25 | elm1 | -| tst.js:8:7:8:41 | { array ... } = g() | tst.js:8:28:8:31 | elm2 | tst.js:8:28:8:31 | elm2 | -| tst.js:17:3:17:22 | ({ propB: b }) = g() | tst.js:4:16:4:16 | b | tst.js:17:6:17:13 | propB: b | -| tst.js:19:3:19:32 | ({ prop ... ) = g() | tst.js:6:16:6:16 | c | tst.js:19:6:19:13 | propC: c | -| tst.js:19:3:19:32 | ({ prop ... ) = g() | tst.js:6:26:6:26 | d | tst.js:19:16:19:23 | propD: d | -| tst.js:21:3:21:22 | [ elm1, elm2 ] = g() | tst.js:8:22:8:25 | elm1 | tst.js:21:5:21:8 | elm1 | -| tst.js:21:3:21:22 | [ elm1, elm2 ] = g() | tst.js:8:28:8:31 | elm2 | tst.js:21:11:21:14 | elm2 | -| tst.js:31:12:31:23 | [elm1, elm2] | tst.js:31:13:31:16 | elm1 | tst.js:31:13:31:16 | elm1 | -| tst.js:31:12:31:23 | [elm1, elm2] | tst.js:31:19:31:22 | elm2 | tst.js:31:19:31:22 | elm2 | -| tst.js:31:26:31:40 | { prop: value } | tst.js:31:34:31:38 | value | tst.js:31:28:31:38 | prop: value | +| tst.js:2:7:2:7 | a = g() | tst.js:2:7:2:7 | a | tst.js:2:11:2:13 | g() | +| tst.js:4:16:4:16 | { propB: b } = g() | tst.js:4:16:4:16 | b | tst.js:4:9:4:16 | propB: b | +| tst.js:6:16:6:16 | { propC ... } = g() | tst.js:6:16:6:16 | c | tst.js:6:9:6:16 | propC: c | +| tst.js:6:26:6:26 | { propC ... } = g() | tst.js:6:26:6:26 | d | tst.js:6:19:6:26 | propD: d | +| tst.js:8:22:8:25 | { array ... } = g() | tst.js:8:22:8:25 | elm1 | tst.js:8:22:8:25 | elm1 | +| tst.js:8:28:8:31 | { array ... } = g() | tst.js:8:28:8:31 | elm2 | tst.js:8:28:8:31 | elm2 | +| tst.js:17:13:17:13 | ({ propB: b }) = g() | tst.js:4:16:4:16 | b | tst.js:17:6:17:13 | propB: b | +| tst.js:19:13:19:13 | ({ prop ... ) = g() | tst.js:6:16:6:16 | c | tst.js:19:6:19:13 | propC: c | +| tst.js:19:23:19:23 | ({ prop ... ) = g() | tst.js:6:26:6:26 | d | tst.js:19:16:19:23 | propD: d | +| tst.js:21:5:21:8 | [ elm1, elm2 ] = g() | tst.js:8:22:8:25 | elm1 | tst.js:21:5:21:8 | elm1 | +| tst.js:21:11:21:14 | [ elm1, elm2 ] = g() | tst.js:8:28:8:31 | elm2 | tst.js:21:11:21:14 | elm2 | +| tst.js:31:13:31:16 | [elm1, elm2] | tst.js:31:13:31:16 | elm1 | tst.js:31:13:31:16 | elm1 | +| tst.js:31:19:31:22 | [elm1, elm2] | tst.js:31:19:31:22 | elm2 | tst.js:31:19:31:22 | elm2 | +| tst.js:31:34:31:38 | { prop: value } | tst.js:31:34:31:38 | value | tst.js:31:28:31:38 | prop: value | diff --git a/javascript/ql/test/library-tests/SSA/SSADefinition/SSADefinition.expected b/javascript/ql/test/library-tests/SSA/SSADefinition/SSADefinition.expected index 77536822831f..9bc6c4723744 100644 --- a/javascript/ql/test/library-tests/SSA/SSADefinition/SSADefinition.expected +++ b/javascript/ql/test/library-tests/SSA/SSADefinition/SSADefinition.expected @@ -1,39 +1,39 @@ -| tst.js:1:1:1:1 | implicit initialization of y | +| tst.js:1:1:1:0 | implicit initialization of y | | tst.js:1:12:1:12 | x | | tst.js:3:7:3:7 | x = refine[guard: x is false](def@1:12) | | tst.js:3:7:3:7 | x = refine[guard: x is true](def@1:12) | -| tst.js:4:5:4:9 | y = x | -| tst.js:5:3:5:3 | x = phi(refine[guard: x is false]@3:7, refine[guard: x is true]@3:7) | -| tst.js:5:3:5:3 | y = phi(def@4:5, implicitInit@1:1) | -| tst.js:5:3:5:7 | z = y | +| tst.js:4:5:4:5 | y = x | +| tst.js:5:3:5:3 | z = y | +| tst.js:5:3:5:8 | x = phi(refine[guard: x is false]@3:7, refine[guard: x is true]@3:7) | +| tst.js:5:3:5:8 | y = phi(def@4:5, implicitInit@1:1) | | tst.js:6:10:6:10 | x = phi(phi@5:3, refine[guard: x is true]@6:10) | | tst.js:6:10:6:10 | x = refine[guard: x is true](phi@6:10) | | tst.js:6:10:6:10 | z = phi(def@5:3, def@7:5) | -| tst.js:7:5:7:7 | z++ | -| tst.js:11:1:11:1 | implicit initialization of x | +| tst.js:7:5:7:5 | z++ | +| tst.js:11:1:11:0 | implicit initialization of x | | tst.js:11:12:11:12 | x | | tst.js:12:3:12:2 | capture variable x | -| tst.js:15:3:15:8 | x = 42 | -| tst.js:18:1:18:1 | implicit initialization of x | -| tst.js:19:7:19:11 | x = 0 | +| tst.js:15:3:15:3 | x = 42 | +| tst.js:18:1:18:0 | implicit initialization of x | +| tst.js:19:7:19:7 | x = 0 | +| tst.js:20:3:20:2 | capture variable x | | tst.js:20:3:20:2 | capture variable x | | tst.js:20:13:20:16 | iter | -| tst.js:22:5:22:9 | capture variable x | -| tst.js:25:7:25:18 | gen = iter() | -| tst.js:27:3:27:5 | ++x | -| tst.js:31:1:31:1 | implicit initialization of x | -| tst.js:31:1:31:1 | implicit initialization of y | +| tst.js:25:7:25:9 | gen = iter() | +| tst.js:27:5:27:5 | ++x | +| tst.js:31:1:31:0 | capture variable x | +| tst.js:31:1:31:0 | implicit initialization of x | +| tst.js:31:1:31:0 | implicit initialization of y | | tst.js:32:3:32:2 | capture variable x | | tst.js:32:3:32:2 | capture variable y | | tst.js:32:12:32:16 | inner | -| tst.js:34:5:34:10 | x += y | -| tst.js:36:7:36:11 | x = 0 | -| tst.js:36:14:36:18 | y = 1 | -| tst.js:37:3:37:9 | capture variable x | -| tst.js:41:1:41:1 | implicit initialization of x | -| tst.js:42:7:42:11 | x = 0 | -| tst.js:42:14:42:18 | y = 1 | -| tst.js:43:7:43:37 | inc = ( ... */ ++x | +| tst.js:34:5:34:5 | x += y | +| tst.js:36:7:36:7 | x = 0 | +| tst.js:36:14:36:14 | y = 1 | +| tst.js:41:1:41:0 | capture variable x | +| tst.js:41:1:41:0 | implicit initialization of x | +| tst.js:42:7:42:7 | x = 0 | +| tst.js:42:14:42:14 | y = 1 | +| tst.js:43:7:43:9 | inc = ( ... */ ++x | | tst.js:43:13:43:12 | capture variable x | -| tst.js:43:35:43:37 | ++x | -| tst.js:44:3:44:11 | capture variable x | +| tst.js:43:37:43:37 | ++x | diff --git a/javascript/ql/test/library-tests/StringConcatenation/StringOps.expected b/javascript/ql/test/library-tests/StringConcatenation/StringOps.expected index fa1632d27574..c21fbad32923 100644 --- a/javascript/ql/test/library-tests/StringConcatenation/StringOps.expected +++ b/javascript/ql/test/library-tests/StringConcatenation/StringOps.expected @@ -6,26 +6,26 @@ concatenation | html-concat.js:3:14:3:26 | `${x}` | | html-concat.js:5:21:5:47 | `Hey ` | | html-concat.js:7:18:10:24 | `\\n H ... m!` | -| html-concat.js:13:3:13:18 | buffer | +| html-concat.js:13:3:13:8 | buffer | | html-concat.js:13:3:13:18 | buffer += '
  • ' | -| html-concat.js:14:3:14:13 | buffer | +| html-concat.js:14:3:14:8 | buffer | | html-concat.js:14:3:14:13 | buffer += x | -| html-concat.js:15:3:15:15 | buffer | +| html-concat.js:15:3:15:8 | buffer | | html-concat.js:15:3:15:15 | buffer += '!' | -| tst.js:3:3:3:12 | x | +| tst.js:3:3:3:3 | x | | tst.js:3:3:3:12 | x += "two" | -| tst.js:4:3:4:14 | x | +| tst.js:4:3:4:3 | x | | tst.js:4:3:4:14 | x += "three" | -| tst.js:5:3:5:13 | x | +| tst.js:5:3:5:3 | x | | tst.js:5:3:5:13 | x += "four" | -| tst.js:12:5:12:26 | x | +| tst.js:12:5:12:5 | x | | tst.js:12:5:12:26 | x += "o ... + "two" | | tst.js:12:10:12:18 | "one" + y | | tst.js:12:10:12:26 | "one" + y + "two" | -| tst.js:14:3:14:13 | x | +| tst.js:14:3:14:3 | x | | tst.js:14:3:14:13 | x += "last" | | tst.js:19:11:19:23 | "one" + "two" | -| tst.js:20:3:20:25 | x | +| tst.js:20:3:20:3 | x | | tst.js:20:3:20:25 | x += (" ... "four") | | tst.js:20:9:20:24 | "three" + "four" | | tst.js:21:10:21:19 | x + "five" | @@ -43,9 +43,9 @@ concatenation | tst.js:61:10:61:34 | `first ... } last` | | tst.js:77:15:77:37 | ["one", ... three"] | | tst.js:79:12:79:23 | array.join() | -| tst.js:87:5:87:14 | x | +| tst.js:87:5:87:5 | x | | tst.js:87:5:87:14 | x += 'two' | -| tst.js:89:3:89:14 | x | +| tst.js:89:3:89:3 | x | | tst.js:89:3:89:14 | x += 'three' | | tst.js:95:7:95:30 | x.conca ... three') | | tst.js:104:11:104:23 | "foo" + "bar" | @@ -262,31 +262,31 @@ concatenationNode | html-concat.js:8:13:8:13 | x | | html-concat.js:8:15:10:23 | .\\n \\n ... um! | | html-concat.js:13:3:13:8 | buffer | -| html-concat.js:13:3:13:18 | buffer | +| html-concat.js:13:3:13:8 | buffer | | html-concat.js:13:3:13:18 | buffer += '
  • ' | | html-concat.js:13:13:13:18 | '
  • ' | | html-concat.js:14:3:14:8 | buffer | -| html-concat.js:14:3:14:13 | buffer | +| html-concat.js:14:3:14:8 | buffer | | html-concat.js:14:3:14:13 | buffer += x | | html-concat.js:14:13:14:13 | x | | html-concat.js:15:3:15:8 | buffer | -| html-concat.js:15:3:15:15 | buffer | +| html-concat.js:15:3:15:8 | buffer | | html-concat.js:15:3:15:15 | buffer += '!' | | html-concat.js:15:13:15:15 | '!' | | tst.js:3:3:3:3 | x | -| tst.js:3:3:3:12 | x | +| tst.js:3:3:3:3 | x | | tst.js:3:3:3:12 | x += "two" | | tst.js:3:8:3:12 | "two" | | tst.js:4:3:4:3 | x | -| tst.js:4:3:4:14 | x | +| tst.js:4:3:4:3 | x | | tst.js:4:3:4:14 | x += "three" | | tst.js:4:8:4:14 | "three" | | tst.js:5:3:5:3 | x | -| tst.js:5:3:5:13 | x | +| tst.js:5:3:5:3 | x | | tst.js:5:3:5:13 | x += "four" | | tst.js:5:8:5:13 | "four" | | tst.js:12:5:12:5 | x | -| tst.js:12:5:12:26 | x | +| tst.js:12:5:12:5 | x | | tst.js:12:5:12:26 | x += "o ... + "two" | | tst.js:12:10:12:14 | "one" | | tst.js:12:10:12:18 | "one" + y | @@ -294,14 +294,14 @@ concatenationNode | tst.js:12:18:12:18 | y | | tst.js:12:22:12:26 | "two" | | tst.js:14:3:14:3 | x | -| tst.js:14:3:14:13 | x | +| tst.js:14:3:14:3 | x | | tst.js:14:3:14:13 | x += "last" | | tst.js:14:8:14:13 | "last" | | tst.js:19:11:19:15 | "one" | | tst.js:19:11:19:23 | "one" + "two" | | tst.js:19:19:19:23 | "two" | | tst.js:20:3:20:3 | x | -| tst.js:20:3:20:25 | x | +| tst.js:20:3:20:3 | x | | tst.js:20:3:20:25 | x += (" ... "four") | | tst.js:20:8:20:25 | ("three" + "four") | | tst.js:20:9:20:15 | "three" | @@ -349,11 +349,11 @@ concatenationNode | tst.js:77:30:77:36 | "three" | | tst.js:79:12:79:23 | array.join() | | tst.js:87:5:87:5 | x | -| tst.js:87:5:87:14 | x | +| tst.js:87:5:87:5 | x | | tst.js:87:5:87:14 | x += 'two' | | tst.js:87:10:87:14 | 'two' | | tst.js:89:3:89:3 | x | -| tst.js:89:3:89:14 | x | +| tst.js:89:3:89:3 | x | | tst.js:89:3:89:14 | x += 'three' | | tst.js:89:8:89:14 | 'three' | | tst.js:95:7:95:7 | x | @@ -396,46 +396,46 @@ operand | html-concat.js:7:18:10:24 | `\\n H ... m!` | 0 | html-concat.js:7:19:8:10 | \\n Hello | | html-concat.js:7:18:10:24 | `\\n H ... m!` | 1 | html-concat.js:8:13:8:13 | x | | html-concat.js:7:18:10:24 | `\\n H ... m!` | 2 | html-concat.js:8:15:10:23 | .\\n \\n ... um! | -| html-concat.js:13:3:13:18 | buffer | 0 | html-concat.js:13:3:13:8 | buffer | -| html-concat.js:13:3:13:18 | buffer | 1 | html-concat.js:13:13:13:18 | '
  • ' | +| html-concat.js:13:3:13:8 | buffer | 0 | html-concat.js:13:3:13:8 | buffer | +| html-concat.js:13:3:13:8 | buffer | 1 | html-concat.js:13:13:13:18 | '
  • ' | | html-concat.js:13:3:13:18 | buffer += '
  • ' | 0 | html-concat.js:13:3:13:8 | buffer | | html-concat.js:13:3:13:18 | buffer += '
  • ' | 1 | html-concat.js:13:13:13:18 | '
  • ' | -| html-concat.js:14:3:14:13 | buffer | 0 | html-concat.js:14:3:14:8 | buffer | -| html-concat.js:14:3:14:13 | buffer | 1 | html-concat.js:14:13:14:13 | x | +| html-concat.js:14:3:14:8 | buffer | 0 | html-concat.js:14:3:14:8 | buffer | +| html-concat.js:14:3:14:8 | buffer | 1 | html-concat.js:14:13:14:13 | x | | html-concat.js:14:3:14:13 | buffer += x | 0 | html-concat.js:14:3:14:8 | buffer | | html-concat.js:14:3:14:13 | buffer += x | 1 | html-concat.js:14:13:14:13 | x | -| html-concat.js:15:3:15:15 | buffer | 0 | html-concat.js:15:3:15:8 | buffer | -| html-concat.js:15:3:15:15 | buffer | 1 | html-concat.js:15:13:15:15 | '!' | +| html-concat.js:15:3:15:8 | buffer | 0 | html-concat.js:15:3:15:8 | buffer | +| html-concat.js:15:3:15:8 | buffer | 1 | html-concat.js:15:13:15:15 | '!' | | html-concat.js:15:3:15:15 | buffer += '!' | 0 | html-concat.js:15:3:15:8 | buffer | | html-concat.js:15:3:15:15 | buffer += '!' | 1 | html-concat.js:15:13:15:15 | '!' | -| tst.js:3:3:3:12 | x | 0 | tst.js:3:3:3:3 | x | -| tst.js:3:3:3:12 | x | 1 | tst.js:3:8:3:12 | "two" | +| tst.js:3:3:3:3 | x | 0 | tst.js:3:3:3:3 | x | +| tst.js:3:3:3:3 | x | 1 | tst.js:3:8:3:12 | "two" | | tst.js:3:3:3:12 | x += "two" | 0 | tst.js:3:3:3:3 | x | | tst.js:3:3:3:12 | x += "two" | 1 | tst.js:3:8:3:12 | "two" | -| tst.js:4:3:4:14 | x | 0 | tst.js:4:3:4:3 | x | -| tst.js:4:3:4:14 | x | 1 | tst.js:4:8:4:14 | "three" | +| tst.js:4:3:4:3 | x | 0 | tst.js:4:3:4:3 | x | +| tst.js:4:3:4:3 | x | 1 | tst.js:4:8:4:14 | "three" | | tst.js:4:3:4:14 | x += "three" | 0 | tst.js:4:3:4:3 | x | | tst.js:4:3:4:14 | x += "three" | 1 | tst.js:4:8:4:14 | "three" | -| tst.js:5:3:5:13 | x | 0 | tst.js:5:3:5:3 | x | -| tst.js:5:3:5:13 | x | 1 | tst.js:5:8:5:13 | "four" | +| tst.js:5:3:5:3 | x | 0 | tst.js:5:3:5:3 | x | +| tst.js:5:3:5:3 | x | 1 | tst.js:5:8:5:13 | "four" | | tst.js:5:3:5:13 | x += "four" | 0 | tst.js:5:3:5:3 | x | | tst.js:5:3:5:13 | x += "four" | 1 | tst.js:5:8:5:13 | "four" | -| tst.js:12:5:12:26 | x | 0 | tst.js:12:5:12:5 | x | -| tst.js:12:5:12:26 | x | 1 | tst.js:12:10:12:26 | "one" + y + "two" | +| tst.js:12:5:12:5 | x | 0 | tst.js:12:5:12:5 | x | +| tst.js:12:5:12:5 | x | 1 | tst.js:12:10:12:26 | "one" + y + "two" | | tst.js:12:5:12:26 | x += "o ... + "two" | 0 | tst.js:12:5:12:5 | x | | tst.js:12:5:12:26 | x += "o ... + "two" | 1 | tst.js:12:10:12:26 | "one" + y + "two" | | tst.js:12:10:12:18 | "one" + y | 0 | tst.js:12:10:12:14 | "one" | | tst.js:12:10:12:18 | "one" + y | 1 | tst.js:12:18:12:18 | y | | tst.js:12:10:12:26 | "one" + y + "two" | 0 | tst.js:12:10:12:18 | "one" + y | | tst.js:12:10:12:26 | "one" + y + "two" | 1 | tst.js:12:22:12:26 | "two" | -| tst.js:14:3:14:13 | x | 0 | tst.js:14:3:14:3 | x | -| tst.js:14:3:14:13 | x | 1 | tst.js:14:8:14:13 | "last" | +| tst.js:14:3:14:3 | x | 0 | tst.js:14:3:14:3 | x | +| tst.js:14:3:14:3 | x | 1 | tst.js:14:8:14:13 | "last" | | tst.js:14:3:14:13 | x += "last" | 0 | tst.js:14:3:14:3 | x | | tst.js:14:3:14:13 | x += "last" | 1 | tst.js:14:8:14:13 | "last" | | tst.js:19:11:19:23 | "one" + "two" | 0 | tst.js:19:11:19:15 | "one" | | tst.js:19:11:19:23 | "one" + "two" | 1 | tst.js:19:19:19:23 | "two" | -| tst.js:20:3:20:25 | x | 0 | tst.js:20:3:20:3 | x | -| tst.js:20:3:20:25 | x | 1 | tst.js:20:8:20:25 | ("three" + "four") | +| tst.js:20:3:20:3 | x | 0 | tst.js:20:3:20:3 | x | +| tst.js:20:3:20:3 | x | 1 | tst.js:20:8:20:25 | ("three" + "four") | | tst.js:20:3:20:25 | x += (" ... "four") | 0 | tst.js:20:3:20:3 | x | | tst.js:20:3:20:25 | x += (" ... "four") | 1 | tst.js:20:8:20:25 | ("three" + "four") | | tst.js:20:9:20:24 | "three" + "four" | 0 | tst.js:20:9:20:15 | "three" | @@ -472,12 +472,12 @@ operand | tst.js:77:15:77:37 | ["one", ... three"] | 1 | tst.js:77:23:77:27 | "two" | | tst.js:77:15:77:37 | ["one", ... three"] | 2 | tst.js:77:30:77:36 | "three" | | tst.js:79:12:79:23 | array.join() | 0 | tst.js:77:15:77:37 | ["one", ... three"] | -| tst.js:87:5:87:14 | x | 0 | tst.js:87:5:87:5 | x | -| tst.js:87:5:87:14 | x | 1 | tst.js:87:10:87:14 | 'two' | +| tst.js:87:5:87:5 | x | 0 | tst.js:87:5:87:5 | x | +| tst.js:87:5:87:5 | x | 1 | tst.js:87:10:87:14 | 'two' | | tst.js:87:5:87:14 | x += 'two' | 0 | tst.js:87:5:87:5 | x | | tst.js:87:5:87:14 | x += 'two' | 1 | tst.js:87:10:87:14 | 'two' | -| tst.js:89:3:89:14 | x | 0 | tst.js:89:3:89:3 | x | -| tst.js:89:3:89:14 | x | 1 | tst.js:89:8:89:14 | 'three' | +| tst.js:89:3:89:3 | x | 0 | tst.js:89:3:89:3 | x | +| tst.js:89:3:89:3 | x | 1 | tst.js:89:8:89:14 | 'three' | | tst.js:89:3:89:14 | x += 'three' | 0 | tst.js:89:3:89:3 | x | | tst.js:89:3:89:14 | x += 'three' | 1 | tst.js:89:8:89:14 | 'three' | | tst.js:95:7:95:30 | x.conca ... three') | 0 | tst.js:95:7:95:7 | x | @@ -553,7 +553,7 @@ htmlRoot | html-concat.js:3:14:3:26 | `${x}` | | html-concat.js:5:21:5:47 | `Hey ` | | html-concat.js:7:18:10:24 | `\\n H ... m!` | -| html-concat.js:13:3:13:18 | buffer | +| html-concat.js:13:3:13:8 | buffer | | html-concat.js:13:3:13:18 | buffer += '
  • ' | htmlLeaf | html-concat.js:2:15:2:17 | | diff --git a/javascript/ql/test/library-tests/frameworks/Electron/tests.expected b/javascript/ql/test/library-tests/frameworks/Electron/tests.expected index 72fb0a737b85..a51c8e632b18 100644 --- a/javascript/ql/test/library-tests/frameworks/Electron/tests.expected +++ b/javascript/ql/test/library-tests/frameworks/Electron/tests.expected @@ -1,7 +1,7 @@ browserObject -| electron.js:3:5:3:48 | bw | +| electron.js:3:5:3:6 | bw | | electron.js:3:10:3:48 | new Bro ... s: {}}) | -| electron.js:4:5:4:46 | bv | +| electron.js:4:5:4:6 | bv | | electron.js:4:10:4:46 | new Bro ... s: {}}) | | electron.js:35:1:37:1 | return of function foo | | electron.js:35:14:35:14 | x | @@ -11,7 +11,7 @@ browserObject | electron.js:39:5:39:6 | bw | | electron.js:40:1:40:7 | foo(bv) | | electron.js:40:5:40:6 | bv | -| electron.js:62:7:62:59 | win | +| electron.js:62:7:62:9 | win | | electron.js:62:13:62:59 | new Bro ... 1500 }) | | electron.js:63:3:63:5 | win | | electron.js:65:18:65:20 | win | diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/tests.expected b/javascript/ql/test/library-tests/frameworks/ReactJS/tests.expected index 9b453989bb80..16d31cd07e15 100644 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/tests.expected +++ b/javascript/ql/test/library-tests/frameworks/ReactJS/tests.expected @@ -225,7 +225,7 @@ reactComponentRef | statePropertyReads.js:1:1:13:1 | class R ... }\\n} | statePropertyReads.js:7:9:7:12 | this | | statePropertyReads.js:1:1:13:1 | class R ... }\\n} | statePropertyReads.js:10:23:10:22 | this | | statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:2:16:2:15 | this | -| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:3:13:3:22 | cmp | +| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:3:13:3:15 | cmp | | statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:3:19:3:22 | this | | statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:4:9:4:11 | cmp | | statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:6:9:6:11 | cmp | @@ -241,7 +241,7 @@ reactComponentRef | statePropertyWrites.js:36:19:45:1 | {\\n ren ... ;\\n }\\n} | statePropertyWrites.js:40:20:40:19 | this | | thisAccesses.js:1:1:16:1 | class C ... }\\n} | thisAccesses.js:2:17:2:16 | this | | thisAccesses.js:1:1:16:1 | class C ... }\\n} | thisAccesses.js:3:9:3:12 | this | -| thisAccesses.js:1:1:16:1 | class C ... }\\n} | thisAccesses.js:5:13:5:22 | dis | +| thisAccesses.js:1:1:16:1 | class C ... }\\n} | thisAccesses.js:5:13:5:15 | dis | | thisAccesses.js:1:1:16:1 | class C ... }\\n} | thisAccesses.js:5:19:5:22 | this | | thisAccesses.js:1:1:16:1 | class C ... }\\n} | thisAccesses.js:6:9:6:11 | dis | | thisAccesses.js:1:1:16:1 | class C ... }\\n} | thisAccesses.js:8:10:8:9 | this | diff --git a/javascript/ql/test/library-tests/frameworks/koa/tests.expected b/javascript/ql/test/library-tests/frameworks/koa/tests.expected index 365986dfa0b6..1c3a323d1105 100644 --- a/javascript/ql/test/library-tests/frameworks/koa/tests.expected +++ b/javascript/ql/test/library-tests/frameworks/koa/tests.expected @@ -67,7 +67,7 @@ test_HeaderAccess test_ResponseExpr | src/koa.js:12:3:12:15 | this.response | src/koa.js:10:10:28:1 | functio ... az');\\n} | | src/koa.js:14:3:14:14 | ctx.response | src/koa.js:10:10:28:1 | functio ... az');\\n} | -| src/koa.js:15:7:15:24 | rsp | src/koa.js:10:10:28:1 | functio ... az');\\n} | +| src/koa.js:15:7:15:9 | rsp | src/koa.js:10:10:28:1 | functio ... az');\\n} | | src/koa.js:15:13:15:24 | ctx.response | src/koa.js:10:10:28:1 | functio ... az');\\n} | | src/koa.js:16:3:16:5 | rsp | src/koa.js:10:10:28:1 | functio ... az');\\n} | | src/koa.js:18:3:18:14 | ctx.response | src/koa.js:10:10:28:1 | functio ... az');\\n} | @@ -190,7 +190,7 @@ test_RouteHandler_getARequestExpr test_RouteHandler_getAResponseExpr | src/koa.js:10:10:28:1 | functio ... az');\\n} | src/koa.js:12:3:12:15 | this.response | | src/koa.js:10:10:28:1 | functio ... az');\\n} | src/koa.js:14:3:14:14 | ctx.response | -| src/koa.js:10:10:28:1 | functio ... az');\\n} | src/koa.js:15:7:15:24 | rsp | +| src/koa.js:10:10:28:1 | functio ... az');\\n} | src/koa.js:15:7:15:9 | rsp | | src/koa.js:10:10:28:1 | functio ... az');\\n} | src/koa.js:15:13:15:24 | ctx.response | | src/koa.js:10:10:28:1 | functio ... az');\\n} | src/koa.js:16:3:16:5 | rsp | | src/koa.js:10:10:28:1 | functio ... az');\\n} | src/koa.js:18:3:18:14 | ctx.response | diff --git a/javascript/ql/test/query-tests/Security/CWE-020/UntrustedDataToExternalAPI/UntrustedDataToExternalAPI.expected b/javascript/ql/test/query-tests/Security/CWE-020/UntrustedDataToExternalAPI/UntrustedDataToExternalAPI.expected index de528b8bde2e..4e58b4f85486 100644 --- a/javascript/ql/test/query-tests/Security/CWE-020/UntrustedDataToExternalAPI/UntrustedDataToExternalAPI.expected +++ b/javascript/ql/test/query-tests/Security/CWE-020/UntrustedDataToExternalAPI/UntrustedDataToExternalAPI.expected @@ -12,20 +12,20 @@ | tst-UntrustedDataToExternalAPI.js:41:7:41:8 | {} | tst-UntrustedDataToExternalAPI.js:3:17:3:27 | window.name | tst-UntrustedDataToExternalAPI.js:41:7:41:8 | {} | Call to lodash.merge() [param 0] with untrusted data from $@. | tst-UntrustedDataToExternalAPI.js:3:17:3:27 | window.name | window.name | | tst-UntrustedDataToExternalAPI.js:41:11:45:1 | { // $ ... usted\\n} | tst-UntrustedDataToExternalAPI.js:3:17:3:27 | window.name | tst-UntrustedDataToExternalAPI.js:41:11:45:1 | { // $ ... usted\\n} | Call to lodash.merge() [param 1] with untrusted data from $@. | tst-UntrustedDataToExternalAPI.js:3:17:3:27 | window.name | window.name | edges -| tst-UntrustedDataToExternalAPI.js:3:5:3:27 | untrusted | tst-UntrustedDataToExternalAPI.js:5:13:5:21 | untrusted | provenance | | -| tst-UntrustedDataToExternalAPI.js:3:5:3:27 | untrusted | tst-UntrustedDataToExternalAPI.js:6:17:6:25 | untrusted | provenance | | -| tst-UntrustedDataToExternalAPI.js:3:5:3:27 | untrusted | tst-UntrustedDataToExternalAPI.js:7:16:7:24 | untrusted | provenance | | -| tst-UntrustedDataToExternalAPI.js:3:5:3:27 | untrusted | tst-UntrustedDataToExternalAPI.js:8:31:8:39 | untrusted | provenance | | -| tst-UntrustedDataToExternalAPI.js:3:5:3:27 | untrusted | tst-UntrustedDataToExternalAPI.js:9:18:9:26 | untrusted | provenance | | -| tst-UntrustedDataToExternalAPI.js:3:5:3:27 | untrusted | tst-UntrustedDataToExternalAPI.js:10:19:10:27 | untrusted | provenance | | -| tst-UntrustedDataToExternalAPI.js:3:5:3:27 | untrusted | tst-UntrustedDataToExternalAPI.js:11:20:11:28 | untrusted | provenance | | -| tst-UntrustedDataToExternalAPI.js:3:5:3:27 | untrusted | tst-UntrustedDataToExternalAPI.js:15:16:15:24 | untrusted | provenance | | -| tst-UntrustedDataToExternalAPI.js:3:5:3:27 | untrusted | tst-UntrustedDataToExternalAPI.js:33:14:33:22 | untrusted | provenance | | -| tst-UntrustedDataToExternalAPI.js:3:5:3:27 | untrusted | tst-UntrustedDataToExternalAPI.js:34:34:34:42 | untrusted | provenance | | -| tst-UntrustedDataToExternalAPI.js:3:5:3:27 | untrusted | tst-UntrustedDataToExternalAPI.js:42:8:42:16 | untrusted | provenance | | -| tst-UntrustedDataToExternalAPI.js:3:5:3:27 | untrusted | tst-UntrustedDataToExternalAPI.js:43:8:43:16 | untrusted | provenance | | -| tst-UntrustedDataToExternalAPI.js:3:5:3:27 | untrusted | tst-UntrustedDataToExternalAPI.js:44:8:44:16 | untrusted | provenance | | -| tst-UntrustedDataToExternalAPI.js:3:17:3:27 | window.name | tst-UntrustedDataToExternalAPI.js:3:5:3:27 | untrusted | provenance | | +| tst-UntrustedDataToExternalAPI.js:3:5:3:13 | untrusted | tst-UntrustedDataToExternalAPI.js:5:13:5:21 | untrusted | provenance | | +| tst-UntrustedDataToExternalAPI.js:3:5:3:13 | untrusted | tst-UntrustedDataToExternalAPI.js:6:17:6:25 | untrusted | provenance | | +| tst-UntrustedDataToExternalAPI.js:3:5:3:13 | untrusted | tst-UntrustedDataToExternalAPI.js:7:16:7:24 | untrusted | provenance | | +| tst-UntrustedDataToExternalAPI.js:3:5:3:13 | untrusted | tst-UntrustedDataToExternalAPI.js:8:31:8:39 | untrusted | provenance | | +| tst-UntrustedDataToExternalAPI.js:3:5:3:13 | untrusted | tst-UntrustedDataToExternalAPI.js:9:18:9:26 | untrusted | provenance | | +| tst-UntrustedDataToExternalAPI.js:3:5:3:13 | untrusted | tst-UntrustedDataToExternalAPI.js:10:19:10:27 | untrusted | provenance | | +| tst-UntrustedDataToExternalAPI.js:3:5:3:13 | untrusted | tst-UntrustedDataToExternalAPI.js:11:20:11:28 | untrusted | provenance | | +| tst-UntrustedDataToExternalAPI.js:3:5:3:13 | untrusted | tst-UntrustedDataToExternalAPI.js:15:16:15:24 | untrusted | provenance | | +| tst-UntrustedDataToExternalAPI.js:3:5:3:13 | untrusted | tst-UntrustedDataToExternalAPI.js:33:14:33:22 | untrusted | provenance | | +| tst-UntrustedDataToExternalAPI.js:3:5:3:13 | untrusted | tst-UntrustedDataToExternalAPI.js:34:34:34:42 | untrusted | provenance | | +| tst-UntrustedDataToExternalAPI.js:3:5:3:13 | untrusted | tst-UntrustedDataToExternalAPI.js:42:8:42:16 | untrusted | provenance | | +| tst-UntrustedDataToExternalAPI.js:3:5:3:13 | untrusted | tst-UntrustedDataToExternalAPI.js:43:8:43:16 | untrusted | provenance | | +| tst-UntrustedDataToExternalAPI.js:3:5:3:13 | untrusted | tst-UntrustedDataToExternalAPI.js:44:8:44:16 | untrusted | provenance | | +| tst-UntrustedDataToExternalAPI.js:3:17:3:27 | window.name | tst-UntrustedDataToExternalAPI.js:3:5:3:13 | untrusted | provenance | | | tst-UntrustedDataToExternalAPI.js:10:19:10:27 | untrusted | tst-UntrustedDataToExternalAPI.js:10:13:10:33 | ['x', u ... d, 'y'] | provenance | | | tst-UntrustedDataToExternalAPI.js:14:12:16:9 | {\\n ... } [z] | tst-UntrustedDataToExternalAPI.js:13:8:17:5 | {\\n ... }\\n } | provenance | | | tst-UntrustedDataToExternalAPI.js:15:16:15:24 | untrusted | tst-UntrustedDataToExternalAPI.js:14:12:16:9 | {\\n ... } [z] | provenance | | @@ -39,7 +39,7 @@ edges | tst-UntrustedDataToExternalAPI.js:44:8:44:16 | untrusted | tst-UntrustedDataToExternalAPI.js:41:11:45:1 | { // $ ... usted\\n} | provenance | | | tst-UntrustedDataToExternalAPI.js:44:8:44:16 | untrusted | tst-UntrustedDataToExternalAPI.js:41:11:45:1 | { // $ ... usted\\n} [z] | provenance | | nodes -| tst-UntrustedDataToExternalAPI.js:3:5:3:27 | untrusted | semmle.label | untrusted | +| tst-UntrustedDataToExternalAPI.js:3:5:3:13 | untrusted | semmle.label | untrusted | | tst-UntrustedDataToExternalAPI.js:3:17:3:27 | window.name | semmle.label | window.name | | tst-UntrustedDataToExternalAPI.js:5:13:5:21 | untrusted | semmle.label | untrusted | | tst-UntrustedDataToExternalAPI.js:6:17:6:25 | untrusted | semmle.label | untrusted | diff --git a/javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/TaintedPath.expected b/javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/TaintedPath.expected index 2a3e4c18884b..833128c12924 100644 --- a/javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/TaintedPath.expected +++ b/javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/TaintedPath.expected @@ -251,35 +251,35 @@ | typescript.ts:31:29:31:33 | path6 | typescript.ts:9:24:9:30 | req.url | typescript.ts:31:29:31:33 | path6 | This path depends on a $@. | typescript.ts:9:24:9:30 | req.url | user-provided value | | views.js:1:43:1:55 | req.params[0] | views.js:1:43:1:55 | req.params[0] | views.js:1:43:1:55 | req.params[0] | This path depends on a $@. | views.js:1:43:1:55 | req.params[0] | user-provided value | edges -| TaintedPath-es6.js:7:7:7:44 | path | TaintedPath-es6.js:9:41:9:44 | path | provenance | | +| TaintedPath-es6.js:7:7:7:10 | path | TaintedPath-es6.js:9:41:9:44 | path | provenance | | | TaintedPath-es6.js:7:14:7:33 | parse(req.url, true) | TaintedPath-es6.js:7:14:7:39 | parse(r ... ).query | provenance | Config | | TaintedPath-es6.js:7:14:7:39 | parse(r ... ).query | TaintedPath-es6.js:7:14:7:44 | parse(r ... ry.path | provenance | Config | -| TaintedPath-es6.js:7:14:7:44 | parse(r ... ry.path | TaintedPath-es6.js:7:7:7:44 | path | provenance | | +| TaintedPath-es6.js:7:14:7:44 | parse(r ... ry.path | TaintedPath-es6.js:7:7:7:10 | path | provenance | | | TaintedPath-es6.js:7:20:7:26 | req.url | TaintedPath-es6.js:7:14:7:33 | parse(req.url, true) | provenance | Config | | TaintedPath-es6.js:9:41:9:44 | path | TaintedPath-es6.js:9:26:9:45 | join("public", path) | provenance | Config | -| TaintedPath.js:9:7:9:48 | path | TaintedPath.js:11:29:11:32 | path | provenance | | -| TaintedPath.js:9:7:9:48 | path | TaintedPath.js:13:45:13:48 | path | provenance | | -| TaintedPath.js:9:7:9:48 | path | TaintedPath.js:16:33:16:36 | path | provenance | | -| TaintedPath.js:9:7:9:48 | path | TaintedPath.js:19:33:19:36 | path | provenance | | -| TaintedPath.js:9:7:9:48 | path | TaintedPath.js:22:33:22:36 | path | provenance | | -| TaintedPath.js:9:7:9:48 | path | TaintedPath.js:31:31:31:34 | path | provenance | | +| TaintedPath.js:9:7:9:10 | path | TaintedPath.js:11:29:11:32 | path | provenance | | +| TaintedPath.js:9:7:9:10 | path | TaintedPath.js:13:45:13:48 | path | provenance | | +| TaintedPath.js:9:7:9:10 | path | TaintedPath.js:16:33:16:36 | path | provenance | | +| TaintedPath.js:9:7:9:10 | path | TaintedPath.js:19:33:19:36 | path | provenance | | +| TaintedPath.js:9:7:9:10 | path | TaintedPath.js:22:33:22:36 | path | provenance | | +| TaintedPath.js:9:7:9:10 | path | TaintedPath.js:31:31:31:34 | path | provenance | | | TaintedPath.js:9:14:9:37 | url.par ... , true) | TaintedPath.js:9:14:9:43 | url.par ... ).query | provenance | Config | | TaintedPath.js:9:14:9:43 | url.par ... ).query | TaintedPath.js:9:14:9:48 | url.par ... ry.path | provenance | Config | -| TaintedPath.js:9:14:9:48 | url.par ... ry.path | TaintedPath.js:9:7:9:48 | path | provenance | | +| TaintedPath.js:9:14:9:48 | url.par ... ry.path | TaintedPath.js:9:7:9:10 | path | provenance | | | TaintedPath.js:9:24:9:30 | req.url | TaintedPath.js:9:14:9:37 | url.par ... , true) | provenance | Config | | TaintedPath.js:13:45:13:48 | path | TaintedPath.js:13:29:13:48 | "/home/user/" + path | provenance | Config | -| TaintedPath.js:36:3:36:44 | path | TaintedPath.js:39:48:39:51 | path | provenance | | -| TaintedPath.js:36:3:36:44 | path | TaintedPath.js:42:45:42:48 | path | provenance | | -| TaintedPath.js:36:3:36:44 | path | TaintedPath.js:43:51:43:54 | path | provenance | | -| TaintedPath.js:36:3:36:44 | path | TaintedPath.js:44:50:44:53 | path | provenance | | -| TaintedPath.js:36:3:36:44 | path | TaintedPath.js:45:52:45:55 | path | provenance | | -| TaintedPath.js:36:3:36:44 | path | TaintedPath.js:46:49:46:52 | path | provenance | | -| TaintedPath.js:36:3:36:44 | path | TaintedPath.js:47:48:47:51 | path | provenance | | -| TaintedPath.js:36:3:36:44 | path | TaintedPath.js:48:54:48:57 | path | provenance | | -| TaintedPath.js:36:3:36:44 | path | TaintedPath.js:49:57:49:60 | path | provenance | | +| TaintedPath.js:36:3:36:6 | path | TaintedPath.js:39:48:39:51 | path | provenance | | +| TaintedPath.js:36:3:36:6 | path | TaintedPath.js:42:45:42:48 | path | provenance | | +| TaintedPath.js:36:3:36:6 | path | TaintedPath.js:43:51:43:54 | path | provenance | | +| TaintedPath.js:36:3:36:6 | path | TaintedPath.js:44:50:44:53 | path | provenance | | +| TaintedPath.js:36:3:36:6 | path | TaintedPath.js:45:52:45:55 | path | provenance | | +| TaintedPath.js:36:3:36:6 | path | TaintedPath.js:46:49:46:52 | path | provenance | | +| TaintedPath.js:36:3:36:6 | path | TaintedPath.js:47:48:47:51 | path | provenance | | +| TaintedPath.js:36:3:36:6 | path | TaintedPath.js:48:54:48:57 | path | provenance | | +| TaintedPath.js:36:3:36:6 | path | TaintedPath.js:49:57:49:60 | path | provenance | | | TaintedPath.js:36:10:36:33 | url.par ... , true) | TaintedPath.js:36:10:36:39 | url.par ... ).query | provenance | Config | | TaintedPath.js:36:10:36:39 | url.par ... ).query | TaintedPath.js:36:10:36:44 | url.par ... ry.path | provenance | Config | -| TaintedPath.js:36:10:36:44 | url.par ... ry.path | TaintedPath.js:36:3:36:44 | path | provenance | | +| TaintedPath.js:36:10:36:44 | url.par ... ry.path | TaintedPath.js:36:3:36:6 | path | provenance | | | TaintedPath.js:36:20:36:26 | req.url | TaintedPath.js:36:10:36:33 | url.par ... , true) | provenance | Config | | TaintedPath.js:39:48:39:51 | path | TaintedPath.js:39:29:39:52 | pathMod ... e(path) | provenance | Config | | TaintedPath.js:42:45:42:48 | path | TaintedPath.js:42:29:42:49 | pathMod ... n(path) | provenance | Config | @@ -296,57 +296,57 @@ edges | TaintedPath.js:55:61:55:67 | req.url | TaintedPath.js:55:31:55:68 | require ... eq.url) | provenance | Config | | TaintedPath.js:56:31:56:67 | require ... eq.url) | TaintedPath.js:56:31:56:73 | require ... ).query | provenance | Config | | TaintedPath.js:56:60:56:66 | req.url | TaintedPath.js:56:31:56:67 | require ... eq.url) | provenance | Config | -| TaintedPath.js:73:6:73:47 | path | TaintedPath.js:75:44:75:47 | path | provenance | | -| TaintedPath.js:73:6:73:47 | path | TaintedPath.js:76:14:76:17 | path | provenance | | +| TaintedPath.js:73:6:73:9 | path | TaintedPath.js:75:44:75:47 | path | provenance | | +| TaintedPath.js:73:6:73:9 | path | TaintedPath.js:76:14:76:17 | path | provenance | | | TaintedPath.js:73:13:73:36 | url.par ... , true) | TaintedPath.js:73:13:73:42 | url.par ... ).query | provenance | Config | | TaintedPath.js:73:13:73:42 | url.par ... ).query | TaintedPath.js:73:13:73:47 | url.par ... ry.path | provenance | Config | -| TaintedPath.js:73:13:73:47 | url.par ... ry.path | TaintedPath.js:73:6:73:47 | path | provenance | | +| TaintedPath.js:73:13:73:47 | url.par ... ry.path | TaintedPath.js:73:6:73:9 | path | provenance | | | TaintedPath.js:73:23:73:29 | req.url | TaintedPath.js:73:13:73:36 | url.par ... , true) | provenance | Config | | TaintedPath.js:75:44:75:47 | path | TaintedPath.js:75:28:75:48 | fs.real ... c(path) | provenance | Config | | TaintedPath.js:76:14:76:17 | path | TaintedPath.js:77:32:77:39 | realpath | provenance | Config | | TaintedPath.js:77:32:77:39 | realpath | TaintedPath.js:78:45:78:52 | realpath | provenance | | -| TaintedPath.js:109:6:109:47 | path | TaintedPath.js:111:23:111:26 | path | provenance | | +| TaintedPath.js:109:6:109:9 | path | TaintedPath.js:111:23:111:26 | path | provenance | | | TaintedPath.js:109:13:109:36 | url.par ... , true) | TaintedPath.js:109:13:109:42 | url.par ... ).query | provenance | Config | | TaintedPath.js:109:13:109:42 | url.par ... ).query | TaintedPath.js:109:13:109:47 | url.par ... ry.path | provenance | Config | -| TaintedPath.js:109:13:109:47 | url.par ... ry.path | TaintedPath.js:109:6:109:47 | path | provenance | | +| TaintedPath.js:109:13:109:47 | url.par ... ry.path | TaintedPath.js:109:6:109:9 | path | provenance | | | TaintedPath.js:109:23:109:29 | req.url | TaintedPath.js:109:13:109:36 | url.par ... , true) | provenance | Config | -| TaintedPath.js:115:7:115:48 | path | TaintedPath.js:117:19:117:22 | path | provenance | | -| TaintedPath.js:115:7:115:48 | path | TaintedPath.js:119:15:119:18 | path | provenance | | +| TaintedPath.js:115:7:115:10 | path | TaintedPath.js:117:19:117:22 | path | provenance | | +| TaintedPath.js:115:7:115:10 | path | TaintedPath.js:119:15:119:18 | path | provenance | | | TaintedPath.js:115:14:115:37 | url.par ... , true) | TaintedPath.js:115:14:115:43 | url.par ... ).query | provenance | Config | | TaintedPath.js:115:14:115:43 | url.par ... ).query | TaintedPath.js:115:14:115:48 | url.par ... ry.path | provenance | Config | -| TaintedPath.js:115:14:115:48 | url.par ... ry.path | TaintedPath.js:115:7:115:48 | path | provenance | | +| TaintedPath.js:115:14:115:48 | url.par ... ry.path | TaintedPath.js:115:7:115:10 | path | provenance | | | TaintedPath.js:115:24:115:30 | req.url | TaintedPath.js:115:14:115:37 | url.par ... , true) | provenance | Config | -| TaintedPath.js:119:7:119:29 | split | TaintedPath.js:121:19:121:23 | split | provenance | | -| TaintedPath.js:119:7:119:29 | split | TaintedPath.js:125:19:125:23 | split | provenance | | -| TaintedPath.js:119:7:119:29 | split | TaintedPath.js:126:28:126:32 | split | provenance | | -| TaintedPath.js:119:7:119:29 | split | TaintedPath.js:128:33:128:37 | split | provenance | | -| TaintedPath.js:119:7:119:29 | split | TaintedPath.js:131:20:131:24 | split | provenance | | -| TaintedPath.js:119:7:119:29 | split | TaintedPath.js:134:19:134:23 | split | provenance | | +| TaintedPath.js:119:7:119:11 | split | TaintedPath.js:121:19:121:23 | split | provenance | | +| TaintedPath.js:119:7:119:11 | split | TaintedPath.js:125:19:125:23 | split | provenance | | +| TaintedPath.js:119:7:119:11 | split | TaintedPath.js:126:28:126:32 | split | provenance | | +| TaintedPath.js:119:7:119:11 | split | TaintedPath.js:128:33:128:37 | split | provenance | | +| TaintedPath.js:119:7:119:11 | split | TaintedPath.js:131:20:131:24 | split | provenance | | +| TaintedPath.js:119:7:119:11 | split | TaintedPath.js:134:19:134:23 | split | provenance | | | TaintedPath.js:119:15:119:18 | path | TaintedPath.js:119:15:119:29 | path.split("/") | provenance | Config | -| TaintedPath.js:119:15:119:29 | path.split("/") | TaintedPath.js:119:7:119:29 | split | provenance | | +| TaintedPath.js:119:15:119:29 | path.split("/") | TaintedPath.js:119:7:119:11 | split | provenance | | | TaintedPath.js:121:19:121:23 | split | TaintedPath.js:121:19:121:33 | split.join("/") | provenance | Config | | TaintedPath.js:125:19:125:23 | split | TaintedPath.js:125:19:125:26 | split[x] | provenance | Config | | TaintedPath.js:126:28:126:32 | split | TaintedPath.js:126:28:126:35 | split[x] | provenance | Config | | TaintedPath.js:126:28:126:35 | split[x] | TaintedPath.js:126:19:126:35 | prefix + split[x] | provenance | Config | -| TaintedPath.js:128:7:128:38 | concatted | TaintedPath.js:129:19:129:27 | concatted | provenance | | -| TaintedPath.js:128:19:128:38 | prefix.concat(split) | TaintedPath.js:128:7:128:38 | concatted | provenance | | +| TaintedPath.js:128:7:128:15 | concatted | TaintedPath.js:129:19:129:27 | concatted | provenance | | +| TaintedPath.js:128:19:128:38 | prefix.concat(split) | TaintedPath.js:128:7:128:15 | concatted | provenance | | | TaintedPath.js:128:33:128:37 | split | TaintedPath.js:128:19:128:38 | prefix.concat(split) | provenance | Config | | TaintedPath.js:129:19:129:27 | concatted | TaintedPath.js:129:19:129:37 | concatted.join("/") | provenance | Config | -| TaintedPath.js:131:7:131:39 | concatted2 | TaintedPath.js:132:19:132:28 | concatted2 | provenance | | +| TaintedPath.js:131:7:131:16 | concatted2 | TaintedPath.js:132:19:132:28 | concatted2 | provenance | | | TaintedPath.js:131:20:131:24 | split | TaintedPath.js:131:20:131:39 | split.concat(prefix) | provenance | Config | -| TaintedPath.js:131:20:131:39 | split.concat(prefix) | TaintedPath.js:131:7:131:39 | concatted2 | provenance | | +| TaintedPath.js:131:20:131:39 | split.concat(prefix) | TaintedPath.js:131:7:131:16 | concatted2 | provenance | | | TaintedPath.js:132:19:132:28 | concatted2 | TaintedPath.js:132:19:132:38 | concatted2.join("/") | provenance | Config | | TaintedPath.js:134:19:134:23 | split | TaintedPath.js:134:19:134:29 | split.pop() | provenance | Config | -| TaintedPath.js:139:7:139:48 | path | TaintedPath.js:143:29:143:32 | path | provenance | | -| TaintedPath.js:139:7:139:48 | path | TaintedPath.js:149:29:149:32 | path | provenance | | -| TaintedPath.js:139:7:139:48 | path | TaintedPath.js:150:29:150:32 | path | provenance | | -| TaintedPath.js:139:7:139:48 | path | TaintedPath.js:151:29:151:32 | path | provenance | | -| TaintedPath.js:139:7:139:48 | path | TaintedPath.js:152:29:152:32 | path | provenance | | -| TaintedPath.js:139:7:139:48 | path | TaintedPath.js:167:40:167:43 | path | provenance | | -| TaintedPath.js:139:7:139:48 | path | TaintedPath.js:168:50:168:53 | path | provenance | | +| TaintedPath.js:139:7:139:10 | path | TaintedPath.js:143:29:143:32 | path | provenance | | +| TaintedPath.js:139:7:139:10 | path | TaintedPath.js:149:29:149:32 | path | provenance | | +| TaintedPath.js:139:7:139:10 | path | TaintedPath.js:150:29:150:32 | path | provenance | | +| TaintedPath.js:139:7:139:10 | path | TaintedPath.js:151:29:151:32 | path | provenance | | +| TaintedPath.js:139:7:139:10 | path | TaintedPath.js:152:29:152:32 | path | provenance | | +| TaintedPath.js:139:7:139:10 | path | TaintedPath.js:167:40:167:43 | path | provenance | | +| TaintedPath.js:139:7:139:10 | path | TaintedPath.js:168:50:168:53 | path | provenance | | | TaintedPath.js:139:14:139:37 | url.par ... , true) | TaintedPath.js:139:14:139:43 | url.par ... ).query | provenance | Config | | TaintedPath.js:139:14:139:43 | url.par ... ).query | TaintedPath.js:139:14:139:48 | url.par ... ry.path | provenance | Config | -| TaintedPath.js:139:14:139:48 | url.par ... ry.path | TaintedPath.js:139:7:139:48 | path | provenance | | +| TaintedPath.js:139:14:139:48 | url.par ... ry.path | TaintedPath.js:139:7:139:10 | path | provenance | | | TaintedPath.js:139:24:139:30 | req.url | TaintedPath.js:139:14:139:37 | url.par ... , true) | provenance | Config | | TaintedPath.js:143:29:143:32 | path | TaintedPath.js:143:29:143:55 | path.re ... /g, '') | provenance | Config | | TaintedPath.js:149:29:149:32 | path | TaintedPath.js:149:29:149:52 | path.re ... /g, '') | provenance | Config | @@ -364,360 +364,360 @@ edges | TaintedPath.js:177:51:177:57 | req.url | TaintedPath.js:177:38:177:58 | normali ... eq.url) | provenance | Config | | TaintedPath.js:179:29:179:51 | parseqs ... eq.url) | TaintedPath.js:179:29:179:55 | parseqs ... rl).foo | provenance | Config | | TaintedPath.js:179:44:179:50 | req.url | TaintedPath.js:179:29:179:51 | parseqs ... eq.url) | provenance | Config | -| TaintedPath.js:184:7:184:48 | path | TaintedPath.js:185:31:185:34 | path | provenance | | -| TaintedPath.js:184:7:184:48 | path | TaintedPath.js:186:45:186:48 | path | provenance | | -| TaintedPath.js:184:7:184:48 | path | TaintedPath.js:187:35:187:38 | path | provenance | | +| TaintedPath.js:184:7:184:10 | path | TaintedPath.js:185:31:185:34 | path | provenance | | +| TaintedPath.js:184:7:184:10 | path | TaintedPath.js:186:45:186:48 | path | provenance | | +| TaintedPath.js:184:7:184:10 | path | TaintedPath.js:187:35:187:38 | path | provenance | | | TaintedPath.js:184:14:184:37 | url.par ... , true) | TaintedPath.js:184:14:184:43 | url.par ... ).query | provenance | Config | | TaintedPath.js:184:14:184:43 | url.par ... ).query | TaintedPath.js:184:14:184:48 | url.par ... ry.path | provenance | Config | -| TaintedPath.js:184:14:184:48 | url.par ... ry.path | TaintedPath.js:184:7:184:48 | path | provenance | | +| TaintedPath.js:184:14:184:48 | url.par ... ry.path | TaintedPath.js:184:7:184:10 | path | provenance | | | TaintedPath.js:184:24:184:30 | req.url | TaintedPath.js:184:14:184:37 | url.par ... , true) | provenance | Config | -| TaintedPath.js:191:7:191:48 | path | TaintedPath.js:195:29:195:32 | path | provenance | | +| TaintedPath.js:191:7:191:10 | path | TaintedPath.js:195:29:195:32 | path | provenance | | | TaintedPath.js:191:14:191:37 | url.par ... , true) | TaintedPath.js:191:14:191:43 | url.par ... ).query | provenance | Config | | TaintedPath.js:191:14:191:43 | url.par ... ).query | TaintedPath.js:191:14:191:48 | url.par ... ry.path | provenance | Config | -| TaintedPath.js:191:14:191:48 | url.par ... ry.path | TaintedPath.js:191:7:191:48 | path | provenance | | +| TaintedPath.js:191:14:191:48 | url.par ... ry.path | TaintedPath.js:191:7:191:10 | path | provenance | | | TaintedPath.js:191:24:191:30 | req.url | TaintedPath.js:191:14:191:37 | url.par ... , true) | provenance | Config | | TaintedPath.js:195:29:195:32 | path | TaintedPath.js:195:29:195:85 | path.re ... '), '') | provenance | Config | -| TaintedPath.js:200:7:200:48 | path | TaintedPath.js:202:29:202:32 | path | provenance | | -| TaintedPath.js:200:7:200:48 | path | TaintedPath.js:205:31:205:34 | path | provenance | | +| TaintedPath.js:200:7:200:10 | path | TaintedPath.js:202:29:202:32 | path | provenance | | +| TaintedPath.js:200:7:200:10 | path | TaintedPath.js:205:31:205:34 | path | provenance | | | TaintedPath.js:200:14:200:37 | url.par ... , true) | TaintedPath.js:200:14:200:43 | url.par ... ).query | provenance | Config | | TaintedPath.js:200:14:200:43 | url.par ... ).query | TaintedPath.js:200:14:200:48 | url.par ... ry.path | provenance | Config | -| TaintedPath.js:200:14:200:48 | url.par ... ry.path | TaintedPath.js:200:7:200:48 | path | provenance | | +| TaintedPath.js:200:14:200:48 | url.par ... ry.path | TaintedPath.js:200:7:200:10 | path | provenance | | | TaintedPath.js:200:24:200:30 | req.url | TaintedPath.js:200:14:200:37 | url.par ... , true) | provenance | Config | | TaintedPath.js:202:29:202:32 | path | TaintedPath.js:202:29:202:68 | path.re ... '), '') | provenance | Config | | TaintedPath.js:205:31:205:34 | path | TaintedPath.js:205:31:205:69 | path.re ... '), '') | provenance | Config | -| TaintedPath.js:212:7:212:48 | path | TaintedPath.js:213:33:213:36 | path | provenance | | -| TaintedPath.js:212:7:212:48 | path | TaintedPath.js:215:36:215:39 | path | provenance | | +| TaintedPath.js:212:7:212:10 | path | TaintedPath.js:213:33:213:36 | path | provenance | | +| TaintedPath.js:212:7:212:10 | path | TaintedPath.js:215:36:215:39 | path | provenance | | | TaintedPath.js:212:14:212:37 | url.par ... , true) | TaintedPath.js:212:14:212:43 | url.par ... ).query | provenance | Config | | TaintedPath.js:212:14:212:43 | url.par ... ).query | TaintedPath.js:212:14:212:48 | url.par ... ry.path | provenance | Config | -| TaintedPath.js:212:14:212:48 | url.par ... ry.path | TaintedPath.js:212:7:212:48 | path | provenance | | +| TaintedPath.js:212:14:212:48 | url.par ... ry.path | TaintedPath.js:212:7:212:10 | path | provenance | | | TaintedPath.js:212:24:212:30 | req.url | TaintedPath.js:212:14:212:37 | url.par ... , true) | provenance | Config | -| TaintedPath.js:213:9:213:37 | improperEscape | TaintedPath.js:214:29:214:42 | improperEscape | provenance | | -| TaintedPath.js:213:26:213:37 | escape(path) | TaintedPath.js:213:9:213:37 | improperEscape | provenance | | +| TaintedPath.js:213:9:213:22 | improperEscape | TaintedPath.js:214:29:214:42 | improperEscape | provenance | | +| TaintedPath.js:213:26:213:37 | escape(path) | TaintedPath.js:213:9:213:22 | improperEscape | provenance | | | TaintedPath.js:213:33:213:36 | path | TaintedPath.js:213:26:213:37 | escape(path) | provenance | Config | -| TaintedPath.js:215:9:215:40 | improperEscape2 | TaintedPath.js:216:29:216:43 | improperEscape2 | provenance | | -| TaintedPath.js:215:27:215:40 | unescape(path) | TaintedPath.js:215:9:215:40 | improperEscape2 | provenance | | +| TaintedPath.js:215:9:215:23 | improperEscape2 | TaintedPath.js:216:29:216:43 | improperEscape2 | provenance | | +| TaintedPath.js:215:27:215:40 | unescape(path) | TaintedPath.js:215:9:215:23 | improperEscape2 | provenance | | | TaintedPath.js:215:36:215:39 | path | TaintedPath.js:215:27:215:40 | unescape(path) | provenance | Config | -| examples/TaintedPath.js:8:7:8:52 | filePath | examples/TaintedPath.js:10:36:10:43 | filePath | provenance | | +| examples/TaintedPath.js:8:7:8:14 | filePath | examples/TaintedPath.js:10:36:10:43 | filePath | provenance | | | examples/TaintedPath.js:8:18:8:41 | url.par ... , true) | examples/TaintedPath.js:8:18:8:47 | url.par ... ).query | provenance | Config | | examples/TaintedPath.js:8:18:8:47 | url.par ... ).query | examples/TaintedPath.js:8:18:8:52 | url.par ... ry.path | provenance | Config | -| examples/TaintedPath.js:8:18:8:52 | url.par ... ry.path | examples/TaintedPath.js:8:7:8:52 | filePath | provenance | | +| examples/TaintedPath.js:8:18:8:52 | url.par ... ry.path | examples/TaintedPath.js:8:7:8:14 | filePath | provenance | | | examples/TaintedPath.js:8:28:8:34 | req.url | examples/TaintedPath.js:8:18:8:41 | url.par ... , true) | provenance | Config | | examples/TaintedPath.js:10:36:10:43 | filePath | examples/TaintedPath.js:10:29:10:43 | ROOT + filePath | provenance | Config | -| execa.js:6:9:6:64 | filePath | execa.js:9:26:9:33 | filePath | provenance | | -| execa.js:6:9:6:64 | filePath | execa.js:12:37:12:44 | filePath | provenance | | -| execa.js:6:9:6:64 | filePath | execa.js:15:50:15:57 | filePath | provenance | | -| execa.js:6:9:6:64 | filePath | execa.js:18:62:18:69 | filePath | provenance | | +| execa.js:6:9:6:16 | filePath | execa.js:9:26:9:33 | filePath | provenance | | +| execa.js:6:9:6:16 | filePath | execa.js:12:37:12:44 | filePath | provenance | | +| execa.js:6:9:6:16 | filePath | execa.js:15:50:15:57 | filePath | provenance | | +| execa.js:6:9:6:16 | filePath | execa.js:18:62:18:69 | filePath | provenance | | | execa.js:6:20:6:43 | url.par ... , true) | execa.js:6:20:6:49 | url.par ... ).query | provenance | Config | | execa.js:6:20:6:49 | url.par ... ).query | execa.js:6:20:6:61 | url.par ... ePath"] | provenance | Config | | execa.js:6:20:6:61 | url.par ... ePath"] | execa.js:6:20:6:64 | url.par ... th"][0] | provenance | Config | -| execa.js:6:20:6:64 | url.par ... th"][0] | execa.js:6:9:6:64 | filePath | provenance | | +| execa.js:6:20:6:64 | url.par ... th"][0] | execa.js:6:9:6:16 | filePath | provenance | | | execa.js:6:30:6:36 | req.url | execa.js:6:20:6:43 | url.par ... , true) | provenance | Config | | handlebars.js:10:51:10:58 | filePath | handlebars.js:11:32:11:39 | filePath | provenance | | | handlebars.js:13:73:13:80 | filePath | handlebars.js:15:25:15:32 | filePath | provenance | | | handlebars.js:29:46:29:60 | req.params.path | handlebars.js:10:51:10:58 | filePath | provenance | | | handlebars.js:43:15:43:29 | req.params.path | handlebars.js:13:73:13:80 | filePath | provenance | | -| hapi.js:14:19:14:51 | filepath | hapi.js:15:44:15:51 | filepath | provenance | | -| hapi.js:14:30:14:51 | request ... ilepath | hapi.js:14:19:14:51 | filepath | provenance | | -| make-dir.js:7:11:7:31 | file | make-dir.js:9:25:9:28 | file | provenance | | -| make-dir.js:7:11:7:31 | file | make-dir.js:10:23:10:26 | file | provenance | | -| make-dir.js:7:18:7:31 | req.query.file | make-dir.js:7:11:7:31 | file | provenance | | -| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:11:12:11:18 | dirPath | provenance | | -| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:12:17:12:23 | dirPath | provenance | | -| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:13:23:13:29 | dirPath | provenance | | -| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:14:19:14:25 | dirPath | provenance | | -| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:15:19:15:25 | dirPath | provenance | | -| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:16:23:16:29 | dirPath | provenance | | -| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:17:25:17:31 | dirPath | provenance | | -| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:18:25:18:31 | dirPath | provenance | | -| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:19:29:19:35 | dirPath | provenance | | -| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:20:29:20:35 | dirPath | provenance | | -| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:21:23:21:29 | dirPath | provenance | | -| mkdirp.js:9:21:9:76 | path.jo ... ltDir') | mkdirp.js:9:11:9:76 | dirPath | provenance | | +| hapi.js:14:19:14:26 | filepath | hapi.js:15:44:15:51 | filepath | provenance | | +| hapi.js:14:30:14:51 | request ... ilepath | hapi.js:14:19:14:26 | filepath | provenance | | +| make-dir.js:7:11:7:14 | file | make-dir.js:9:25:9:28 | file | provenance | | +| make-dir.js:7:11:7:14 | file | make-dir.js:10:23:10:26 | file | provenance | | +| make-dir.js:7:18:7:31 | req.query.file | make-dir.js:7:11:7:14 | file | provenance | | +| mkdirp.js:9:11:9:17 | dirPath | mkdirp.js:11:12:11:18 | dirPath | provenance | | +| mkdirp.js:9:11:9:17 | dirPath | mkdirp.js:12:17:12:23 | dirPath | provenance | | +| mkdirp.js:9:11:9:17 | dirPath | mkdirp.js:13:23:13:29 | dirPath | provenance | | +| mkdirp.js:9:11:9:17 | dirPath | mkdirp.js:14:19:14:25 | dirPath | provenance | | +| mkdirp.js:9:11:9:17 | dirPath | mkdirp.js:15:19:15:25 | dirPath | provenance | | +| mkdirp.js:9:11:9:17 | dirPath | mkdirp.js:16:23:16:29 | dirPath | provenance | | +| mkdirp.js:9:11:9:17 | dirPath | mkdirp.js:17:25:17:31 | dirPath | provenance | | +| mkdirp.js:9:11:9:17 | dirPath | mkdirp.js:18:25:18:31 | dirPath | provenance | | +| mkdirp.js:9:11:9:17 | dirPath | mkdirp.js:19:29:19:35 | dirPath | provenance | | +| mkdirp.js:9:11:9:17 | dirPath | mkdirp.js:20:29:20:35 | dirPath | provenance | | +| mkdirp.js:9:11:9:17 | dirPath | mkdirp.js:21:23:21:29 | dirPath | provenance | | +| mkdirp.js:9:21:9:76 | path.jo ... ltDir') | mkdirp.js:9:11:9:17 | dirPath | provenance | | | mkdirp.js:9:42:9:59 | req.query.filename | mkdirp.js:9:42:9:75 | req.que ... ultDir' | provenance | | | mkdirp.js:9:42:9:75 | req.que ... ultDir' | mkdirp.js:9:21:9:76 | path.jo ... ltDir') | provenance | Config | | more-fs-extra.js:8:11:8:22 | { filename } | more-fs-extra.js:8:13:8:20 | filename | provenance | Config | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:10:15:10:22 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:11:11:11:18 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:12:14:12:21 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:13:18:13:25 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:14:11:14:18 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:15:21:15:28 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:16:21:16:28 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:17:31:17:38 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:18:15:18:22 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:19:25:19:32 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:20:21:20:28 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:21:17:21:24 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:22:16:22:23 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:23:20:23:27 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:24:19:24:26 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:25:15:25:22 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:26:19:26:26 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:27:13:27:20 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:28:17:28:24 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:29:23:29:30 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:30:16:30:23 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:31:20:31:27 | filename | provenance | | -| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:32:23:32:30 | filename | provenance | | -| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:8:11:8:33 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:8:13:8:20 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:10:15:10:22 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:11:11:11:18 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:12:14:12:21 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:13:18:13:25 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:14:11:14:18 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:15:21:15:28 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:16:21:16:28 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:17:31:17:38 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:18:15:18:22 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:19:25:19:32 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:20:21:20:28 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:21:17:21:24 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:22:16:22:23 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:23:20:23:27 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:24:19:24:26 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:25:15:25:22 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:26:19:26:26 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:27:13:27:20 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:28:17:28:24 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:29:23:29:30 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:30:16:30:23 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:31:20:31:27 | filename | provenance | | +| more-fs-extra.js:8:13:8:20 | filename | more-fs-extra.js:32:23:32:30 | filename | provenance | | | more-fs-extra.js:8:26:8:33 | req.body | more-fs-extra.js:8:11:8:22 | { filename } | provenance | | -| normalizedPaths.js:11:7:11:27 | path | normalizedPaths.js:13:19:13:22 | path | provenance | | -| normalizedPaths.js:11:7:11:27 | path | normalizedPaths.js:14:26:14:29 | path | provenance | | -| normalizedPaths.js:11:7:11:27 | path | normalizedPaths.js:15:19:15:22 | path | provenance | | -| normalizedPaths.js:11:7:11:27 | path | normalizedPaths.js:16:35:16:38 | path | provenance | | -| normalizedPaths.js:11:7:11:27 | path | normalizedPaths.js:17:53:17:56 | path | provenance | | -| normalizedPaths.js:11:14:11:27 | req.query.path | normalizedPaths.js:11:7:11:27 | path | provenance | | +| normalizedPaths.js:11:7:11:10 | path | normalizedPaths.js:13:19:13:22 | path | provenance | | +| normalizedPaths.js:11:7:11:10 | path | normalizedPaths.js:14:26:14:29 | path | provenance | | +| normalizedPaths.js:11:7:11:10 | path | normalizedPaths.js:15:19:15:22 | path | provenance | | +| normalizedPaths.js:11:7:11:10 | path | normalizedPaths.js:16:35:16:38 | path | provenance | | +| normalizedPaths.js:11:7:11:10 | path | normalizedPaths.js:17:53:17:56 | path | provenance | | +| normalizedPaths.js:11:14:11:27 | req.query.path | normalizedPaths.js:11:7:11:10 | path | provenance | | | normalizedPaths.js:14:26:14:29 | path | normalizedPaths.js:14:19:14:29 | './' + path | provenance | Config | | normalizedPaths.js:15:19:15:22 | path | normalizedPaths.js:15:19:15:38 | path + '/index.html' | provenance | Config | | normalizedPaths.js:16:35:16:38 | path | normalizedPaths.js:16:19:16:53 | pathMod ... .html') | provenance | Config | | normalizedPaths.js:17:53:17:56 | path | normalizedPaths.js:17:19:17:57 | pathMod ... , path) | provenance | Config | -| normalizedPaths.js:21:7:21:49 | path | normalizedPaths.js:23:19:23:22 | path | provenance | | -| normalizedPaths.js:21:7:21:49 | path | normalizedPaths.js:24:26:24:29 | path | provenance | | -| normalizedPaths.js:21:7:21:49 | path | normalizedPaths.js:25:19:25:22 | path | provenance | | -| normalizedPaths.js:21:7:21:49 | path | normalizedPaths.js:26:35:26:38 | path | provenance | | -| normalizedPaths.js:21:7:21:49 | path | normalizedPaths.js:27:53:27:56 | path | provenance | | -| normalizedPaths.js:21:14:21:49 | pathMod ... y.path) | normalizedPaths.js:21:7:21:49 | path | provenance | | +| normalizedPaths.js:21:7:21:10 | path | normalizedPaths.js:23:19:23:22 | path | provenance | | +| normalizedPaths.js:21:7:21:10 | path | normalizedPaths.js:24:26:24:29 | path | provenance | | +| normalizedPaths.js:21:7:21:10 | path | normalizedPaths.js:25:19:25:22 | path | provenance | | +| normalizedPaths.js:21:7:21:10 | path | normalizedPaths.js:26:35:26:38 | path | provenance | | +| normalizedPaths.js:21:7:21:10 | path | normalizedPaths.js:27:53:27:56 | path | provenance | | +| normalizedPaths.js:21:14:21:49 | pathMod ... y.path) | normalizedPaths.js:21:7:21:10 | path | provenance | | | normalizedPaths.js:21:35:21:48 | req.query.path | normalizedPaths.js:21:14:21:49 | pathMod ... y.path) | provenance | Config | | normalizedPaths.js:24:26:24:29 | path | normalizedPaths.js:24:19:24:29 | './' + path | provenance | Config | | normalizedPaths.js:25:19:25:22 | path | normalizedPaths.js:25:19:25:38 | path + '/index.html' | provenance | Config | | normalizedPaths.js:26:35:26:38 | path | normalizedPaths.js:26:19:26:53 | pathMod ... .html') | provenance | Config | | normalizedPaths.js:27:53:27:56 | path | normalizedPaths.js:27:19:27:57 | pathMod ... , path) | provenance | Config | -| normalizedPaths.js:31:7:31:49 | path | normalizedPaths.js:36:19:36:22 | path | provenance | | -| normalizedPaths.js:31:7:31:49 | path | normalizedPaths.js:41:21:41:24 | path | provenance | | -| normalizedPaths.js:31:14:31:49 | pathMod ... y.path) | normalizedPaths.js:31:7:31:49 | path | provenance | | +| normalizedPaths.js:31:7:31:10 | path | normalizedPaths.js:36:19:36:22 | path | provenance | | +| normalizedPaths.js:31:7:31:10 | path | normalizedPaths.js:41:21:41:24 | path | provenance | | +| normalizedPaths.js:31:14:31:49 | pathMod ... y.path) | normalizedPaths.js:31:7:31:10 | path | provenance | | | normalizedPaths.js:31:35:31:48 | req.query.path | normalizedPaths.js:31:14:31:49 | pathMod ... y.path) | provenance | Config | -| normalizedPaths.js:54:7:54:49 | path | normalizedPaths.js:59:19:59:22 | path | provenance | | -| normalizedPaths.js:54:7:54:49 | path | normalizedPaths.js:63:19:63:22 | path | provenance | | -| normalizedPaths.js:54:7:54:49 | path | normalizedPaths.js:68:21:68:24 | path | provenance | | -| normalizedPaths.js:54:14:54:49 | pathMod ... y.path) | normalizedPaths.js:54:7:54:49 | path | provenance | | +| normalizedPaths.js:54:7:54:10 | path | normalizedPaths.js:59:19:59:22 | path | provenance | | +| normalizedPaths.js:54:7:54:10 | path | normalizedPaths.js:63:19:63:22 | path | provenance | | +| normalizedPaths.js:54:7:54:10 | path | normalizedPaths.js:68:21:68:24 | path | provenance | | +| normalizedPaths.js:54:14:54:49 | pathMod ... y.path) | normalizedPaths.js:54:7:54:10 | path | provenance | | | normalizedPaths.js:54:35:54:48 | req.query.path | normalizedPaths.js:54:14:54:49 | pathMod ... y.path) | provenance | Config | | normalizedPaths.js:63:19:63:22 | path | normalizedPaths.js:63:19:63:38 | path + "/index.html" | provenance | Config | -| normalizedPaths.js:73:7:73:56 | path | normalizedPaths.js:78:22:78:25 | path | provenance | | -| normalizedPaths.js:73:14:73:56 | pathMod ... y.path) | normalizedPaths.js:73:7:73:56 | path | provenance | | +| normalizedPaths.js:73:7:73:10 | path | normalizedPaths.js:78:22:78:25 | path | provenance | | +| normalizedPaths.js:73:14:73:56 | pathMod ... y.path) | normalizedPaths.js:73:7:73:10 | path | provenance | | | normalizedPaths.js:73:35:73:55 | './' + ... ry.path | normalizedPaths.js:73:14:73:56 | pathMod ... y.path) | provenance | Config | | normalizedPaths.js:73:42:73:55 | req.query.path | normalizedPaths.js:73:35:73:55 | './' + ... ry.path | provenance | Config | -| normalizedPaths.js:82:7:82:27 | path | normalizedPaths.js:87:29:87:32 | path | provenance | | -| normalizedPaths.js:82:7:82:27 | path | normalizedPaths.js:90:31:90:34 | path | provenance | | -| normalizedPaths.js:82:14:82:27 | req.query.path | normalizedPaths.js:82:7:82:27 | path | provenance | | -| normalizedPaths.js:94:7:94:49 | path | normalizedPaths.js:99:29:99:32 | path | provenance | | -| normalizedPaths.js:94:14:94:49 | pathMod ... y.path) | normalizedPaths.js:94:7:94:49 | path | provenance | | +| normalizedPaths.js:82:7:82:10 | path | normalizedPaths.js:87:29:87:32 | path | provenance | | +| normalizedPaths.js:82:7:82:10 | path | normalizedPaths.js:90:31:90:34 | path | provenance | | +| normalizedPaths.js:82:14:82:27 | req.query.path | normalizedPaths.js:82:7:82:10 | path | provenance | | +| normalizedPaths.js:94:7:94:10 | path | normalizedPaths.js:99:29:99:32 | path | provenance | | +| normalizedPaths.js:94:14:94:49 | pathMod ... y.path) | normalizedPaths.js:94:7:94:10 | path | provenance | | | normalizedPaths.js:94:35:94:48 | req.query.path | normalizedPaths.js:94:14:94:49 | pathMod ... y.path) | provenance | Config | -| normalizedPaths.js:117:7:117:44 | path | normalizedPaths.js:119:19:119:22 | path | provenance | | -| normalizedPaths.js:117:7:117:44 | path | normalizedPaths.js:120:35:120:38 | path | provenance | | -| normalizedPaths.js:117:14:117:44 | fs.real ... y.path) | normalizedPaths.js:117:7:117:44 | path | provenance | | +| normalizedPaths.js:117:7:117:10 | path | normalizedPaths.js:119:19:119:22 | path | provenance | | +| normalizedPaths.js:117:7:117:10 | path | normalizedPaths.js:120:35:120:38 | path | provenance | | +| normalizedPaths.js:117:14:117:44 | fs.real ... y.path) | normalizedPaths.js:117:7:117:10 | path | provenance | | | normalizedPaths.js:117:30:117:43 | req.query.path | normalizedPaths.js:117:14:117:44 | fs.real ... y.path) | provenance | Config | | normalizedPaths.js:120:35:120:38 | path | normalizedPaths.js:120:19:120:53 | pathMod ... .html') | provenance | Config | -| normalizedPaths.js:130:7:130:49 | path | normalizedPaths.js:135:21:135:24 | path | provenance | | -| normalizedPaths.js:130:14:130:49 | pathMod ... y.path) | normalizedPaths.js:130:7:130:49 | path | provenance | | +| normalizedPaths.js:130:7:130:10 | path | normalizedPaths.js:135:21:135:24 | path | provenance | | +| normalizedPaths.js:130:14:130:49 | pathMod ... y.path) | normalizedPaths.js:130:7:130:10 | path | provenance | | | normalizedPaths.js:130:35:130:48 | req.query.path | normalizedPaths.js:130:14:130:49 | pathMod ... y.path) | provenance | Config | -| normalizedPaths.js:139:7:139:62 | path | normalizedPaths.js:144:21:144:24 | path | provenance | | -| normalizedPaths.js:139:14:139:62 | pathMod ... y.path) | normalizedPaths.js:139:7:139:62 | path | provenance | | +| normalizedPaths.js:139:7:139:10 | path | normalizedPaths.js:144:21:144:24 | path | provenance | | +| normalizedPaths.js:139:14:139:62 | pathMod ... y.path) | normalizedPaths.js:139:7:139:10 | path | provenance | | | normalizedPaths.js:139:48:139:61 | req.query.path | normalizedPaths.js:139:14:139:62 | pathMod ... y.path) | provenance | Config | -| normalizedPaths.js:148:7:148:58 | path | normalizedPaths.js:151:21:151:24 | path | provenance | | -| normalizedPaths.js:148:7:148:58 | path | normalizedPaths.js:153:21:153:24 | path | provenance | | -| normalizedPaths.js:148:14:148:58 | 'foo/' ... y.path) | normalizedPaths.js:148:7:148:58 | path | provenance | | +| normalizedPaths.js:148:7:148:10 | path | normalizedPaths.js:151:21:151:24 | path | provenance | | +| normalizedPaths.js:148:7:148:10 | path | normalizedPaths.js:153:21:153:24 | path | provenance | | +| normalizedPaths.js:148:14:148:58 | 'foo/' ... y.path) | normalizedPaths.js:148:7:148:10 | path | provenance | | | normalizedPaths.js:148:23:148:58 | pathMod ... y.path) | normalizedPaths.js:148:14:148:58 | 'foo/' ... y.path) | provenance | Config | | normalizedPaths.js:148:44:148:57 | req.query.path | normalizedPaths.js:148:23:148:58 | pathMod ... y.path) | provenance | Config | -| normalizedPaths.js:160:7:160:49 | path | normalizedPaths.js:165:19:165:22 | path | provenance | | -| normalizedPaths.js:160:7:160:49 | path | normalizedPaths.js:170:21:170:24 | path | provenance | | -| normalizedPaths.js:160:14:160:49 | pathMod ... y.path) | normalizedPaths.js:160:7:160:49 | path | provenance | | +| normalizedPaths.js:160:7:160:10 | path | normalizedPaths.js:165:19:165:22 | path | provenance | | +| normalizedPaths.js:160:7:160:10 | path | normalizedPaths.js:170:21:170:24 | path | provenance | | +| normalizedPaths.js:160:14:160:49 | pathMod ... y.path) | normalizedPaths.js:160:7:160:10 | path | provenance | | | normalizedPaths.js:160:35:160:48 | req.query.path | normalizedPaths.js:160:14:160:49 | pathMod ... y.path) | provenance | Config | -| normalizedPaths.js:174:7:174:27 | path | normalizedPaths.js:184:19:184:22 | path | provenance | | -| normalizedPaths.js:174:7:174:27 | path | normalizedPaths.js:187:21:187:24 | path | provenance | | -| normalizedPaths.js:174:7:174:27 | path | normalizedPaths.js:189:21:189:24 | path | provenance | | -| normalizedPaths.js:174:7:174:27 | path | normalizedPaths.js:192:21:192:24 | path | provenance | | -| normalizedPaths.js:174:7:174:27 | path | normalizedPaths.js:194:21:194:24 | path | provenance | | -| normalizedPaths.js:174:7:174:27 | path | normalizedPaths.js:199:21:199:24 | path | provenance | | -| normalizedPaths.js:174:7:174:27 | path | normalizedPaths.js:201:45:201:48 | path | provenance | | -| normalizedPaths.js:174:14:174:27 | req.query.path | normalizedPaths.js:174:7:174:27 | path | provenance | | -| normalizedPaths.js:201:7:201:49 | normalizedPath | normalizedPaths.js:205:21:205:34 | normalizedPath | provenance | | -| normalizedPaths.js:201:7:201:49 | normalizedPath | normalizedPaths.js:208:21:208:34 | normalizedPath | provenance | | -| normalizedPaths.js:201:7:201:49 | normalizedPath | normalizedPaths.js:210:21:210:34 | normalizedPath | provenance | | -| normalizedPaths.js:201:24:201:49 | pathMod ... e(path) | normalizedPaths.js:201:7:201:49 | normalizedPath | provenance | | +| normalizedPaths.js:174:7:174:10 | path | normalizedPaths.js:184:19:184:22 | path | provenance | | +| normalizedPaths.js:174:7:174:10 | path | normalizedPaths.js:187:21:187:24 | path | provenance | | +| normalizedPaths.js:174:7:174:10 | path | normalizedPaths.js:189:21:189:24 | path | provenance | | +| normalizedPaths.js:174:7:174:10 | path | normalizedPaths.js:192:21:192:24 | path | provenance | | +| normalizedPaths.js:174:7:174:10 | path | normalizedPaths.js:194:21:194:24 | path | provenance | | +| normalizedPaths.js:174:7:174:10 | path | normalizedPaths.js:199:21:199:24 | path | provenance | | +| normalizedPaths.js:174:7:174:10 | path | normalizedPaths.js:201:45:201:48 | path | provenance | | +| normalizedPaths.js:174:14:174:27 | req.query.path | normalizedPaths.js:174:7:174:10 | path | provenance | | +| normalizedPaths.js:201:7:201:20 | normalizedPath | normalizedPaths.js:205:21:205:34 | normalizedPath | provenance | | +| normalizedPaths.js:201:7:201:20 | normalizedPath | normalizedPaths.js:208:21:208:34 | normalizedPath | provenance | | +| normalizedPaths.js:201:7:201:20 | normalizedPath | normalizedPaths.js:210:21:210:34 | normalizedPath | provenance | | +| normalizedPaths.js:201:24:201:49 | pathMod ... e(path) | normalizedPaths.js:201:7:201:20 | normalizedPath | provenance | | | normalizedPaths.js:201:45:201:48 | path | normalizedPaths.js:201:24:201:49 | pathMod ... e(path) | provenance | Config | -| normalizedPaths.js:214:7:214:49 | path | normalizedPaths.js:219:29:219:32 | path | provenance | | -| normalizedPaths.js:214:14:214:49 | pathMod ... y.path) | normalizedPaths.js:214:7:214:49 | path | provenance | | +| normalizedPaths.js:214:7:214:10 | path | normalizedPaths.js:219:29:219:32 | path | provenance | | +| normalizedPaths.js:214:14:214:49 | pathMod ... y.path) | normalizedPaths.js:214:7:214:10 | path | provenance | | | normalizedPaths.js:214:35:214:48 | req.query.path | normalizedPaths.js:214:14:214:49 | pathMod ... y.path) | provenance | Config | -| normalizedPaths.js:219:3:219:33 | path | normalizedPaths.js:222:21:222:24 | path | provenance | | -| normalizedPaths.js:219:10:219:33 | decodeU ... t(path) | normalizedPaths.js:219:3:219:33 | path | provenance | | +| normalizedPaths.js:219:3:219:6 | path | normalizedPaths.js:222:21:222:24 | path | provenance | | +| normalizedPaths.js:219:10:219:33 | decodeU ... t(path) | normalizedPaths.js:219:3:219:6 | path | provenance | | | normalizedPaths.js:219:29:219:32 | path | normalizedPaths.js:219:10:219:33 | decodeU ... t(path) | provenance | Config | -| normalizedPaths.js:226:7:226:70 | path | normalizedPaths.js:228:21:228:24 | path | provenance | | +| normalizedPaths.js:226:7:226:10 | path | normalizedPaths.js:228:21:228:24 | path | provenance | | | normalizedPaths.js:226:14:226:49 | pathMod ... y.path) | normalizedPaths.js:226:14:226:70 | pathMod ... g, ' ') | provenance | Config | -| normalizedPaths.js:226:14:226:70 | pathMod ... g, ' ') | normalizedPaths.js:226:7:226:70 | path | provenance | | +| normalizedPaths.js:226:14:226:70 | pathMod ... g, ' ') | normalizedPaths.js:226:7:226:10 | path | provenance | | | normalizedPaths.js:226:35:226:48 | req.query.path | normalizedPaths.js:226:14:226:49 | pathMod ... y.path) | provenance | Config | -| normalizedPaths.js:236:7:236:47 | path | normalizedPaths.js:238:19:238:22 | path | provenance | | -| normalizedPaths.js:236:7:236:47 | path | normalizedPaths.js:245:21:245:24 | path | provenance | | -| normalizedPaths.js:236:7:236:47 | path | normalizedPaths.js:250:21:250:24 | path | provenance | | -| normalizedPaths.js:236:14:236:47 | pathMod ... y.path) | normalizedPaths.js:236:7:236:47 | path | provenance | | +| normalizedPaths.js:236:7:236:10 | path | normalizedPaths.js:238:19:238:22 | path | provenance | | +| normalizedPaths.js:236:7:236:10 | path | normalizedPaths.js:245:21:245:24 | path | provenance | | +| normalizedPaths.js:236:7:236:10 | path | normalizedPaths.js:250:21:250:24 | path | provenance | | +| normalizedPaths.js:236:14:236:47 | pathMod ... y.path) | normalizedPaths.js:236:7:236:10 | path | provenance | | | normalizedPaths.js:236:33:236:46 | req.query.path | normalizedPaths.js:236:14:236:47 | pathMod ... y.path) | provenance | Config | -| normalizedPaths.js:254:7:254:47 | path | normalizedPaths.js:256:19:256:22 | path | provenance | | -| normalizedPaths.js:254:7:254:47 | path | normalizedPaths.js:262:21:262:24 | path | provenance | | -| normalizedPaths.js:254:7:254:47 | path | normalizedPaths.js:267:38:267:41 | path | provenance | | -| normalizedPaths.js:254:7:254:47 | path | normalizedPaths.js:275:38:275:41 | path | provenance | | -| normalizedPaths.js:254:7:254:47 | path | normalizedPaths.js:283:38:283:41 | path | provenance | | -| normalizedPaths.js:254:7:254:47 | path | normalizedPaths.js:291:38:291:41 | path | provenance | | -| normalizedPaths.js:254:14:254:47 | pathMod ... y.path) | normalizedPaths.js:254:7:254:47 | path | provenance | | +| normalizedPaths.js:254:7:254:10 | path | normalizedPaths.js:256:19:256:22 | path | provenance | | +| normalizedPaths.js:254:7:254:10 | path | normalizedPaths.js:262:21:262:24 | path | provenance | | +| normalizedPaths.js:254:7:254:10 | path | normalizedPaths.js:267:38:267:41 | path | provenance | | +| normalizedPaths.js:254:7:254:10 | path | normalizedPaths.js:275:38:275:41 | path | provenance | | +| normalizedPaths.js:254:7:254:10 | path | normalizedPaths.js:283:38:283:41 | path | provenance | | +| normalizedPaths.js:254:7:254:10 | path | normalizedPaths.js:291:38:291:41 | path | provenance | | +| normalizedPaths.js:254:14:254:47 | pathMod ... y.path) | normalizedPaths.js:254:7:254:10 | path | provenance | | | normalizedPaths.js:254:33:254:46 | req.query.path | normalizedPaths.js:254:14:254:47 | pathMod ... y.path) | provenance | Config | -| normalizedPaths.js:267:7:267:42 | newpath | normalizedPaths.js:270:21:270:27 | newpath | provenance | | -| normalizedPaths.js:267:17:267:42 | pathMod ... e(path) | normalizedPaths.js:267:7:267:42 | newpath | provenance | | +| normalizedPaths.js:267:7:267:13 | newpath | normalizedPaths.js:270:21:270:27 | newpath | provenance | | +| normalizedPaths.js:267:17:267:42 | pathMod ... e(path) | normalizedPaths.js:267:7:267:13 | newpath | provenance | | | normalizedPaths.js:267:38:267:41 | path | normalizedPaths.js:267:17:267:42 | pathMod ... e(path) | provenance | Config | -| normalizedPaths.js:275:7:275:42 | newpath | normalizedPaths.js:278:21:278:27 | newpath | provenance | | -| normalizedPaths.js:275:17:275:42 | pathMod ... e(path) | normalizedPaths.js:275:7:275:42 | newpath | provenance | | +| normalizedPaths.js:275:7:275:13 | newpath | normalizedPaths.js:278:21:278:27 | newpath | provenance | | +| normalizedPaths.js:275:17:275:42 | pathMod ... e(path) | normalizedPaths.js:275:7:275:13 | newpath | provenance | | | normalizedPaths.js:275:38:275:41 | path | normalizedPaths.js:275:17:275:42 | pathMod ... e(path) | provenance | Config | -| normalizedPaths.js:283:7:283:42 | newpath | normalizedPaths.js:286:21:286:27 | newpath | provenance | | -| normalizedPaths.js:283:17:283:42 | pathMod ... e(path) | normalizedPaths.js:283:7:283:42 | newpath | provenance | | +| normalizedPaths.js:283:7:283:13 | newpath | normalizedPaths.js:286:21:286:27 | newpath | provenance | | +| normalizedPaths.js:283:17:283:42 | pathMod ... e(path) | normalizedPaths.js:283:7:283:13 | newpath | provenance | | | normalizedPaths.js:283:38:283:41 | path | normalizedPaths.js:283:17:283:42 | pathMod ... e(path) | provenance | Config | -| normalizedPaths.js:291:7:291:42 | newpath | normalizedPaths.js:296:21:296:27 | newpath | provenance | | -| normalizedPaths.js:291:17:291:42 | pathMod ... e(path) | normalizedPaths.js:291:7:291:42 | newpath | provenance | | +| normalizedPaths.js:291:7:291:13 | newpath | normalizedPaths.js:296:21:296:27 | newpath | provenance | | +| normalizedPaths.js:291:17:291:42 | pathMod ... e(path) | normalizedPaths.js:291:7:291:13 | newpath | provenance | | | normalizedPaths.js:291:38:291:41 | path | normalizedPaths.js:291:17:291:42 | pathMod ... e(path) | provenance | Config | -| normalizedPaths.js:303:6:303:26 | path | normalizedPaths.js:304:18:304:21 | path | provenance | | -| normalizedPaths.js:303:6:303:26 | path | normalizedPaths.js:309:19:309:22 | path | provenance | | -| normalizedPaths.js:303:6:303:26 | path | normalizedPaths.js:313:19:313:22 | path | provenance | | -| normalizedPaths.js:303:6:303:26 | path | normalizedPaths.js:316:19:316:22 | path | provenance | | -| normalizedPaths.js:303:6:303:26 | path | normalizedPaths.js:320:45:320:48 | path | provenance | | -| normalizedPaths.js:303:13:303:26 | req.query.path | normalizedPaths.js:303:6:303:26 | path | provenance | | -| normalizedPaths.js:320:6:320:49 | normalizedPath | normalizedPaths.js:325:19:325:32 | normalizedPath | provenance | | -| normalizedPaths.js:320:6:320:49 | normalizedPath | normalizedPaths.js:332:19:332:32 | normalizedPath | provenance | | -| normalizedPaths.js:320:23:320:49 | pathMod ... , path) | normalizedPaths.js:320:6:320:49 | normalizedPath | provenance | | +| normalizedPaths.js:303:6:303:9 | path | normalizedPaths.js:304:18:304:21 | path | provenance | | +| normalizedPaths.js:303:6:303:9 | path | normalizedPaths.js:309:19:309:22 | path | provenance | | +| normalizedPaths.js:303:6:303:9 | path | normalizedPaths.js:313:19:313:22 | path | provenance | | +| normalizedPaths.js:303:6:303:9 | path | normalizedPaths.js:316:19:316:22 | path | provenance | | +| normalizedPaths.js:303:6:303:9 | path | normalizedPaths.js:320:45:320:48 | path | provenance | | +| normalizedPaths.js:303:13:303:26 | req.query.path | normalizedPaths.js:303:6:303:9 | path | provenance | | +| normalizedPaths.js:320:6:320:19 | normalizedPath | normalizedPaths.js:325:19:325:32 | normalizedPath | provenance | | +| normalizedPaths.js:320:6:320:19 | normalizedPath | normalizedPaths.js:332:19:332:32 | normalizedPath | provenance | | +| normalizedPaths.js:320:23:320:49 | pathMod ... , path) | normalizedPaths.js:320:6:320:19 | normalizedPath | provenance | | | normalizedPaths.js:320:45:320:48 | path | normalizedPaths.js:320:23:320:49 | pathMod ... , path) | provenance | Config | -| normalizedPaths.js:339:6:339:46 | path | normalizedPaths.js:341:18:341:21 | path | provenance | | -| normalizedPaths.js:339:6:339:46 | path | normalizedPaths.js:346:19:346:22 | path | provenance | | -| normalizedPaths.js:339:13:339:46 | pathMod ... y.path) | normalizedPaths.js:339:6:339:46 | path | provenance | | +| normalizedPaths.js:339:6:339:9 | path | normalizedPaths.js:341:18:341:21 | path | provenance | | +| normalizedPaths.js:339:6:339:9 | path | normalizedPaths.js:346:19:346:22 | path | provenance | | +| normalizedPaths.js:339:13:339:46 | pathMod ... y.path) | normalizedPaths.js:339:6:339:9 | path | provenance | | | normalizedPaths.js:339:32:339:45 | req.query.path | normalizedPaths.js:339:13:339:46 | pathMod ... y.path) | provenance | Config | -| normalizedPaths.js:354:7:354:27 | path | normalizedPaths.js:356:19:356:22 | path | provenance | | -| normalizedPaths.js:354:7:354:27 | path | normalizedPaths.js:358:47:358:50 | path | provenance | | -| normalizedPaths.js:354:14:354:27 | req.query.path | normalizedPaths.js:354:7:354:27 | path | provenance | | -| normalizedPaths.js:358:7:358:51 | requestPath | normalizedPaths.js:363:21:363:31 | requestPath | provenance | | -| normalizedPaths.js:358:21:358:51 | pathMod ... , path) | normalizedPaths.js:358:7:358:51 | requestPath | provenance | | +| normalizedPaths.js:354:7:354:10 | path | normalizedPaths.js:356:19:356:22 | path | provenance | | +| normalizedPaths.js:354:7:354:10 | path | normalizedPaths.js:358:47:358:50 | path | provenance | | +| normalizedPaths.js:354:14:354:27 | req.query.path | normalizedPaths.js:354:7:354:10 | path | provenance | | +| normalizedPaths.js:358:7:358:17 | requestPath | normalizedPaths.js:363:21:363:31 | requestPath | provenance | | +| normalizedPaths.js:358:21:358:51 | pathMod ... , path) | normalizedPaths.js:358:7:358:17 | requestPath | provenance | | | normalizedPaths.js:358:47:358:50 | path | normalizedPaths.js:358:21:358:51 | pathMod ... , path) | provenance | Config | -| normalizedPaths.js:377:7:377:27 | path | normalizedPaths.js:379:19:379:22 | path | provenance | | -| normalizedPaths.js:377:7:377:27 | path | normalizedPaths.js:381:25:381:28 | path | provenance | | -| normalizedPaths.js:377:14:377:27 | req.query.path | normalizedPaths.js:377:7:377:27 | path | provenance | | +| normalizedPaths.js:377:7:377:10 | path | normalizedPaths.js:379:19:379:22 | path | provenance | | +| normalizedPaths.js:377:7:377:10 | path | normalizedPaths.js:381:25:381:28 | path | provenance | | +| normalizedPaths.js:377:14:377:27 | req.query.path | normalizedPaths.js:377:7:377:10 | path | provenance | | | normalizedPaths.js:381:25:381:28 | path | normalizedPaths.js:381:19:381:29 | slash(path) | provenance | Config | -| normalizedPaths.js:385:7:385:46 | path | normalizedPaths.js:388:19:388:22 | path | provenance | | -| normalizedPaths.js:385:7:385:46 | path | normalizedPaths.js:399:21:399:24 | path | provenance | | -| normalizedPaths.js:385:14:385:46 | pathMod ... uery.x) | normalizedPaths.js:385:7:385:46 | path | provenance | | +| normalizedPaths.js:385:7:385:10 | path | normalizedPaths.js:388:19:388:22 | path | provenance | | +| normalizedPaths.js:385:7:385:10 | path | normalizedPaths.js:399:21:399:24 | path | provenance | | +| normalizedPaths.js:385:14:385:46 | pathMod ... uery.x) | normalizedPaths.js:385:7:385:10 | path | provenance | | | normalizedPaths.js:385:35:385:45 | req.query.x | normalizedPaths.js:385:14:385:46 | pathMod ... uery.x) | provenance | Config | | normalizedPaths.js:407:45:407:55 | req.query.x | normalizedPaths.js:407:45:407:66 | req.que ... it('/') | provenance | Config | | normalizedPaths.js:407:45:407:66 | req.que ... it('/') | normalizedPaths.js:407:19:407:67 | pathMod ... t('/')) | provenance | Config | | normalizedPaths.js:408:38:408:48 | req.query.x | normalizedPaths.js:408:38:408:59 | req.que ... it('/') | provenance | Config | | normalizedPaths.js:408:38:408:59 | req.que ... it('/') | normalizedPaths.js:408:19:408:60 | pathMod ... t('/')) | provenance | Config | -| normalizedPaths.js:412:7:412:46 | path | normalizedPaths.js:415:19:415:22 | path | provenance | | -| normalizedPaths.js:412:7:412:46 | path | normalizedPaths.js:426:21:426:24 | path | provenance | | -| normalizedPaths.js:412:14:412:46 | pathMod ... uery.x) | normalizedPaths.js:412:7:412:46 | path | provenance | | +| normalizedPaths.js:412:7:412:10 | path | normalizedPaths.js:415:19:415:22 | path | provenance | | +| normalizedPaths.js:412:7:412:10 | path | normalizedPaths.js:426:21:426:24 | path | provenance | | +| normalizedPaths.js:412:14:412:46 | pathMod ... uery.x) | normalizedPaths.js:412:7:412:10 | path | provenance | | | normalizedPaths.js:412:35:412:45 | req.query.x | normalizedPaths.js:412:14:412:46 | pathMod ... uery.x) | provenance | Config | -| open.js:7:11:7:31 | file | open.js:9:10:9:13 | file | provenance | | -| open.js:7:11:7:31 | file | open.js:10:13:10:16 | file | provenance | | -| open.js:7:18:7:31 | req.query.file | open.js:7:11:7:31 | file | provenance | | -| other-fs-libraries.js:9:7:9:48 | path | other-fs-libraries.js:11:19:11:22 | path | provenance | | -| other-fs-libraries.js:9:7:9:48 | path | other-fs-libraries.js:12:27:12:30 | path | provenance | | -| other-fs-libraries.js:9:7:9:48 | path | other-fs-libraries.js:13:24:13:27 | path | provenance | | -| other-fs-libraries.js:9:7:9:48 | path | other-fs-libraries.js:14:27:14:30 | path | provenance | | -| other-fs-libraries.js:9:7:9:48 | path | other-fs-libraries.js:16:34:16:37 | path | provenance | | -| other-fs-libraries.js:9:7:9:48 | path | other-fs-libraries.js:17:35:17:38 | path | provenance | | -| other-fs-libraries.js:9:7:9:48 | path | other-fs-libraries.js:19:56:19:59 | path | provenance | | -| other-fs-libraries.js:9:7:9:48 | path | other-fs-libraries.js:24:35:24:38 | path | provenance | | +| open.js:7:11:7:14 | file | open.js:9:10:9:13 | file | provenance | | +| open.js:7:11:7:14 | file | open.js:10:13:10:16 | file | provenance | | +| open.js:7:18:7:31 | req.query.file | open.js:7:11:7:14 | file | provenance | | +| other-fs-libraries.js:9:7:9:10 | path | other-fs-libraries.js:11:19:11:22 | path | provenance | | +| other-fs-libraries.js:9:7:9:10 | path | other-fs-libraries.js:12:27:12:30 | path | provenance | | +| other-fs-libraries.js:9:7:9:10 | path | other-fs-libraries.js:13:24:13:27 | path | provenance | | +| other-fs-libraries.js:9:7:9:10 | path | other-fs-libraries.js:14:27:14:30 | path | provenance | | +| other-fs-libraries.js:9:7:9:10 | path | other-fs-libraries.js:16:34:16:37 | path | provenance | | +| other-fs-libraries.js:9:7:9:10 | path | other-fs-libraries.js:17:35:17:38 | path | provenance | | +| other-fs-libraries.js:9:7:9:10 | path | other-fs-libraries.js:19:56:19:59 | path | provenance | | +| other-fs-libraries.js:9:7:9:10 | path | other-fs-libraries.js:24:35:24:38 | path | provenance | | | other-fs-libraries.js:9:14:9:37 | url.par ... , true) | other-fs-libraries.js:9:14:9:43 | url.par ... ).query | provenance | Config | | other-fs-libraries.js:9:14:9:43 | url.par ... ).query | other-fs-libraries.js:9:14:9:48 | url.par ... ry.path | provenance | Config | -| other-fs-libraries.js:9:14:9:48 | url.par ... ry.path | other-fs-libraries.js:9:7:9:48 | path | provenance | | +| other-fs-libraries.js:9:14:9:48 | url.par ... ry.path | other-fs-libraries.js:9:7:9:10 | path | provenance | | | other-fs-libraries.js:9:24:9:30 | req.url | other-fs-libraries.js:9:14:9:37 | url.par ... , true) | provenance | Config | -| other-fs-libraries.js:38:7:38:48 | path | other-fs-libraries.js:40:35:40:38 | path | provenance | | -| other-fs-libraries.js:38:7:38:48 | path | other-fs-libraries.js:41:50:41:53 | path | provenance | | -| other-fs-libraries.js:38:7:38:48 | path | other-fs-libraries.js:42:53:42:56 | path | provenance | | +| other-fs-libraries.js:38:7:38:10 | path | other-fs-libraries.js:40:35:40:38 | path | provenance | | +| other-fs-libraries.js:38:7:38:10 | path | other-fs-libraries.js:41:50:41:53 | path | provenance | | +| other-fs-libraries.js:38:7:38:10 | path | other-fs-libraries.js:42:53:42:56 | path | provenance | | | other-fs-libraries.js:38:14:38:37 | url.par ... , true) | other-fs-libraries.js:38:14:38:43 | url.par ... ).query | provenance | Config | | other-fs-libraries.js:38:14:38:43 | url.par ... ).query | other-fs-libraries.js:38:14:38:48 | url.par ... ry.path | provenance | Config | -| other-fs-libraries.js:38:14:38:48 | url.par ... ry.path | other-fs-libraries.js:38:7:38:48 | path | provenance | | +| other-fs-libraries.js:38:14:38:48 | url.par ... ry.path | other-fs-libraries.js:38:7:38:10 | path | provenance | | | other-fs-libraries.js:38:24:38:30 | req.url | other-fs-libraries.js:38:14:38:37 | url.par ... , true) | provenance | Config | -| other-fs-libraries.js:49:7:49:48 | path | other-fs-libraries.js:51:19:51:22 | path | provenance | | -| other-fs-libraries.js:49:7:49:48 | path | other-fs-libraries.js:52:24:52:27 | path | provenance | | -| other-fs-libraries.js:49:7:49:48 | path | other-fs-libraries.js:54:36:54:39 | path | provenance | | -| other-fs-libraries.js:49:7:49:48 | path | other-fs-libraries.js:55:36:55:39 | path | provenance | | -| other-fs-libraries.js:49:7:49:48 | path | other-fs-libraries.js:57:46:57:49 | path | provenance | | -| other-fs-libraries.js:49:7:49:48 | path | other-fs-libraries.js:59:39:59:42 | path | provenance | | -| other-fs-libraries.js:49:7:49:48 | path | other-fs-libraries.js:62:43:62:46 | path | provenance | | -| other-fs-libraries.js:49:7:49:48 | path | other-fs-libraries.js:63:51:63:54 | path | provenance | | +| other-fs-libraries.js:49:7:49:10 | path | other-fs-libraries.js:51:19:51:22 | path | provenance | | +| other-fs-libraries.js:49:7:49:10 | path | other-fs-libraries.js:52:24:52:27 | path | provenance | | +| other-fs-libraries.js:49:7:49:10 | path | other-fs-libraries.js:54:36:54:39 | path | provenance | | +| other-fs-libraries.js:49:7:49:10 | path | other-fs-libraries.js:55:36:55:39 | path | provenance | | +| other-fs-libraries.js:49:7:49:10 | path | other-fs-libraries.js:57:46:57:49 | path | provenance | | +| other-fs-libraries.js:49:7:49:10 | path | other-fs-libraries.js:59:39:59:42 | path | provenance | | +| other-fs-libraries.js:49:7:49:10 | path | other-fs-libraries.js:62:43:62:46 | path | provenance | | +| other-fs-libraries.js:49:7:49:10 | path | other-fs-libraries.js:63:51:63:54 | path | provenance | | | other-fs-libraries.js:49:14:49:37 | url.par ... , true) | other-fs-libraries.js:49:14:49:43 | url.par ... ).query | provenance | Config | | other-fs-libraries.js:49:14:49:43 | url.par ... ).query | other-fs-libraries.js:49:14:49:48 | url.par ... ry.path | provenance | Config | -| other-fs-libraries.js:49:14:49:48 | url.par ... ry.path | other-fs-libraries.js:49:7:49:48 | path | provenance | | +| other-fs-libraries.js:49:14:49:48 | url.par ... ry.path | other-fs-libraries.js:49:7:49:10 | path | provenance | | | other-fs-libraries.js:49:24:49:30 | req.url | other-fs-libraries.js:49:14:49:37 | url.par ... , true) | provenance | Config | -| other-fs-libraries.js:68:7:68:48 | path | other-fs-libraries.js:70:19:70:22 | path | provenance | | -| other-fs-libraries.js:68:7:68:48 | path | other-fs-libraries.js:71:10:71:13 | path | provenance | | -| other-fs-libraries.js:68:7:68:48 | path | other-fs-libraries.js:72:15:72:18 | path | provenance | | -| other-fs-libraries.js:68:7:68:48 | path | other-fs-libraries.js:73:8:73:11 | path | provenance | | +| other-fs-libraries.js:68:7:68:10 | path | other-fs-libraries.js:70:19:70:22 | path | provenance | | +| other-fs-libraries.js:68:7:68:10 | path | other-fs-libraries.js:71:10:71:13 | path | provenance | | +| other-fs-libraries.js:68:7:68:10 | path | other-fs-libraries.js:72:15:72:18 | path | provenance | | +| other-fs-libraries.js:68:7:68:10 | path | other-fs-libraries.js:73:8:73:11 | path | provenance | | | other-fs-libraries.js:68:14:68:37 | url.par ... , true) | other-fs-libraries.js:68:14:68:43 | url.par ... ).query | provenance | Config | | other-fs-libraries.js:68:14:68:43 | url.par ... ).query | other-fs-libraries.js:68:14:68:48 | url.par ... ry.path | provenance | Config | -| other-fs-libraries.js:68:14:68:48 | url.par ... ry.path | other-fs-libraries.js:68:7:68:48 | path | provenance | | +| other-fs-libraries.js:68:14:68:48 | url.par ... ry.path | other-fs-libraries.js:68:7:68:10 | path | provenance | | | other-fs-libraries.js:68:24:68:30 | req.url | other-fs-libraries.js:68:14:68:37 | url.par ... , true) | provenance | Config | | other-fs-libraries.js:73:8:73:11 | path | other-fs-libraries.js:75:15:75:15 | x | provenance | | | other-fs-libraries.js:75:15:75:15 | x | other-fs-libraries.js:76:19:76:19 | x | provenance | | -| other-fs-libraries.js:81:7:81:48 | path | other-fs-libraries.js:83:16:83:19 | path | provenance | | +| other-fs-libraries.js:81:7:81:10 | path | other-fs-libraries.js:83:16:83:19 | path | provenance | | | other-fs-libraries.js:81:14:81:37 | url.par ... , true) | other-fs-libraries.js:81:14:81:43 | url.par ... ).query | provenance | Config | | other-fs-libraries.js:81:14:81:43 | url.par ... ).query | other-fs-libraries.js:81:14:81:48 | url.par ... ry.path | provenance | Config | -| other-fs-libraries.js:81:14:81:48 | url.par ... ry.path | other-fs-libraries.js:81:7:81:48 | path | provenance | | +| other-fs-libraries.js:81:14:81:48 | url.par ... ry.path | other-fs-libraries.js:81:7:81:10 | path | provenance | | | other-fs-libraries.js:81:24:81:30 | req.url | other-fs-libraries.js:81:14:81:37 | url.par ... , true) | provenance | Config | -| prettier.js:6:11:6:28 | p | prettier.js:7:28:7:28 | p | provenance | | -| prettier.js:6:11:6:28 | p | prettier.js:11:44:11:44 | p | provenance | | -| prettier.js:6:13:6:13 | p | prettier.js:6:11:6:28 | p | provenance | | -| pupeteer.js:5:9:5:71 | tainted | pupeteer.js:9:28:9:34 | tainted | provenance | | -| pupeteer.js:5:9:5:71 | tainted | pupeteer.js:13:37:13:43 | tainted | provenance | | -| pupeteer.js:5:19:5:71 | "dir/" ... t.data" | pupeteer.js:5:9:5:71 | tainted | provenance | | +| prettier.js:6:13:6:13 | p | prettier.js:6:13:6:13 | p | provenance | | +| prettier.js:6:13:6:13 | p | prettier.js:7:28:7:28 | p | provenance | | +| prettier.js:6:13:6:13 | p | prettier.js:11:44:11:44 | p | provenance | | +| pupeteer.js:5:9:5:15 | tainted | pupeteer.js:9:28:9:34 | tainted | provenance | | +| pupeteer.js:5:9:5:15 | tainted | pupeteer.js:13:37:13:43 | tainted | provenance | | +| pupeteer.js:5:19:5:71 | "dir/" ... t.data" | pupeteer.js:5:9:5:15 | tainted | provenance | | | pupeteer.js:5:28:5:53 | parseTo ... t).name | pupeteer.js:5:19:5:71 | "dir/" ... t.data" | provenance | Config | | rimraf.js:8:11:8:18 | { path } | rimraf.js:8:13:8:16 | path | provenance | Config | -| rimraf.js:8:11:8:29 | path | rimraf.js:10:17:10:20 | path | provenance | | -| rimraf.js:8:11:8:29 | path | rimraf.js:11:23:11:26 | path | provenance | | -| rimraf.js:8:11:8:29 | path | rimraf.js:12:19:12:22 | path | provenance | | -| rimraf.js:8:11:8:29 | path | rimraf.js:13:25:13:28 | path | provenance | | -| rimraf.js:8:11:8:29 | path | rimraf.js:14:24:14:27 | path | provenance | | -| rimraf.js:8:11:8:29 | path | rimraf.js:15:23:15:26 | path | provenance | | -| rimraf.js:8:11:8:29 | path | rimraf.js:16:25:16:28 | path | provenance | | -| rimraf.js:8:11:8:29 | path | rimraf.js:17:19:17:22 | path | provenance | | -| rimraf.js:8:11:8:29 | path | rimraf.js:18:24:18:27 | path | provenance | | -| rimraf.js:8:11:8:29 | path | rimraf.js:19:23:19:26 | path | provenance | | -| rimraf.js:8:11:8:29 | path | rimraf.js:20:26:20:29 | path | provenance | | -| rimraf.js:8:11:8:29 | path | rimraf.js:21:20:21:23 | path | provenance | | -| rimraf.js:8:11:8:29 | path | rimraf.js:22:25:22:28 | path | provenance | | -| rimraf.js:8:11:8:29 | path | rimraf.js:23:24:23:27 | path | provenance | | -| rimraf.js:8:11:8:29 | path | rimraf.js:24:23:24:26 | path | provenance | | -| rimraf.js:8:11:8:29 | path | rimraf.js:25:28:25:31 | path | provenance | | -| rimraf.js:8:11:8:29 | path | rimraf.js:26:27:26:30 | path | provenance | | -| rimraf.js:8:11:8:29 | path | rimraf.js:27:22:27:25 | path | provenance | | -| rimraf.js:8:11:8:29 | path | rimraf.js:28:18:28:21 | path | provenance | | -| rimraf.js:8:11:8:29 | path | rimraf.js:29:23:29:26 | path | provenance | | -| rimraf.js:8:13:8:16 | path | rimraf.js:8:11:8:29 | path | provenance | | +| rimraf.js:8:13:8:16 | path | rimraf.js:8:13:8:16 | path | provenance | | +| rimraf.js:8:13:8:16 | path | rimraf.js:10:17:10:20 | path | provenance | | +| rimraf.js:8:13:8:16 | path | rimraf.js:11:23:11:26 | path | provenance | | +| rimraf.js:8:13:8:16 | path | rimraf.js:12:19:12:22 | path | provenance | | +| rimraf.js:8:13:8:16 | path | rimraf.js:13:25:13:28 | path | provenance | | +| rimraf.js:8:13:8:16 | path | rimraf.js:14:24:14:27 | path | provenance | | +| rimraf.js:8:13:8:16 | path | rimraf.js:15:23:15:26 | path | provenance | | +| rimraf.js:8:13:8:16 | path | rimraf.js:16:25:16:28 | path | provenance | | +| rimraf.js:8:13:8:16 | path | rimraf.js:17:19:17:22 | path | provenance | | +| rimraf.js:8:13:8:16 | path | rimraf.js:18:24:18:27 | path | provenance | | +| rimraf.js:8:13:8:16 | path | rimraf.js:19:23:19:26 | path | provenance | | +| rimraf.js:8:13:8:16 | path | rimraf.js:20:26:20:29 | path | provenance | | +| rimraf.js:8:13:8:16 | path | rimraf.js:21:20:21:23 | path | provenance | | +| rimraf.js:8:13:8:16 | path | rimraf.js:22:25:22:28 | path | provenance | | +| rimraf.js:8:13:8:16 | path | rimraf.js:23:24:23:27 | path | provenance | | +| rimraf.js:8:13:8:16 | path | rimraf.js:24:23:24:26 | path | provenance | | +| rimraf.js:8:13:8:16 | path | rimraf.js:25:28:25:31 | path | provenance | | +| rimraf.js:8:13:8:16 | path | rimraf.js:26:27:26:30 | path | provenance | | +| rimraf.js:8:13:8:16 | path | rimraf.js:27:22:27:25 | path | provenance | | +| rimraf.js:8:13:8:16 | path | rimraf.js:28:18:28:21 | path | provenance | | +| rimraf.js:8:13:8:16 | path | rimraf.js:29:23:29:26 | path | provenance | | | rimraf.js:8:22:8:29 | req.body | rimraf.js:8:11:8:18 | { path } | provenance | | | sharedlib-repro.js:13:22:13:43 | req.par ... spaceId | sharedlib-repro.js:21:27:21:34 | filepath | provenance | | | sharedlib-repro.js:21:27:21:34 | filepath | sharedlib-repro.js:22:18:22:25 | filepath | provenance | | -| tainted-access-paths.js:6:7:6:48 | path | tainted-access-paths.js:8:19:8:22 | path | provenance | | -| tainted-access-paths.js:6:7:6:48 | path | tainted-access-paths.js:10:33:10:36 | path | provenance | | +| tainted-access-paths.js:6:7:6:10 | path | tainted-access-paths.js:8:19:8:22 | path | provenance | | +| tainted-access-paths.js:6:7:6:10 | path | tainted-access-paths.js:10:33:10:36 | path | provenance | | | tainted-access-paths.js:6:14:6:37 | url.par ... , true) | tainted-access-paths.js:6:14:6:43 | url.par ... ).query | provenance | Config | | tainted-access-paths.js:6:14:6:43 | url.par ... ).query | tainted-access-paths.js:6:14:6:48 | url.par ... ry.path | provenance | Config | -| tainted-access-paths.js:6:14:6:48 | url.par ... ry.path | tainted-access-paths.js:6:7:6:48 | path | provenance | | +| tainted-access-paths.js:6:14:6:48 | url.par ... ry.path | tainted-access-paths.js:6:7:6:10 | path | provenance | | | tainted-access-paths.js:6:24:6:30 | req.url | tainted-access-paths.js:6:14:6:37 | url.par ... , true) | provenance | Config | -| tainted-access-paths.js:10:7:10:36 | obj | tainted-access-paths.js:12:19:12:21 | obj | provenance | | -| tainted-access-paths.js:10:7:10:36 | obj | tainted-access-paths.js:26:19:26:21 | obj | provenance | | -| tainted-access-paths.js:10:7:10:36 | obj | tainted-access-paths.js:29:21:29:23 | obj | provenance | | -| tainted-access-paths.js:10:7:10:36 | obj | tainted-access-paths.js:30:23:30:25 | obj | provenance | | -| tainted-access-paths.js:10:7:10:36 | obj | tainted-access-paths.js:31:23:31:25 | obj | provenance | | -| tainted-access-paths.js:10:33:10:36 | path | tainted-access-paths.js:10:7:10:36 | obj | provenance | | +| tainted-access-paths.js:10:7:10:9 | obj | tainted-access-paths.js:12:19:12:21 | obj | provenance | | +| tainted-access-paths.js:10:7:10:9 | obj | tainted-access-paths.js:26:19:26:21 | obj | provenance | | +| tainted-access-paths.js:10:7:10:9 | obj | tainted-access-paths.js:29:21:29:23 | obj | provenance | | +| tainted-access-paths.js:10:7:10:9 | obj | tainted-access-paths.js:30:23:30:25 | obj | provenance | | +| tainted-access-paths.js:10:7:10:9 | obj | tainted-access-paths.js:31:23:31:25 | obj | provenance | | +| tainted-access-paths.js:10:33:10:36 | path | tainted-access-paths.js:10:7:10:9 | obj | provenance | | | tainted-access-paths.js:12:19:12:21 | obj | tainted-access-paths.js:12:19:12:25 | obj.sub | provenance | Config | | tainted-access-paths.js:26:19:26:21 | obj | tainted-access-paths.js:26:19:26:26 | obj.sub3 | provenance | Config | | tainted-access-paths.js:29:21:29:23 | obj | tainted-access-paths.js:29:21:29:28 | obj.sub4 | provenance | Config | | tainted-access-paths.js:30:23:30:25 | obj | tainted-access-paths.js:30:23:30:30 | obj.sub4 | provenance | Config | | tainted-access-paths.js:31:23:31:25 | obj | tainted-access-paths.js:31:23:31:30 | obj.sub4 | provenance | Config | -| tainted-access-paths.js:39:7:39:48 | path | tainted-access-paths.js:40:23:40:26 | path | provenance | | +| tainted-access-paths.js:39:7:39:10 | path | tainted-access-paths.js:40:23:40:26 | path | provenance | | | tainted-access-paths.js:39:14:39:37 | url.par ... , true) | tainted-access-paths.js:39:14:39:43 | url.par ... ).query | provenance | Config | | tainted-access-paths.js:39:14:39:43 | url.par ... ).query | tainted-access-paths.js:39:14:39:48 | url.par ... ry.path | provenance | Config | -| tainted-access-paths.js:39:14:39:48 | url.par ... ry.path | tainted-access-paths.js:39:7:39:48 | path | provenance | | +| tainted-access-paths.js:39:14:39:48 | url.par ... ry.path | tainted-access-paths.js:39:7:39:10 | path | provenance | | | tainted-access-paths.js:39:24:39:30 | req.url | tainted-access-paths.js:39:14:39:37 | url.par ... , true) | provenance | Config | -| tainted-access-paths.js:48:7:48:48 | path | tainted-access-paths.js:49:10:49:13 | path | provenance | | +| tainted-access-paths.js:48:7:48:10 | path | tainted-access-paths.js:49:10:49:13 | path | provenance | | | tainted-access-paths.js:48:14:48:37 | url.par ... , true) | tainted-access-paths.js:48:14:48:43 | url.par ... ).query | provenance | Config | | tainted-access-paths.js:48:14:48:43 | url.par ... ).query | tainted-access-paths.js:48:14:48:48 | url.par ... ry.path | provenance | Config | -| tainted-access-paths.js:48:14:48:48 | url.par ... ry.path | tainted-access-paths.js:48:7:48:48 | path | provenance | | +| tainted-access-paths.js:48:14:48:48 | url.par ... ry.path | tainted-access-paths.js:48:7:48:10 | path | provenance | | | tainted-access-paths.js:48:24:48:30 | req.url | tainted-access-paths.js:48:14:48:37 | url.par ... , true) | provenance | Config | -| tainted-promise-steps.js:6:7:6:48 | path | tainted-promise-steps.js:7:26:7:29 | path | provenance | | +| tainted-promise-steps.js:6:7:6:10 | path | tainted-promise-steps.js:7:26:7:29 | path | provenance | | | tainted-promise-steps.js:6:14:6:37 | url.par ... , true) | tainted-promise-steps.js:6:14:6:43 | url.par ... ).query | provenance | Config | | tainted-promise-steps.js:6:14:6:43 | url.par ... ).query | tainted-promise-steps.js:6:14:6:48 | url.par ... ry.path | provenance | Config | -| tainted-promise-steps.js:6:14:6:48 | url.par ... ry.path | tainted-promise-steps.js:6:7:6:48 | path | provenance | | +| tainted-promise-steps.js:6:14:6:48 | url.par ... ry.path | tainted-promise-steps.js:6:7:6:10 | path | provenance | | | tainted-promise-steps.js:6:24:6:30 | req.url | tainted-promise-steps.js:6:14:6:37 | url.par ... , true) | provenance | Config | | tainted-promise-steps.js:7:10:7:30 | Promise ... e(path) [PromiseValue] | tainted-promise-steps.js:10:23:10:33 | pathPromise [PromiseValue] | provenance | | | tainted-promise-steps.js:7:26:7:29 | path | tainted-promise-steps.js:7:10:7:30 | Promise ... e(path) [PromiseValue] | provenance | | @@ -730,23 +730,23 @@ edges | tainted-sendFile.js:22:34:22:45 | req.params.x | tainted-sendFile.js:22:16:22:46 | path.jo ... rams.x) | provenance | Config | | tainted-sendFile.js:28:37:28:48 | req.params.x | tainted-sendFile.js:28:16:28:48 | homeDir ... arams.x | provenance | Config | | tainted-sendFile.js:30:34:30:45 | req.params.x | tainted-sendFile.js:30:16:30:46 | path.jo ... rams.x) | provenance | Config | -| tainted-string-steps.js:6:7:6:48 | path | tainted-string-steps.js:8:18:8:21 | path | provenance | | -| tainted-string-steps.js:6:7:6:48 | path | tainted-string-steps.js:9:18:9:21 | path | provenance | | -| tainted-string-steps.js:6:7:6:48 | path | tainted-string-steps.js:10:18:10:21 | path | provenance | | -| tainted-string-steps.js:6:7:6:48 | path | tainted-string-steps.js:11:18:11:21 | path | provenance | | -| tainted-string-steps.js:6:7:6:48 | path | tainted-string-steps.js:13:18:13:21 | path | provenance | | -| tainted-string-steps.js:6:7:6:48 | path | tainted-string-steps.js:14:33:14:36 | path | provenance | | -| tainted-string-steps.js:6:7:6:48 | path | tainted-string-steps.js:15:42:15:45 | path | provenance | | -| tainted-string-steps.js:6:7:6:48 | path | tainted-string-steps.js:17:18:17:21 | path | provenance | | -| tainted-string-steps.js:6:7:6:48 | path | tainted-string-steps.js:18:18:18:21 | path | provenance | | -| tainted-string-steps.js:6:7:6:48 | path | tainted-string-steps.js:22:18:22:21 | path | provenance | | -| tainted-string-steps.js:6:7:6:48 | path | tainted-string-steps.js:23:18:23:21 | path | provenance | | -| tainted-string-steps.js:6:7:6:48 | path | tainted-string-steps.js:24:18:24:21 | path | provenance | | -| tainted-string-steps.js:6:7:6:48 | path | tainted-string-steps.js:26:18:26:21 | path | provenance | | -| tainted-string-steps.js:6:7:6:48 | path | tainted-string-steps.js:27:18:27:21 | path | provenance | | +| tainted-string-steps.js:6:7:6:10 | path | tainted-string-steps.js:8:18:8:21 | path | provenance | | +| tainted-string-steps.js:6:7:6:10 | path | tainted-string-steps.js:9:18:9:21 | path | provenance | | +| tainted-string-steps.js:6:7:6:10 | path | tainted-string-steps.js:10:18:10:21 | path | provenance | | +| tainted-string-steps.js:6:7:6:10 | path | tainted-string-steps.js:11:18:11:21 | path | provenance | | +| tainted-string-steps.js:6:7:6:10 | path | tainted-string-steps.js:13:18:13:21 | path | provenance | | +| tainted-string-steps.js:6:7:6:10 | path | tainted-string-steps.js:14:33:14:36 | path | provenance | | +| tainted-string-steps.js:6:7:6:10 | path | tainted-string-steps.js:15:42:15:45 | path | provenance | | +| tainted-string-steps.js:6:7:6:10 | path | tainted-string-steps.js:17:18:17:21 | path | provenance | | +| tainted-string-steps.js:6:7:6:10 | path | tainted-string-steps.js:18:18:18:21 | path | provenance | | +| tainted-string-steps.js:6:7:6:10 | path | tainted-string-steps.js:22:18:22:21 | path | provenance | | +| tainted-string-steps.js:6:7:6:10 | path | tainted-string-steps.js:23:18:23:21 | path | provenance | | +| tainted-string-steps.js:6:7:6:10 | path | tainted-string-steps.js:24:18:24:21 | path | provenance | | +| tainted-string-steps.js:6:7:6:10 | path | tainted-string-steps.js:26:18:26:21 | path | provenance | | +| tainted-string-steps.js:6:7:6:10 | path | tainted-string-steps.js:27:18:27:21 | path | provenance | | | tainted-string-steps.js:6:14:6:37 | url.par ... , true) | tainted-string-steps.js:6:14:6:43 | url.par ... ).query | provenance | Config | | tainted-string-steps.js:6:14:6:43 | url.par ... ).query | tainted-string-steps.js:6:14:6:48 | url.par ... ry.path | provenance | Config | -| tainted-string-steps.js:6:14:6:48 | url.par ... ry.path | tainted-string-steps.js:6:7:6:48 | path | provenance | | +| tainted-string-steps.js:6:14:6:48 | url.par ... ry.path | tainted-string-steps.js:6:7:6:10 | path | provenance | | | tainted-string-steps.js:6:24:6:30 | req.url | tainted-string-steps.js:6:14:6:37 | url.par ... , true) | provenance | Config | | tainted-string-steps.js:8:18:8:21 | path | tainted-string-steps.js:8:18:8:34 | path.substring(4) | provenance | Config | | tainted-string-steps.js:9:18:9:21 | path | tainted-string-steps.js:9:18:9:37 | path.substring(0, i) | provenance | Config | @@ -766,34 +766,34 @@ edges | tainted-string-steps.js:26:18:26:21 | path | tainted-string-steps.js:26:18:26:36 | path.split(unknown) | provenance | Config | | tainted-string-steps.js:26:18:26:36 | path.split(unknown) | tainted-string-steps.js:26:18:26:45 | path.sp ... hatever | provenance | Config | | tainted-string-steps.js:27:18:27:21 | path | tainted-string-steps.js:27:18:27:36 | path.split(unknown) | provenance | Config | -| torrents.js:5:6:5:38 | name | torrents.js:6:24:6:27 | name | provenance | | -| torrents.js:5:13:5:38 | parseTo ... t).name | torrents.js:5:6:5:38 | name | provenance | | -| torrents.js:6:6:6:45 | loc | torrents.js:7:25:7:27 | loc | provenance | | -| torrents.js:6:12:6:45 | dir + " ... t.data" | torrents.js:6:6:6:45 | loc | provenance | | +| torrents.js:5:6:5:9 | name | torrents.js:6:24:6:27 | name | provenance | | +| torrents.js:5:13:5:38 | parseTo ... t).name | torrents.js:5:6:5:9 | name | provenance | | +| torrents.js:6:6:6:8 | loc | torrents.js:7:25:7:27 | loc | provenance | | +| torrents.js:6:12:6:45 | dir + " ... t.data" | torrents.js:6:6:6:8 | loc | provenance | | | torrents.js:6:24:6:27 | name | torrents.js:6:12:6:45 | dir + " ... t.data" | provenance | Config | -| typescript.ts:9:7:9:48 | path | typescript.ts:11:29:11:32 | path | provenance | | -| typescript.ts:9:7:9:48 | path | typescript.ts:19:15:19:18 | path | provenance | | -| typescript.ts:9:7:9:48 | path | typescript.ts:22:15:22:18 | path | provenance | | -| typescript.ts:9:7:9:48 | path | typescript.ts:29:15:29:18 | path | provenance | | +| typescript.ts:9:7:9:10 | path | typescript.ts:11:29:11:32 | path | provenance | | +| typescript.ts:9:7:9:10 | path | typescript.ts:19:15:19:18 | path | provenance | | +| typescript.ts:9:7:9:10 | path | typescript.ts:22:15:22:18 | path | provenance | | +| typescript.ts:9:7:9:10 | path | typescript.ts:29:15:29:18 | path | provenance | | | typescript.ts:9:14:9:37 | url.par ... , true) | typescript.ts:9:14:9:43 | url.par ... ).query | provenance | Config | | typescript.ts:9:14:9:43 | url.par ... ).query | typescript.ts:9:14:9:48 | url.par ... ry.path | provenance | Config | -| typescript.ts:9:14:9:48 | url.par ... ry.path | typescript.ts:9:7:9:48 | path | provenance | | +| typescript.ts:9:14:9:48 | url.par ... ry.path | typescript.ts:9:7:9:10 | path | provenance | | | typescript.ts:9:24:9:30 | req.url | typescript.ts:9:14:9:37 | url.par ... , true) | provenance | Config | -| typescript.ts:19:7:19:18 | path3 | typescript.ts:20:39:20:43 | path3 | provenance | | -| typescript.ts:19:15:19:18 | path | typescript.ts:19:7:19:18 | path3 | provenance | | -| typescript.ts:22:7:22:18 | path4 | typescript.ts:23:39:23:43 | path4 | provenance | | -| typescript.ts:22:15:22:18 | path | typescript.ts:22:7:22:18 | path4 | provenance | | -| typescript.ts:29:7:29:18 | path6 | typescript.ts:31:29:31:33 | path6 | provenance | | -| typescript.ts:29:15:29:18 | path | typescript.ts:29:7:29:18 | path6 | provenance | | +| typescript.ts:19:7:19:11 | path3 | typescript.ts:20:39:20:43 | path3 | provenance | | +| typescript.ts:19:15:19:18 | path | typescript.ts:19:7:19:11 | path3 | provenance | | +| typescript.ts:22:7:22:11 | path4 | typescript.ts:23:39:23:43 | path4 | provenance | | +| typescript.ts:22:15:22:18 | path | typescript.ts:22:7:22:11 | path4 | provenance | | +| typescript.ts:29:7:29:11 | path6 | typescript.ts:31:29:31:33 | path6 | provenance | | +| typescript.ts:29:15:29:18 | path | typescript.ts:29:7:29:11 | path6 | provenance | | nodes -| TaintedPath-es6.js:7:7:7:44 | path | semmle.label | path | +| TaintedPath-es6.js:7:7:7:10 | path | semmle.label | path | | TaintedPath-es6.js:7:14:7:33 | parse(req.url, true) | semmle.label | parse(req.url, true) | | TaintedPath-es6.js:7:14:7:39 | parse(r ... ).query | semmle.label | parse(r ... ).query | | TaintedPath-es6.js:7:14:7:44 | parse(r ... ry.path | semmle.label | parse(r ... ry.path | | TaintedPath-es6.js:7:20:7:26 | req.url | semmle.label | req.url | | TaintedPath-es6.js:9:26:9:45 | join("public", path) | semmle.label | join("public", path) | | TaintedPath-es6.js:9:41:9:44 | path | semmle.label | path | -| TaintedPath.js:9:7:9:48 | path | semmle.label | path | +| TaintedPath.js:9:7:9:10 | path | semmle.label | path | | TaintedPath.js:9:14:9:37 | url.par ... , true) | semmle.label | url.par ... , true) | | TaintedPath.js:9:14:9:43 | url.par ... ).query | semmle.label | url.par ... ).query | | TaintedPath.js:9:14:9:48 | url.par ... ry.path | semmle.label | url.par ... ry.path | @@ -805,7 +805,7 @@ nodes | TaintedPath.js:19:33:19:36 | path | semmle.label | path | | TaintedPath.js:22:33:22:36 | path | semmle.label | path | | TaintedPath.js:31:31:31:34 | path | semmle.label | path | -| TaintedPath.js:36:3:36:44 | path | semmle.label | path | +| TaintedPath.js:36:3:36:6 | path | semmle.label | path | | TaintedPath.js:36:10:36:33 | url.par ... , true) | semmle.label | url.par ... , true) | | TaintedPath.js:36:10:36:39 | url.par ... ).query | semmle.label | url.par ... ).query | | TaintedPath.js:36:10:36:44 | url.par ... ry.path | semmle.label | url.par ... ry.path | @@ -838,7 +838,7 @@ nodes | TaintedPath.js:56:31:56:73 | require ... ).query | semmle.label | require ... ).query | | TaintedPath.js:56:60:56:66 | req.url | semmle.label | req.url | | TaintedPath.js:64:48:64:60 | req.params[0] | semmle.label | req.params[0] | -| TaintedPath.js:73:6:73:47 | path | semmle.label | path | +| TaintedPath.js:73:6:73:9 | path | semmle.label | path | | TaintedPath.js:73:13:73:36 | url.par ... , true) | semmle.label | url.par ... , true) | | TaintedPath.js:73:13:73:42 | url.par ... ).query | semmle.label | url.par ... ).query | | TaintedPath.js:73:13:73:47 | url.par ... ry.path | semmle.label | url.par ... ry.path | @@ -848,19 +848,19 @@ nodes | TaintedPath.js:76:14:76:17 | path | semmle.label | path | | TaintedPath.js:77:32:77:39 | realpath | semmle.label | realpath | | TaintedPath.js:78:45:78:52 | realpath | semmle.label | realpath | -| TaintedPath.js:109:6:109:47 | path | semmle.label | path | +| TaintedPath.js:109:6:109:9 | path | semmle.label | path | | TaintedPath.js:109:13:109:36 | url.par ... , true) | semmle.label | url.par ... , true) | | TaintedPath.js:109:13:109:42 | url.par ... ).query | semmle.label | url.par ... ).query | | TaintedPath.js:109:13:109:47 | url.par ... ry.path | semmle.label | url.par ... ry.path | | TaintedPath.js:109:23:109:29 | req.url | semmle.label | req.url | | TaintedPath.js:111:23:111:26 | path | semmle.label | path | -| TaintedPath.js:115:7:115:48 | path | semmle.label | path | +| TaintedPath.js:115:7:115:10 | path | semmle.label | path | | TaintedPath.js:115:14:115:37 | url.par ... , true) | semmle.label | url.par ... , true) | | TaintedPath.js:115:14:115:43 | url.par ... ).query | semmle.label | url.par ... ).query | | TaintedPath.js:115:14:115:48 | url.par ... ry.path | semmle.label | url.par ... ry.path | | TaintedPath.js:115:24:115:30 | req.url | semmle.label | req.url | | TaintedPath.js:117:19:117:22 | path | semmle.label | path | -| TaintedPath.js:119:7:119:29 | split | semmle.label | split | +| TaintedPath.js:119:7:119:11 | split | semmle.label | split | | TaintedPath.js:119:15:119:18 | path | semmle.label | path | | TaintedPath.js:119:15:119:29 | path.split("/") | semmle.label | path.split("/") | | TaintedPath.js:121:19:121:23 | split | semmle.label | split | @@ -870,19 +870,19 @@ nodes | TaintedPath.js:126:19:126:35 | prefix + split[x] | semmle.label | prefix + split[x] | | TaintedPath.js:126:28:126:32 | split | semmle.label | split | | TaintedPath.js:126:28:126:35 | split[x] | semmle.label | split[x] | -| TaintedPath.js:128:7:128:38 | concatted | semmle.label | concatted | +| TaintedPath.js:128:7:128:15 | concatted | semmle.label | concatted | | TaintedPath.js:128:19:128:38 | prefix.concat(split) | semmle.label | prefix.concat(split) | | TaintedPath.js:128:33:128:37 | split | semmle.label | split | | TaintedPath.js:129:19:129:27 | concatted | semmle.label | concatted | | TaintedPath.js:129:19:129:37 | concatted.join("/") | semmle.label | concatted.join("/") | -| TaintedPath.js:131:7:131:39 | concatted2 | semmle.label | concatted2 | +| TaintedPath.js:131:7:131:16 | concatted2 | semmle.label | concatted2 | | TaintedPath.js:131:20:131:24 | split | semmle.label | split | | TaintedPath.js:131:20:131:39 | split.concat(prefix) | semmle.label | split.concat(prefix) | | TaintedPath.js:132:19:132:28 | concatted2 | semmle.label | concatted2 | | TaintedPath.js:132:19:132:38 | concatted2.join("/") | semmle.label | concatted2.join("/") | | TaintedPath.js:134:19:134:23 | split | semmle.label | split | | TaintedPath.js:134:19:134:29 | split.pop() | semmle.label | split.pop() | -| TaintedPath.js:139:7:139:48 | path | semmle.label | path | +| TaintedPath.js:139:7:139:10 | path | semmle.label | path | | TaintedPath.js:139:14:139:37 | url.par ... , true) | semmle.label | url.par ... , true) | | TaintedPath.js:139:14:139:43 | url.par ... ).query | semmle.label | url.par ... ).query | | TaintedPath.js:139:14:139:48 | url.par ... ry.path | semmle.label | url.par ... ry.path | @@ -913,7 +913,7 @@ nodes | TaintedPath.js:179:29:179:51 | parseqs ... eq.url) | semmle.label | parseqs ... eq.url) | | TaintedPath.js:179:29:179:55 | parseqs ... rl).foo | semmle.label | parseqs ... rl).foo | | TaintedPath.js:179:44:179:50 | req.url | semmle.label | req.url | -| TaintedPath.js:184:7:184:48 | path | semmle.label | path | +| TaintedPath.js:184:7:184:10 | path | semmle.label | path | | TaintedPath.js:184:14:184:37 | url.par ... , true) | semmle.label | url.par ... , true) | | TaintedPath.js:184:14:184:43 | url.par ... ).query | semmle.label | url.par ... ).query | | TaintedPath.js:184:14:184:48 | url.par ... ry.path | semmle.label | url.par ... ry.path | @@ -921,14 +921,14 @@ nodes | TaintedPath.js:185:31:185:34 | path | semmle.label | path | | TaintedPath.js:186:45:186:48 | path | semmle.label | path | | TaintedPath.js:187:35:187:38 | path | semmle.label | path | -| TaintedPath.js:191:7:191:48 | path | semmle.label | path | +| TaintedPath.js:191:7:191:10 | path | semmle.label | path | | TaintedPath.js:191:14:191:37 | url.par ... , true) | semmle.label | url.par ... , true) | | TaintedPath.js:191:14:191:43 | url.par ... ).query | semmle.label | url.par ... ).query | | TaintedPath.js:191:14:191:48 | url.par ... ry.path | semmle.label | url.par ... ry.path | | TaintedPath.js:191:24:191:30 | req.url | semmle.label | req.url | | TaintedPath.js:195:29:195:32 | path | semmle.label | path | | TaintedPath.js:195:29:195:85 | path.re ... '), '') | semmle.label | path.re ... '), '') | -| TaintedPath.js:200:7:200:48 | path | semmle.label | path | +| TaintedPath.js:200:7:200:10 | path | semmle.label | path | | TaintedPath.js:200:14:200:37 | url.par ... , true) | semmle.label | url.par ... , true) | | TaintedPath.js:200:14:200:43 | url.par ... ).query | semmle.label | url.par ... ).query | | TaintedPath.js:200:14:200:48 | url.par ... ry.path | semmle.label | url.par ... ry.path | @@ -937,27 +937,27 @@ nodes | TaintedPath.js:202:29:202:68 | path.re ... '), '') | semmle.label | path.re ... '), '') | | TaintedPath.js:205:31:205:34 | path | semmle.label | path | | TaintedPath.js:205:31:205:69 | path.re ... '), '') | semmle.label | path.re ... '), '') | -| TaintedPath.js:212:7:212:48 | path | semmle.label | path | +| TaintedPath.js:212:7:212:10 | path | semmle.label | path | | TaintedPath.js:212:14:212:37 | url.par ... , true) | semmle.label | url.par ... , true) | | TaintedPath.js:212:14:212:43 | url.par ... ).query | semmle.label | url.par ... ).query | | TaintedPath.js:212:14:212:48 | url.par ... ry.path | semmle.label | url.par ... ry.path | | TaintedPath.js:212:24:212:30 | req.url | semmle.label | req.url | -| TaintedPath.js:213:9:213:37 | improperEscape | semmle.label | improperEscape | +| TaintedPath.js:213:9:213:22 | improperEscape | semmle.label | improperEscape | | TaintedPath.js:213:26:213:37 | escape(path) | semmle.label | escape(path) | | TaintedPath.js:213:33:213:36 | path | semmle.label | path | | TaintedPath.js:214:29:214:42 | improperEscape | semmle.label | improperEscape | -| TaintedPath.js:215:9:215:40 | improperEscape2 | semmle.label | improperEscape2 | +| TaintedPath.js:215:9:215:23 | improperEscape2 | semmle.label | improperEscape2 | | TaintedPath.js:215:27:215:40 | unescape(path) | semmle.label | unescape(path) | | TaintedPath.js:215:36:215:39 | path | semmle.label | path | | TaintedPath.js:216:29:216:43 | improperEscape2 | semmle.label | improperEscape2 | -| examples/TaintedPath.js:8:7:8:52 | filePath | semmle.label | filePath | +| examples/TaintedPath.js:8:7:8:14 | filePath | semmle.label | filePath | | examples/TaintedPath.js:8:18:8:41 | url.par ... , true) | semmle.label | url.par ... , true) | | examples/TaintedPath.js:8:18:8:47 | url.par ... ).query | semmle.label | url.par ... ).query | | examples/TaintedPath.js:8:18:8:52 | url.par ... ry.path | semmle.label | url.par ... ry.path | | examples/TaintedPath.js:8:28:8:34 | req.url | semmle.label | req.url | | examples/TaintedPath.js:10:29:10:43 | ROOT + filePath | semmle.label | ROOT + filePath | | examples/TaintedPath.js:10:36:10:43 | filePath | semmle.label | filePath | -| execa.js:6:9:6:64 | filePath | semmle.label | filePath | +| execa.js:6:9:6:16 | filePath | semmle.label | filePath | | execa.js:6:20:6:43 | url.par ... , true) | semmle.label | url.par ... , true) | | execa.js:6:20:6:49 | url.par ... ).query | semmle.label | url.par ... ).query | | execa.js:6:20:6:61 | url.par ... ePath"] | semmle.label | url.par ... ePath"] | @@ -974,14 +974,14 @@ nodes | handlebars.js:15:25:15:32 | filePath | semmle.label | filePath | | handlebars.js:29:46:29:60 | req.params.path | semmle.label | req.params.path | | handlebars.js:43:15:43:29 | req.params.path | semmle.label | req.params.path | -| hapi.js:14:19:14:51 | filepath | semmle.label | filepath | +| hapi.js:14:19:14:26 | filepath | semmle.label | filepath | | hapi.js:14:30:14:51 | request ... ilepath | semmle.label | request ... ilepath | | hapi.js:15:44:15:51 | filepath | semmle.label | filepath | -| make-dir.js:7:11:7:31 | file | semmle.label | file | +| make-dir.js:7:11:7:14 | file | semmle.label | file | | make-dir.js:7:18:7:31 | req.query.file | semmle.label | req.query.file | | make-dir.js:9:25:9:28 | file | semmle.label | file | | make-dir.js:10:23:10:26 | file | semmle.label | file | -| mkdirp.js:9:11:9:76 | dirPath | semmle.label | dirPath | +| mkdirp.js:9:11:9:17 | dirPath | semmle.label | dirPath | | mkdirp.js:9:21:9:76 | path.jo ... ltDir') | semmle.label | path.jo ... ltDir') | | mkdirp.js:9:42:9:59 | req.query.filename | semmle.label | req.query.filename | | mkdirp.js:9:42:9:75 | req.que ... ultDir' | semmle.label | req.que ... ultDir' | @@ -997,7 +997,7 @@ nodes | mkdirp.js:20:29:20:35 | dirPath | semmle.label | dirPath | | mkdirp.js:21:23:21:29 | dirPath | semmle.label | dirPath | | more-fs-extra.js:8:11:8:22 | { filename } | semmle.label | { filename } | -| more-fs-extra.js:8:11:8:33 | filename | semmle.label | filename | +| more-fs-extra.js:8:13:8:20 | filename | semmle.label | filename | | more-fs-extra.js:8:13:8:20 | filename | semmle.label | filename | | more-fs-extra.js:8:26:8:33 | req.body | semmle.label | req.body | | more-fs-extra.js:10:15:10:22 | filename | semmle.label | filename | @@ -1023,7 +1023,7 @@ nodes | more-fs-extra.js:30:16:30:23 | filename | semmle.label | filename | | more-fs-extra.js:31:20:31:27 | filename | semmle.label | filename | | more-fs-extra.js:32:23:32:30 | filename | semmle.label | filename | -| normalizedPaths.js:11:7:11:27 | path | semmle.label | path | +| normalizedPaths.js:11:7:11:10 | path | semmle.label | path | | normalizedPaths.js:11:14:11:27 | req.query.path | semmle.label | req.query.path | | normalizedPaths.js:13:19:13:22 | path | semmle.label | path | | normalizedPaths.js:14:19:14:29 | './' + path | semmle.label | './' + path | @@ -1034,7 +1034,7 @@ nodes | normalizedPaths.js:16:35:16:38 | path | semmle.label | path | | normalizedPaths.js:17:19:17:57 | pathMod ... , path) | semmle.label | pathMod ... , path) | | normalizedPaths.js:17:53:17:56 | path | semmle.label | path | -| normalizedPaths.js:21:7:21:49 | path | semmle.label | path | +| normalizedPaths.js:21:7:21:10 | path | semmle.label | path | | normalizedPaths.js:21:14:21:49 | pathMod ... y.path) | semmle.label | pathMod ... y.path) | | normalizedPaths.js:21:35:21:48 | req.query.path | semmle.label | req.query.path | | normalizedPaths.js:23:19:23:22 | path | semmle.label | path | @@ -1046,57 +1046,57 @@ nodes | normalizedPaths.js:26:35:26:38 | path | semmle.label | path | | normalizedPaths.js:27:19:27:57 | pathMod ... , path) | semmle.label | pathMod ... , path) | | normalizedPaths.js:27:53:27:56 | path | semmle.label | path | -| normalizedPaths.js:31:7:31:49 | path | semmle.label | path | +| normalizedPaths.js:31:7:31:10 | path | semmle.label | path | | normalizedPaths.js:31:14:31:49 | pathMod ... y.path) | semmle.label | pathMod ... y.path) | | normalizedPaths.js:31:35:31:48 | req.query.path | semmle.label | req.query.path | | normalizedPaths.js:36:19:36:22 | path | semmle.label | path | | normalizedPaths.js:41:21:41:24 | path | semmle.label | path | -| normalizedPaths.js:54:7:54:49 | path | semmle.label | path | +| normalizedPaths.js:54:7:54:10 | path | semmle.label | path | | normalizedPaths.js:54:14:54:49 | pathMod ... y.path) | semmle.label | pathMod ... y.path) | | normalizedPaths.js:54:35:54:48 | req.query.path | semmle.label | req.query.path | | normalizedPaths.js:59:19:59:22 | path | semmle.label | path | | normalizedPaths.js:63:19:63:22 | path | semmle.label | path | | normalizedPaths.js:63:19:63:38 | path + "/index.html" | semmle.label | path + "/index.html" | | normalizedPaths.js:68:21:68:24 | path | semmle.label | path | -| normalizedPaths.js:73:7:73:56 | path | semmle.label | path | +| normalizedPaths.js:73:7:73:10 | path | semmle.label | path | | normalizedPaths.js:73:14:73:56 | pathMod ... y.path) | semmle.label | pathMod ... y.path) | | normalizedPaths.js:73:35:73:55 | './' + ... ry.path | semmle.label | './' + ... ry.path | | normalizedPaths.js:73:42:73:55 | req.query.path | semmle.label | req.query.path | | normalizedPaths.js:78:22:78:25 | path | semmle.label | path | -| normalizedPaths.js:82:7:82:27 | path | semmle.label | path | +| normalizedPaths.js:82:7:82:10 | path | semmle.label | path | | normalizedPaths.js:82:14:82:27 | req.query.path | semmle.label | req.query.path | | normalizedPaths.js:87:29:87:32 | path | semmle.label | path | | normalizedPaths.js:90:31:90:34 | path | semmle.label | path | -| normalizedPaths.js:94:7:94:49 | path | semmle.label | path | +| normalizedPaths.js:94:7:94:10 | path | semmle.label | path | | normalizedPaths.js:94:14:94:49 | pathMod ... y.path) | semmle.label | pathMod ... y.path) | | normalizedPaths.js:94:35:94:48 | req.query.path | semmle.label | req.query.path | | normalizedPaths.js:99:29:99:32 | path | semmle.label | path | -| normalizedPaths.js:117:7:117:44 | path | semmle.label | path | +| normalizedPaths.js:117:7:117:10 | path | semmle.label | path | | normalizedPaths.js:117:14:117:44 | fs.real ... y.path) | semmle.label | fs.real ... y.path) | | normalizedPaths.js:117:30:117:43 | req.query.path | semmle.label | req.query.path | | normalizedPaths.js:119:19:119:22 | path | semmle.label | path | | normalizedPaths.js:120:19:120:53 | pathMod ... .html') | semmle.label | pathMod ... .html') | | normalizedPaths.js:120:35:120:38 | path | semmle.label | path | -| normalizedPaths.js:130:7:130:49 | path | semmle.label | path | +| normalizedPaths.js:130:7:130:10 | path | semmle.label | path | | normalizedPaths.js:130:14:130:49 | pathMod ... y.path) | semmle.label | pathMod ... y.path) | | normalizedPaths.js:130:35:130:48 | req.query.path | semmle.label | req.query.path | | normalizedPaths.js:135:21:135:24 | path | semmle.label | path | -| normalizedPaths.js:139:7:139:62 | path | semmle.label | path | +| normalizedPaths.js:139:7:139:10 | path | semmle.label | path | | normalizedPaths.js:139:14:139:62 | pathMod ... y.path) | semmle.label | pathMod ... y.path) | | normalizedPaths.js:139:48:139:61 | req.query.path | semmle.label | req.query.path | | normalizedPaths.js:144:21:144:24 | path | semmle.label | path | -| normalizedPaths.js:148:7:148:58 | path | semmle.label | path | +| normalizedPaths.js:148:7:148:10 | path | semmle.label | path | | normalizedPaths.js:148:14:148:58 | 'foo/' ... y.path) | semmle.label | 'foo/' ... y.path) | | normalizedPaths.js:148:23:148:58 | pathMod ... y.path) | semmle.label | pathMod ... y.path) | | normalizedPaths.js:148:44:148:57 | req.query.path | semmle.label | req.query.path | | normalizedPaths.js:151:21:151:24 | path | semmle.label | path | | normalizedPaths.js:153:21:153:24 | path | semmle.label | path | -| normalizedPaths.js:160:7:160:49 | path | semmle.label | path | +| normalizedPaths.js:160:7:160:10 | path | semmle.label | path | | normalizedPaths.js:160:14:160:49 | pathMod ... y.path) | semmle.label | pathMod ... y.path) | | normalizedPaths.js:160:35:160:48 | req.query.path | semmle.label | req.query.path | | normalizedPaths.js:165:19:165:22 | path | semmle.label | path | | normalizedPaths.js:170:21:170:24 | path | semmle.label | path | -| normalizedPaths.js:174:7:174:27 | path | semmle.label | path | +| normalizedPaths.js:174:7:174:10 | path | semmle.label | path | | normalizedPaths.js:174:14:174:27 | req.query.path | semmle.label | req.query.path | | normalizedPaths.js:184:19:184:22 | path | semmle.label | path | | normalizedPaths.js:187:21:187:24 | path | semmle.label | path | @@ -1104,80 +1104,80 @@ nodes | normalizedPaths.js:192:21:192:24 | path | semmle.label | path | | normalizedPaths.js:194:21:194:24 | path | semmle.label | path | | normalizedPaths.js:199:21:199:24 | path | semmle.label | path | -| normalizedPaths.js:201:7:201:49 | normalizedPath | semmle.label | normalizedPath | +| normalizedPaths.js:201:7:201:20 | normalizedPath | semmle.label | normalizedPath | | normalizedPaths.js:201:24:201:49 | pathMod ... e(path) | semmle.label | pathMod ... e(path) | | normalizedPaths.js:201:45:201:48 | path | semmle.label | path | | normalizedPaths.js:205:21:205:34 | normalizedPath | semmle.label | normalizedPath | | normalizedPaths.js:208:21:208:34 | normalizedPath | semmle.label | normalizedPath | | normalizedPaths.js:210:21:210:34 | normalizedPath | semmle.label | normalizedPath | -| normalizedPaths.js:214:7:214:49 | path | semmle.label | path | +| normalizedPaths.js:214:7:214:10 | path | semmle.label | path | | normalizedPaths.js:214:14:214:49 | pathMod ... y.path) | semmle.label | pathMod ... y.path) | | normalizedPaths.js:214:35:214:48 | req.query.path | semmle.label | req.query.path | -| normalizedPaths.js:219:3:219:33 | path | semmle.label | path | +| normalizedPaths.js:219:3:219:6 | path | semmle.label | path | | normalizedPaths.js:219:10:219:33 | decodeU ... t(path) | semmle.label | decodeU ... t(path) | | normalizedPaths.js:219:29:219:32 | path | semmle.label | path | | normalizedPaths.js:222:21:222:24 | path | semmle.label | path | -| normalizedPaths.js:226:7:226:70 | path | semmle.label | path | +| normalizedPaths.js:226:7:226:10 | path | semmle.label | path | | normalizedPaths.js:226:14:226:49 | pathMod ... y.path) | semmle.label | pathMod ... y.path) | | normalizedPaths.js:226:14:226:70 | pathMod ... g, ' ') | semmle.label | pathMod ... g, ' ') | | normalizedPaths.js:226:35:226:48 | req.query.path | semmle.label | req.query.path | | normalizedPaths.js:228:21:228:24 | path | semmle.label | path | -| normalizedPaths.js:236:7:236:47 | path | semmle.label | path | +| normalizedPaths.js:236:7:236:10 | path | semmle.label | path | | normalizedPaths.js:236:14:236:47 | pathMod ... y.path) | semmle.label | pathMod ... y.path) | | normalizedPaths.js:236:33:236:46 | req.query.path | semmle.label | req.query.path | | normalizedPaths.js:238:19:238:22 | path | semmle.label | path | | normalizedPaths.js:245:21:245:24 | path | semmle.label | path | | normalizedPaths.js:250:21:250:24 | path | semmle.label | path | -| normalizedPaths.js:254:7:254:47 | path | semmle.label | path | +| normalizedPaths.js:254:7:254:10 | path | semmle.label | path | | normalizedPaths.js:254:14:254:47 | pathMod ... y.path) | semmle.label | pathMod ... y.path) | | normalizedPaths.js:254:33:254:46 | req.query.path | semmle.label | req.query.path | | normalizedPaths.js:256:19:256:22 | path | semmle.label | path | | normalizedPaths.js:262:21:262:24 | path | semmle.label | path | -| normalizedPaths.js:267:7:267:42 | newpath | semmle.label | newpath | +| normalizedPaths.js:267:7:267:13 | newpath | semmle.label | newpath | | normalizedPaths.js:267:17:267:42 | pathMod ... e(path) | semmle.label | pathMod ... e(path) | | normalizedPaths.js:267:38:267:41 | path | semmle.label | path | | normalizedPaths.js:270:21:270:27 | newpath | semmle.label | newpath | -| normalizedPaths.js:275:7:275:42 | newpath | semmle.label | newpath | +| normalizedPaths.js:275:7:275:13 | newpath | semmle.label | newpath | | normalizedPaths.js:275:17:275:42 | pathMod ... e(path) | semmle.label | pathMod ... e(path) | | normalizedPaths.js:275:38:275:41 | path | semmle.label | path | | normalizedPaths.js:278:21:278:27 | newpath | semmle.label | newpath | -| normalizedPaths.js:283:7:283:42 | newpath | semmle.label | newpath | +| normalizedPaths.js:283:7:283:13 | newpath | semmle.label | newpath | | normalizedPaths.js:283:17:283:42 | pathMod ... e(path) | semmle.label | pathMod ... e(path) | | normalizedPaths.js:283:38:283:41 | path | semmle.label | path | | normalizedPaths.js:286:21:286:27 | newpath | semmle.label | newpath | -| normalizedPaths.js:291:7:291:42 | newpath | semmle.label | newpath | +| normalizedPaths.js:291:7:291:13 | newpath | semmle.label | newpath | | normalizedPaths.js:291:17:291:42 | pathMod ... e(path) | semmle.label | pathMod ... e(path) | | normalizedPaths.js:291:38:291:41 | path | semmle.label | path | | normalizedPaths.js:296:21:296:27 | newpath | semmle.label | newpath | -| normalizedPaths.js:303:6:303:26 | path | semmle.label | path | +| normalizedPaths.js:303:6:303:9 | path | semmle.label | path | | normalizedPaths.js:303:13:303:26 | req.query.path | semmle.label | req.query.path | | normalizedPaths.js:304:18:304:21 | path | semmle.label | path | | normalizedPaths.js:309:19:309:22 | path | semmle.label | path | | normalizedPaths.js:313:19:313:22 | path | semmle.label | path | | normalizedPaths.js:316:19:316:22 | path | semmle.label | path | -| normalizedPaths.js:320:6:320:49 | normalizedPath | semmle.label | normalizedPath | +| normalizedPaths.js:320:6:320:19 | normalizedPath | semmle.label | normalizedPath | | normalizedPaths.js:320:23:320:49 | pathMod ... , path) | semmle.label | pathMod ... , path) | | normalizedPaths.js:320:45:320:48 | path | semmle.label | path | | normalizedPaths.js:325:19:325:32 | normalizedPath | semmle.label | normalizedPath | | normalizedPaths.js:332:19:332:32 | normalizedPath | semmle.label | normalizedPath | -| normalizedPaths.js:339:6:339:46 | path | semmle.label | path | +| normalizedPaths.js:339:6:339:9 | path | semmle.label | path | | normalizedPaths.js:339:13:339:46 | pathMod ... y.path) | semmle.label | pathMod ... y.path) | | normalizedPaths.js:339:32:339:45 | req.query.path | semmle.label | req.query.path | | normalizedPaths.js:341:18:341:21 | path | semmle.label | path | | normalizedPaths.js:346:19:346:22 | path | semmle.label | path | -| normalizedPaths.js:354:7:354:27 | path | semmle.label | path | +| normalizedPaths.js:354:7:354:10 | path | semmle.label | path | | normalizedPaths.js:354:14:354:27 | req.query.path | semmle.label | req.query.path | | normalizedPaths.js:356:19:356:22 | path | semmle.label | path | -| normalizedPaths.js:358:7:358:51 | requestPath | semmle.label | requestPath | +| normalizedPaths.js:358:7:358:17 | requestPath | semmle.label | requestPath | | normalizedPaths.js:358:21:358:51 | pathMod ... , path) | semmle.label | pathMod ... , path) | | normalizedPaths.js:358:47:358:50 | path | semmle.label | path | | normalizedPaths.js:363:21:363:31 | requestPath | semmle.label | requestPath | -| normalizedPaths.js:377:7:377:27 | path | semmle.label | path | +| normalizedPaths.js:377:7:377:10 | path | semmle.label | path | | normalizedPaths.js:377:14:377:27 | req.query.path | semmle.label | req.query.path | | normalizedPaths.js:379:19:379:22 | path | semmle.label | path | | normalizedPaths.js:381:19:381:29 | slash(path) | semmle.label | slash(path) | | normalizedPaths.js:381:25:381:28 | path | semmle.label | path | -| normalizedPaths.js:385:7:385:46 | path | semmle.label | path | +| normalizedPaths.js:385:7:385:10 | path | semmle.label | path | | normalizedPaths.js:385:14:385:46 | pathMod ... uery.x) | semmle.label | pathMod ... uery.x) | | normalizedPaths.js:385:35:385:45 | req.query.x | semmle.label | req.query.x | | normalizedPaths.js:388:19:388:22 | path | semmle.label | path | @@ -1188,16 +1188,16 @@ nodes | normalizedPaths.js:408:19:408:60 | pathMod ... t('/')) | semmle.label | pathMod ... t('/')) | | normalizedPaths.js:408:38:408:48 | req.query.x | semmle.label | req.query.x | | normalizedPaths.js:408:38:408:59 | req.que ... it('/') | semmle.label | req.que ... it('/') | -| normalizedPaths.js:412:7:412:46 | path | semmle.label | path | +| normalizedPaths.js:412:7:412:10 | path | semmle.label | path | | normalizedPaths.js:412:14:412:46 | pathMod ... uery.x) | semmle.label | pathMod ... uery.x) | | normalizedPaths.js:412:35:412:45 | req.query.x | semmle.label | req.query.x | | normalizedPaths.js:415:19:415:22 | path | semmle.label | path | | normalizedPaths.js:426:21:426:24 | path | semmle.label | path | -| open.js:7:11:7:31 | file | semmle.label | file | +| open.js:7:11:7:14 | file | semmle.label | file | | open.js:7:18:7:31 | req.query.file | semmle.label | req.query.file | | open.js:9:10:9:13 | file | semmle.label | file | | open.js:10:13:10:16 | file | semmle.label | file | -| other-fs-libraries.js:9:7:9:48 | path | semmle.label | path | +| other-fs-libraries.js:9:7:9:10 | path | semmle.label | path | | other-fs-libraries.js:9:14:9:37 | url.par ... , true) | semmle.label | url.par ... , true) | | other-fs-libraries.js:9:14:9:43 | url.par ... ).query | semmle.label | url.par ... ).query | | other-fs-libraries.js:9:14:9:48 | url.par ... ry.path | semmle.label | url.par ... ry.path | @@ -1210,7 +1210,7 @@ nodes | other-fs-libraries.js:17:35:17:38 | path | semmle.label | path | | other-fs-libraries.js:19:56:19:59 | path | semmle.label | path | | other-fs-libraries.js:24:35:24:38 | path | semmle.label | path | -| other-fs-libraries.js:38:7:38:48 | path | semmle.label | path | +| other-fs-libraries.js:38:7:38:10 | path | semmle.label | path | | other-fs-libraries.js:38:14:38:37 | url.par ... , true) | semmle.label | url.par ... , true) | | other-fs-libraries.js:38:14:38:43 | url.par ... ).query | semmle.label | url.par ... ).query | | other-fs-libraries.js:38:14:38:48 | url.par ... ry.path | semmle.label | url.par ... ry.path | @@ -1218,7 +1218,7 @@ nodes | other-fs-libraries.js:40:35:40:38 | path | semmle.label | path | | other-fs-libraries.js:41:50:41:53 | path | semmle.label | path | | other-fs-libraries.js:42:53:42:56 | path | semmle.label | path | -| other-fs-libraries.js:49:7:49:48 | path | semmle.label | path | +| other-fs-libraries.js:49:7:49:10 | path | semmle.label | path | | other-fs-libraries.js:49:14:49:37 | url.par ... , true) | semmle.label | url.par ... , true) | | other-fs-libraries.js:49:14:49:43 | url.par ... ).query | semmle.label | url.par ... ).query | | other-fs-libraries.js:49:14:49:48 | url.par ... ry.path | semmle.label | url.par ... ry.path | @@ -1231,7 +1231,7 @@ nodes | other-fs-libraries.js:59:39:59:42 | path | semmle.label | path | | other-fs-libraries.js:62:43:62:46 | path | semmle.label | path | | other-fs-libraries.js:63:51:63:54 | path | semmle.label | path | -| other-fs-libraries.js:68:7:68:48 | path | semmle.label | path | +| other-fs-libraries.js:68:7:68:10 | path | semmle.label | path | | other-fs-libraries.js:68:14:68:37 | url.par ... , true) | semmle.label | url.par ... , true) | | other-fs-libraries.js:68:14:68:43 | url.par ... ).query | semmle.label | url.par ... ).query | | other-fs-libraries.js:68:14:68:48 | url.par ... ry.path | semmle.label | url.par ... ry.path | @@ -1242,23 +1242,23 @@ nodes | other-fs-libraries.js:73:8:73:11 | path | semmle.label | path | | other-fs-libraries.js:75:15:75:15 | x | semmle.label | x | | other-fs-libraries.js:76:19:76:19 | x | semmle.label | x | -| other-fs-libraries.js:81:7:81:48 | path | semmle.label | path | +| other-fs-libraries.js:81:7:81:10 | path | semmle.label | path | | other-fs-libraries.js:81:14:81:37 | url.par ... , true) | semmle.label | url.par ... , true) | | other-fs-libraries.js:81:14:81:43 | url.par ... ).query | semmle.label | url.par ... ).query | | other-fs-libraries.js:81:14:81:48 | url.par ... ry.path | semmle.label | url.par ... ry.path | | other-fs-libraries.js:81:24:81:30 | req.url | semmle.label | req.url | | other-fs-libraries.js:83:16:83:19 | path | semmle.label | path | -| prettier.js:6:11:6:28 | p | semmle.label | p | +| prettier.js:6:13:6:13 | p | semmle.label | p | | prettier.js:6:13:6:13 | p | semmle.label | p | | prettier.js:7:28:7:28 | p | semmle.label | p | | prettier.js:11:44:11:44 | p | semmle.label | p | -| pupeteer.js:5:9:5:71 | tainted | semmle.label | tainted | +| pupeteer.js:5:9:5:15 | tainted | semmle.label | tainted | | pupeteer.js:5:19:5:71 | "dir/" ... t.data" | semmle.label | "dir/" ... t.data" | | pupeteer.js:5:28:5:53 | parseTo ... t).name | semmle.label | parseTo ... t).name | | pupeteer.js:9:28:9:34 | tainted | semmle.label | tainted | | pupeteer.js:13:37:13:43 | tainted | semmle.label | tainted | | rimraf.js:8:11:8:18 | { path } | semmle.label | { path } | -| rimraf.js:8:11:8:29 | path | semmle.label | path | +| rimraf.js:8:13:8:16 | path | semmle.label | path | | rimraf.js:8:13:8:16 | path | semmle.label | path | | rimraf.js:8:22:8:29 | req.body | semmle.label | req.body | | rimraf.js:10:17:10:20 | path | semmle.label | path | @@ -1284,13 +1284,13 @@ nodes | sharedlib-repro.js:13:22:13:43 | req.par ... spaceId | semmle.label | req.par ... spaceId | | sharedlib-repro.js:21:27:21:34 | filepath | semmle.label | filepath | | sharedlib-repro.js:22:18:22:25 | filepath | semmle.label | filepath | -| tainted-access-paths.js:6:7:6:48 | path | semmle.label | path | +| tainted-access-paths.js:6:7:6:10 | path | semmle.label | path | | tainted-access-paths.js:6:14:6:37 | url.par ... , true) | semmle.label | url.par ... , true) | | tainted-access-paths.js:6:14:6:43 | url.par ... ).query | semmle.label | url.par ... ).query | | tainted-access-paths.js:6:14:6:48 | url.par ... ry.path | semmle.label | url.par ... ry.path | | tainted-access-paths.js:6:24:6:30 | req.url | semmle.label | req.url | | tainted-access-paths.js:8:19:8:22 | path | semmle.label | path | -| tainted-access-paths.js:10:7:10:36 | obj | semmle.label | obj | +| tainted-access-paths.js:10:7:10:9 | obj | semmle.label | obj | | tainted-access-paths.js:10:33:10:36 | path | semmle.label | path | | tainted-access-paths.js:12:19:12:21 | obj | semmle.label | obj | | tainted-access-paths.js:12:19:12:25 | obj.sub | semmle.label | obj.sub | @@ -1302,19 +1302,19 @@ nodes | tainted-access-paths.js:30:23:30:30 | obj.sub4 | semmle.label | obj.sub4 | | tainted-access-paths.js:31:23:31:25 | obj | semmle.label | obj | | tainted-access-paths.js:31:23:31:30 | obj.sub4 | semmle.label | obj.sub4 | -| tainted-access-paths.js:39:7:39:48 | path | semmle.label | path | +| tainted-access-paths.js:39:7:39:10 | path | semmle.label | path | | tainted-access-paths.js:39:14:39:37 | url.par ... , true) | semmle.label | url.par ... , true) | | tainted-access-paths.js:39:14:39:43 | url.par ... ).query | semmle.label | url.par ... ).query | | tainted-access-paths.js:39:14:39:48 | url.par ... ry.path | semmle.label | url.par ... ry.path | | tainted-access-paths.js:39:24:39:30 | req.url | semmle.label | req.url | | tainted-access-paths.js:40:23:40:26 | path | semmle.label | path | -| tainted-access-paths.js:48:7:48:48 | path | semmle.label | path | +| tainted-access-paths.js:48:7:48:10 | path | semmle.label | path | | tainted-access-paths.js:48:14:48:37 | url.par ... , true) | semmle.label | url.par ... , true) | | tainted-access-paths.js:48:14:48:43 | url.par ... ).query | semmle.label | url.par ... ).query | | tainted-access-paths.js:48:14:48:48 | url.par ... ry.path | semmle.label | url.par ... ry.path | | tainted-access-paths.js:48:24:48:30 | req.url | semmle.label | req.url | | tainted-access-paths.js:49:10:49:13 | path | semmle.label | path | -| tainted-promise-steps.js:6:7:6:48 | path | semmle.label | path | +| tainted-promise-steps.js:6:7:6:10 | path | semmle.label | path | | tainted-promise-steps.js:6:14:6:37 | url.par ... , true) | semmle.label | url.par ... , true) | | tainted-promise-steps.js:6:14:6:43 | url.par ... ).query | semmle.label | url.par ... ).query | | tainted-promise-steps.js:6:14:6:48 | url.par ... ry.path | semmle.label | url.par ... ry.path | @@ -1343,7 +1343,7 @@ nodes | tainted-sendFile.js:30:16:30:46 | path.jo ... rams.x) | semmle.label | path.jo ... rams.x) | | tainted-sendFile.js:30:34:30:45 | req.params.x | semmle.label | req.params.x | | tainted-sendFile.js:32:43:32:58 | req.param("dir") | semmle.label | req.param("dir") | -| tainted-string-steps.js:6:7:6:48 | path | semmle.label | path | +| tainted-string-steps.js:6:7:6:10 | path | semmle.label | path | | tainted-string-steps.js:6:14:6:37 | url.par ... , true) | semmle.label | url.par ... , true) | | tainted-string-steps.js:6:14:6:43 | url.par ... ).query | semmle.label | url.par ... ).query | | tainted-string-steps.js:6:14:6:48 | url.par ... ry.path | semmle.label | url.par ... ry.path | @@ -1380,25 +1380,25 @@ nodes | tainted-string-steps.js:26:18:26:45 | path.sp ... hatever | semmle.label | path.sp ... hatever | | tainted-string-steps.js:27:18:27:21 | path | semmle.label | path | | tainted-string-steps.js:27:18:27:36 | path.split(unknown) | semmle.label | path.split(unknown) | -| torrents.js:5:6:5:38 | name | semmle.label | name | +| torrents.js:5:6:5:9 | name | semmle.label | name | | torrents.js:5:13:5:38 | parseTo ... t).name | semmle.label | parseTo ... t).name | -| torrents.js:6:6:6:45 | loc | semmle.label | loc | +| torrents.js:6:6:6:8 | loc | semmle.label | loc | | torrents.js:6:12:6:45 | dir + " ... t.data" | semmle.label | dir + " ... t.data" | | torrents.js:6:24:6:27 | name | semmle.label | name | | torrents.js:7:25:7:27 | loc | semmle.label | loc | -| typescript.ts:9:7:9:48 | path | semmle.label | path | +| typescript.ts:9:7:9:10 | path | semmle.label | path | | typescript.ts:9:14:9:37 | url.par ... , true) | semmle.label | url.par ... , true) | | typescript.ts:9:14:9:43 | url.par ... ).query | semmle.label | url.par ... ).query | | typescript.ts:9:14:9:48 | url.par ... ry.path | semmle.label | url.par ... ry.path | | typescript.ts:9:24:9:30 | req.url | semmle.label | req.url | | typescript.ts:11:29:11:32 | path | semmle.label | path | -| typescript.ts:19:7:19:18 | path3 | semmle.label | path3 | +| typescript.ts:19:7:19:11 | path3 | semmle.label | path3 | | typescript.ts:19:15:19:18 | path | semmle.label | path | | typescript.ts:20:39:20:43 | path3 | semmle.label | path3 | -| typescript.ts:22:7:22:18 | path4 | semmle.label | path4 | +| typescript.ts:22:7:22:11 | path4 | semmle.label | path4 | | typescript.ts:22:15:22:18 | path | semmle.label | path | | typescript.ts:23:39:23:43 | path4 | semmle.label | path4 | -| typescript.ts:29:7:29:18 | path6 | semmle.label | path6 | +| typescript.ts:29:7:29:11 | path6 | semmle.label | path6 | | typescript.ts:29:15:29:18 | path | semmle.label | path | | typescript.ts:31:29:31:33 | path6 | semmle.label | path6 | | views.js:1:43:1:55 | req.params[0] | semmle.label | req.params[0] | diff --git a/javascript/ql/test/query-tests/Security/CWE-022/ZipSlip/ZipSlip.expected b/javascript/ql/test/query-tests/Security/CWE-022/ZipSlip/ZipSlip.expected index f8916181de12..d5c5f012a76a 100644 --- a/javascript/ql/test/query-tests/Security/CWE-022/ZipSlip/ZipSlip.expected +++ b/javascript/ql/test/query-tests/Security/CWE-022/ZipSlip/ZipSlip.expected @@ -10,41 +10,41 @@ | ZipSlipBad.js:34:16:34:19 | name | ZipSlipBad.js:34:16:34:19 | name | ZipSlipBad.js:35:26:35:29 | name | Unsanitized archive entry, which may contain '..', is used in a $@. | ZipSlipBad.js:35:26:35:29 | name | file system operation | | ZipSlipBadUnzipper.js:7:20:7:29 | entry.path | ZipSlipBadUnzipper.js:7:20:7:29 | entry.path | ZipSlipBadUnzipper.js:8:37:8:44 | fileName | Unsanitized archive entry, which may contain '..', is used in a $@. | ZipSlipBadUnzipper.js:8:37:8:44 | fileName | file system operation | edges -| ZipSlipBad2.js:5:9:5:46 | fileName | ZipSlipBad2.js:6:22:6:29 | fileName | provenance | | -| ZipSlipBad2.js:5:20:5:46 | 'output ... ry.path | ZipSlipBad2.js:5:9:5:46 | fileName | provenance | | +| ZipSlipBad2.js:5:9:5:16 | fileName | ZipSlipBad2.js:6:22:6:29 | fileName | provenance | | +| ZipSlipBad2.js:5:20:5:46 | 'output ... ry.path | ZipSlipBad2.js:5:9:5:16 | fileName | provenance | | | ZipSlipBad2.js:5:37:5:46 | entry.path | ZipSlipBad2.js:5:20:5:46 | 'output ... ry.path | provenance | Config | -| ZipSlipBad.js:7:11:7:31 | fileName | ZipSlipBad.js:8:37:8:44 | fileName | provenance | | -| ZipSlipBad.js:7:22:7:31 | entry.path | ZipSlipBad.js:7:11:7:31 | fileName | provenance | | -| ZipSlipBad.js:15:11:15:31 | fileName | ZipSlipBad.js:16:30:16:37 | fileName | provenance | | -| ZipSlipBad.js:15:22:15:31 | entry.path | ZipSlipBad.js:15:11:15:31 | fileName | provenance | | -| ZipSlipBad.js:22:11:22:31 | fileName | ZipSlipBad.js:23:28:23:35 | fileName | provenance | | -| ZipSlipBad.js:22:22:22:31 | entry.path | ZipSlipBad.js:22:11:22:31 | fileName | provenance | | +| ZipSlipBad.js:7:11:7:18 | fileName | ZipSlipBad.js:8:37:8:44 | fileName | provenance | | +| ZipSlipBad.js:7:22:7:31 | entry.path | ZipSlipBad.js:7:11:7:18 | fileName | provenance | | +| ZipSlipBad.js:15:11:15:18 | fileName | ZipSlipBad.js:16:30:16:37 | fileName | provenance | | +| ZipSlipBad.js:15:22:15:31 | entry.path | ZipSlipBad.js:15:11:15:18 | fileName | provenance | | +| ZipSlipBad.js:22:11:22:18 | fileName | ZipSlipBad.js:23:28:23:35 | fileName | provenance | | +| ZipSlipBad.js:22:22:22:31 | entry.path | ZipSlipBad.js:22:11:22:18 | fileName | provenance | | | ZipSlipBad.js:30:14:30:17 | name | ZipSlipBad.js:31:26:31:29 | name | provenance | | | ZipSlipBad.js:34:16:34:19 | name | ZipSlipBad.js:35:26:35:29 | name | provenance | | -| ZipSlipBadUnzipper.js:7:9:7:29 | fileName | ZipSlipBadUnzipper.js:8:37:8:44 | fileName | provenance | | -| ZipSlipBadUnzipper.js:7:20:7:29 | entry.path | ZipSlipBadUnzipper.js:7:9:7:29 | fileName | provenance | | +| ZipSlipBadUnzipper.js:7:9:7:16 | fileName | ZipSlipBadUnzipper.js:8:37:8:44 | fileName | provenance | | +| ZipSlipBadUnzipper.js:7:20:7:29 | entry.path | ZipSlipBadUnzipper.js:7:9:7:16 | fileName | provenance | | nodes | AdmZipBad.js:6:24:6:41 | zipEntry.entryName | semmle.label | zipEntry.entryName | | TarSlipBad.js:6:36:6:46 | header.name | semmle.label | header.name | | TarSlipBad.js:9:17:9:31 | header.linkname | semmle.label | header.linkname | -| ZipSlipBad2.js:5:9:5:46 | fileName | semmle.label | fileName | +| ZipSlipBad2.js:5:9:5:16 | fileName | semmle.label | fileName | | ZipSlipBad2.js:5:20:5:46 | 'output ... ry.path | semmle.label | 'output ... ry.path | | ZipSlipBad2.js:5:37:5:46 | entry.path | semmle.label | entry.path | | ZipSlipBad2.js:6:22:6:29 | fileName | semmle.label | fileName | -| ZipSlipBad.js:7:11:7:31 | fileName | semmle.label | fileName | +| ZipSlipBad.js:7:11:7:18 | fileName | semmle.label | fileName | | ZipSlipBad.js:7:22:7:31 | entry.path | semmle.label | entry.path | | ZipSlipBad.js:8:37:8:44 | fileName | semmle.label | fileName | -| ZipSlipBad.js:15:11:15:31 | fileName | semmle.label | fileName | +| ZipSlipBad.js:15:11:15:18 | fileName | semmle.label | fileName | | ZipSlipBad.js:15:22:15:31 | entry.path | semmle.label | entry.path | | ZipSlipBad.js:16:30:16:37 | fileName | semmle.label | fileName | -| ZipSlipBad.js:22:11:22:31 | fileName | semmle.label | fileName | +| ZipSlipBad.js:22:11:22:18 | fileName | semmle.label | fileName | | ZipSlipBad.js:22:22:22:31 | entry.path | semmle.label | entry.path | | ZipSlipBad.js:23:28:23:35 | fileName | semmle.label | fileName | | ZipSlipBad.js:30:14:30:17 | name | semmle.label | name | | ZipSlipBad.js:31:26:31:29 | name | semmle.label | name | | ZipSlipBad.js:34:16:34:19 | name | semmle.label | name | | ZipSlipBad.js:35:26:35:29 | name | semmle.label | name | -| ZipSlipBadUnzipper.js:7:9:7:29 | fileName | semmle.label | fileName | +| ZipSlipBadUnzipper.js:7:9:7:16 | fileName | semmle.label | fileName | | ZipSlipBadUnzipper.js:7:20:7:29 | entry.path | semmle.label | entry.path | | ZipSlipBadUnzipper.js:8:37:8:44 | fileName | semmle.label | fileName | subpaths diff --git a/javascript/ql/test/query-tests/Security/CWE-073/TemplateObjectInjection.expected b/javascript/ql/test/query-tests/Security/CWE-073/TemplateObjectInjection.expected index 32b2875a86cf..9962113d8066 100644 --- a/javascript/ql/test/query-tests/Security/CWE-073/TemplateObjectInjection.expected +++ b/javascript/ql/test/query-tests/Security/CWE-073/TemplateObjectInjection.expected @@ -10,67 +10,67 @@ | tst.js:24:28:24:30 | obj | tst.js:8:26:8:49 | req.que ... rameter | tst.js:24:28:24:30 | obj | Template object depends on a $@. | tst.js:8:26:8:49 | req.que ... rameter | user-provided value | | tst.js:29:28:29:42 | JSON.parse(str) | tst.js:8:26:8:49 | req.que ... rameter | tst.js:29:28:29:42 | JSON.parse(str) | Template object depends on a $@. | tst.js:8:26:8:49 | req.que ... rameter | user-provided value | edges -| tst2.js:6:9:6:46 | bodyParameter | tst2.js:7:28:7:40 | bodyParameter | provenance | | +| tst2.js:6:9:6:21 | bodyParameter | tst2.js:7:28:7:40 | bodyParameter | provenance | | | tst2.js:6:25:6:32 | req.body | tst2.js:6:25:6:46 | req.bod ... rameter | provenance | Config | -| tst2.js:6:25:6:46 | req.bod ... rameter | tst2.js:6:9:6:46 | bodyParameter | provenance | | -| tst2.js:26:9:26:46 | bodyParameter | tst2.js:27:28:27:40 | bodyParameter | provenance | | +| tst2.js:6:25:6:46 | req.bod ... rameter | tst2.js:6:9:6:21 | bodyParameter | provenance | | +| tst2.js:26:9:26:21 | bodyParameter | tst2.js:27:28:27:40 | bodyParameter | provenance | | | tst2.js:26:25:26:32 | req.body | tst2.js:26:25:26:46 | req.bod ... rameter | provenance | Config | -| tst2.js:26:25:26:46 | req.bod ... rameter | tst2.js:26:9:26:46 | bodyParameter | provenance | | -| tst2.js:34:9:34:46 | bodyParameter | tst2.js:35:28:35:40 | bodyParameter | provenance | | +| tst2.js:26:25:26:46 | req.bod ... rameter | tst2.js:26:9:26:21 | bodyParameter | provenance | | +| tst2.js:34:9:34:21 | bodyParameter | tst2.js:35:28:35:40 | bodyParameter | provenance | | | tst2.js:34:25:34:32 | req.body | tst2.js:34:25:34:46 | req.bod ... rameter | provenance | Config | -| tst2.js:34:25:34:46 | req.bod ... rameter | tst2.js:34:9:34:46 | bodyParameter | provenance | | -| tst2.js:42:9:42:46 | bodyParameter | tst2.js:43:28:43:40 | bodyParameter | provenance | | +| tst2.js:34:25:34:46 | req.bod ... rameter | tst2.js:34:9:34:21 | bodyParameter | provenance | | +| tst2.js:42:9:42:21 | bodyParameter | tst2.js:43:28:43:40 | bodyParameter | provenance | | | tst2.js:42:25:42:32 | req.body | tst2.js:42:25:42:46 | req.bod ... rameter | provenance | Config | -| tst2.js:42:25:42:46 | req.bod ... rameter | tst2.js:42:9:42:46 | bodyParameter | provenance | | -| tst2.js:51:9:51:46 | bodyParameter | tst2.js:52:28:52:40 | bodyParameter | provenance | | +| tst2.js:42:25:42:46 | req.bod ... rameter | tst2.js:42:9:42:21 | bodyParameter | provenance | | +| tst2.js:51:9:51:21 | bodyParameter | tst2.js:52:28:52:40 | bodyParameter | provenance | | | tst2.js:51:25:51:32 | req.body | tst2.js:51:25:51:46 | req.bod ... rameter | provenance | Config | -| tst2.js:51:25:51:46 | req.bod ... rameter | tst2.js:51:9:51:46 | bodyParameter | provenance | | -| tst.js:7:9:7:46 | bodyParameter | tst.js:10:28:10:40 | bodyParameter | provenance | | +| tst2.js:51:25:51:46 | req.bod ... rameter | tst2.js:51:9:51:21 | bodyParameter | provenance | | +| tst.js:7:9:7:21 | bodyParameter | tst.js:10:28:10:40 | bodyParameter | provenance | | | tst.js:7:25:7:32 | req.body | tst.js:7:25:7:46 | req.bod ... rameter | provenance | Config | -| tst.js:7:25:7:46 | req.bod ... rameter | tst.js:7:9:7:46 | bodyParameter | provenance | | -| tst.js:8:9:8:49 | queryParameter | tst.js:11:28:11:41 | queryParameter | provenance | | -| tst.js:8:9:8:49 | queryParameter | tst.js:20:19:20:32 | queryParameter | provenance | | -| tst.js:8:26:8:49 | req.que ... rameter | tst.js:8:9:8:49 | queryParameter | provenance | | +| tst.js:7:25:7:46 | req.bod ... rameter | tst.js:7:9:7:21 | bodyParameter | provenance | | +| tst.js:8:9:8:22 | queryParameter | tst.js:11:28:11:41 | queryParameter | provenance | | +| tst.js:8:9:8:22 | queryParameter | tst.js:20:19:20:32 | queryParameter | provenance | | +| tst.js:8:26:8:49 | req.que ... rameter | tst.js:8:9:8:22 | queryParameter | provenance | | | tst.js:20:19:20:32 | queryParameter | tst.js:23:24:23:26 | obj | provenance | | | tst.js:23:24:23:26 | obj | tst.js:24:28:24:30 | obj | provenance | | | tst.js:23:24:23:26 | obj | tst.js:26:17:26:19 | obj | provenance | | -| tst.js:26:11:26:24 | str | tst.js:29:39:29:41 | str | provenance | | +| tst.js:26:11:26:13 | str | tst.js:29:39:29:41 | str | provenance | | | tst.js:26:17:26:19 | obj | tst.js:26:17:26:24 | obj + "" | provenance | Config | -| tst.js:26:17:26:24 | obj + "" | tst.js:26:11:26:24 | str | provenance | | +| tst.js:26:17:26:24 | obj + "" | tst.js:26:11:26:13 | str | provenance | | | tst.js:29:39:29:41 | str | tst.js:29:28:29:42 | JSON.parse(str) | provenance | Config | nodes | routes.js:2:23:2:30 | req.body | semmle.label | req.body | -| tst2.js:6:9:6:46 | bodyParameter | semmle.label | bodyParameter | +| tst2.js:6:9:6:21 | bodyParameter | semmle.label | bodyParameter | | tst2.js:6:25:6:32 | req.body | semmle.label | req.body | | tst2.js:6:25:6:46 | req.bod ... rameter | semmle.label | req.bod ... rameter | | tst2.js:7:28:7:40 | bodyParameter | semmle.label | bodyParameter | -| tst2.js:26:9:26:46 | bodyParameter | semmle.label | bodyParameter | +| tst2.js:26:9:26:21 | bodyParameter | semmle.label | bodyParameter | | tst2.js:26:25:26:32 | req.body | semmle.label | req.body | | tst2.js:26:25:26:46 | req.bod ... rameter | semmle.label | req.bod ... rameter | | tst2.js:27:28:27:40 | bodyParameter | semmle.label | bodyParameter | -| tst2.js:34:9:34:46 | bodyParameter | semmle.label | bodyParameter | +| tst2.js:34:9:34:21 | bodyParameter | semmle.label | bodyParameter | | tst2.js:34:25:34:32 | req.body | semmle.label | req.body | | tst2.js:34:25:34:46 | req.bod ... rameter | semmle.label | req.bod ... rameter | | tst2.js:35:28:35:40 | bodyParameter | semmle.label | bodyParameter | -| tst2.js:42:9:42:46 | bodyParameter | semmle.label | bodyParameter | +| tst2.js:42:9:42:21 | bodyParameter | semmle.label | bodyParameter | | tst2.js:42:25:42:32 | req.body | semmle.label | req.body | | tst2.js:42:25:42:46 | req.bod ... rameter | semmle.label | req.bod ... rameter | | tst2.js:43:28:43:40 | bodyParameter | semmle.label | bodyParameter | -| tst2.js:51:9:51:46 | bodyParameter | semmle.label | bodyParameter | +| tst2.js:51:9:51:21 | bodyParameter | semmle.label | bodyParameter | | tst2.js:51:25:51:32 | req.body | semmle.label | req.body | | tst2.js:51:25:51:46 | req.bod ... rameter | semmle.label | req.bod ... rameter | | tst2.js:52:28:52:40 | bodyParameter | semmle.label | bodyParameter | -| tst.js:7:9:7:46 | bodyParameter | semmle.label | bodyParameter | +| tst.js:7:9:7:21 | bodyParameter | semmle.label | bodyParameter | | tst.js:7:25:7:32 | req.body | semmle.label | req.body | | tst.js:7:25:7:46 | req.bod ... rameter | semmle.label | req.bod ... rameter | -| tst.js:8:9:8:49 | queryParameter | semmle.label | queryParameter | +| tst.js:8:9:8:22 | queryParameter | semmle.label | queryParameter | | tst.js:8:26:8:49 | req.que ... rameter | semmle.label | req.que ... rameter | | tst.js:10:28:10:40 | bodyParameter | semmle.label | bodyParameter | | tst.js:11:28:11:41 | queryParameter | semmle.label | queryParameter | | tst.js:20:19:20:32 | queryParameter | semmle.label | queryParameter | | tst.js:23:24:23:26 | obj | semmle.label | obj | | tst.js:24:28:24:30 | obj | semmle.label | obj | -| tst.js:26:11:26:24 | str | semmle.label | str | +| tst.js:26:11:26:13 | str | semmle.label | str | | tst.js:26:17:26:19 | obj | semmle.label | obj | | tst.js:26:17:26:24 | obj + "" | semmle.label | obj + "" | | tst.js:29:28:29:42 | JSON.parse(str) | semmle.label | JSON.parse(str) | diff --git a/javascript/ql/test/query-tests/Security/CWE-078/CommandInjection/CommandInjection.expected b/javascript/ql/test/query-tests/Security/CWE-078/CommandInjection/CommandInjection.expected index 862255f70f23..dc9c65822ba0 100644 --- a/javascript/ql/test/query-tests/Security/CWE-078/CommandInjection/CommandInjection.expected +++ b/javascript/ql/test/query-tests/Security/CWE-078/CommandInjection/CommandInjection.expected @@ -84,32 +84,32 @@ | other.js:34:44:34:46 | cmd | other.js:5:25:5:31 | req.url | other.js:34:44:34:46 | cmd | This command line depends on a $@. | other.js:5:25:5:31 | req.url | user-provided value | | third-party-command-injection.js:6:21:6:27 | command | third-party-command-injection.js:5:20:5:26 | command | third-party-command-injection.js:6:21:6:27 | command | This command line depends on a $@. | third-party-command-injection.js:5:20:5:26 | command | user-provided value | edges -| actions.js:8:9:8:57 | title | actions.js:9:16:9:20 | title | provenance | | -| actions.js:8:17:8:57 | github. ... t.title | actions.js:8:9:8:57 | title | provenance | | +| actions.js:8:9:8:13 | title | actions.js:9:16:9:20 | title | provenance | | +| actions.js:8:17:8:57 | github. ... t.title | actions.js:8:9:8:13 | title | provenance | | | actions.js:9:16:9:20 | title | actions.js:9:8:9:22 | `echo ${title}` | provenance | | -| actions.js:18:9:18:63 | head_ref | actions.js:19:22:19:29 | head_ref | provenance | | -| actions.js:18:20:18:63 | github. ... ead.ref | actions.js:18:9:18:63 | head_ref | provenance | | +| actions.js:18:9:18:16 | head_ref | actions.js:19:22:19:29 | head_ref | provenance | | +| actions.js:18:20:18:63 | github. ... ead.ref | actions.js:18:9:18:16 | head_ref | provenance | | | actions.js:19:22:19:29 | head_ref | actions.js:19:14:19:31 | `echo ${head_ref}` | provenance | | -| child_process-test.js:6:9:6:49 | cmd | child_process-test.js:17:13:17:15 | cmd | provenance | | -| child_process-test.js:6:9:6:49 | cmd | child_process-test.js:18:17:18:19 | cmd | provenance | | -| child_process-test.js:6:9:6:49 | cmd | child_process-test.js:19:17:19:19 | cmd | provenance | | -| child_process-test.js:6:9:6:49 | cmd | child_process-test.js:20:21:20:23 | cmd | provenance | | -| child_process-test.js:6:9:6:49 | cmd | child_process-test.js:21:14:21:16 | cmd | provenance | | -| child_process-test.js:6:9:6:49 | cmd | child_process-test.js:22:18:22:20 | cmd | provenance | | -| child_process-test.js:6:9:6:49 | cmd | child_process-test.js:23:13:23:15 | cmd | provenance | | -| child_process-test.js:6:9:6:49 | cmd | child_process-test.js:25:21:25:23 | cmd | provenance | | -| child_process-test.js:6:9:6:49 | cmd | child_process-test.js:39:26:39:28 | cmd | provenance | | -| child_process-test.js:6:9:6:49 | cmd | child_process-test.js:43:15:43:17 | cmd | provenance | | -| child_process-test.js:6:9:6:49 | cmd | child_process-test.js:48:15:48:17 | cmd | provenance | | -| child_process-test.js:6:9:6:49 | cmd | child_process-test.js:48:15:48:17 | cmd | provenance | | -| child_process-test.js:6:9:6:49 | cmd | child_process-test.js:53:15:53:17 | cmd | provenance | | -| child_process-test.js:6:9:6:49 | cmd | child_process-test.js:56:54:56:56 | cmd | provenance | | -| child_process-test.js:6:9:6:49 | cmd | child_process-test.js:56:54:56:56 | cmd | provenance | | -| child_process-test.js:6:9:6:49 | cmd | child_process-test.js:57:46:57:48 | cmd | provenance | | -| child_process-test.js:6:15:6:38 | url.par ... , true) | child_process-test.js:6:9:6:49 | cmd | provenance | | +| child_process-test.js:6:9:6:11 | cmd | child_process-test.js:17:13:17:15 | cmd | provenance | | +| child_process-test.js:6:9:6:11 | cmd | child_process-test.js:18:17:18:19 | cmd | provenance | | +| child_process-test.js:6:9:6:11 | cmd | child_process-test.js:19:17:19:19 | cmd | provenance | | +| child_process-test.js:6:9:6:11 | cmd | child_process-test.js:20:21:20:23 | cmd | provenance | | +| child_process-test.js:6:9:6:11 | cmd | child_process-test.js:21:14:21:16 | cmd | provenance | | +| child_process-test.js:6:9:6:11 | cmd | child_process-test.js:22:18:22:20 | cmd | provenance | | +| child_process-test.js:6:9:6:11 | cmd | child_process-test.js:23:13:23:15 | cmd | provenance | | +| child_process-test.js:6:9:6:11 | cmd | child_process-test.js:25:21:25:23 | cmd | provenance | | +| child_process-test.js:6:9:6:11 | cmd | child_process-test.js:39:26:39:28 | cmd | provenance | | +| child_process-test.js:6:9:6:11 | cmd | child_process-test.js:43:15:43:17 | cmd | provenance | | +| child_process-test.js:6:9:6:11 | cmd | child_process-test.js:48:15:48:17 | cmd | provenance | | +| child_process-test.js:6:9:6:11 | cmd | child_process-test.js:48:15:48:17 | cmd | provenance | | +| child_process-test.js:6:9:6:11 | cmd | child_process-test.js:53:15:53:17 | cmd | provenance | | +| child_process-test.js:6:9:6:11 | cmd | child_process-test.js:56:54:56:56 | cmd | provenance | | +| child_process-test.js:6:9:6:11 | cmd | child_process-test.js:56:54:56:56 | cmd | provenance | | +| child_process-test.js:6:9:6:11 | cmd | child_process-test.js:57:46:57:48 | cmd | provenance | | +| child_process-test.js:6:15:6:38 | url.par ... , true) | child_process-test.js:6:9:6:11 | cmd | provenance | | | child_process-test.js:6:15:6:38 | url.par ... , true) | child_process-test.js:6:15:6:49 | url.par ... ry.path | provenance | | | child_process-test.js:6:15:6:38 | url.par ... , true) | child_process-test.js:6:15:6:49 | url.par ... ry.path | provenance | | -| child_process-test.js:6:15:6:49 | url.par ... ry.path | child_process-test.js:6:9:6:49 | cmd | provenance | | +| child_process-test.js:6:15:6:49 | url.par ... ry.path | child_process-test.js:6:9:6:11 | cmd | provenance | | | child_process-test.js:6:25:6:31 | req.url | child_process-test.js:6:15:6:38 | url.par ... , true) | provenance | | | child_process-test.js:25:21:25:23 | cmd | child_process-test.js:25:13:25:31 | "foo" + cmd + "bar" | provenance | | | child_process-test.js:48:5:48:8 | [post update] args [1] | child_process-test.js:49:15:49:18 | args [1] | provenance | | @@ -118,47 +118,47 @@ edges | child_process-test.js:56:46:56:57 | ["bar", cmd] [1] | child_process-test.js:56:25:56:58 | ['/C', ... , cmd]) | provenance | | | child_process-test.js:56:54:56:56 | cmd | child_process-test.js:56:46:56:57 | ["bar", cmd] [1] | provenance | | | child_process-test.js:57:46:57:48 | cmd | child_process-test.js:57:25:57:49 | ['/C', ... at(cmd) | provenance | | -| child_process-test.js:73:9:73:49 | cmd | child_process-test.js:75:29:75:31 | cmd | provenance | | -| child_process-test.js:73:15:73:38 | url.par ... , true) | child_process-test.js:73:9:73:49 | cmd | provenance | | +| child_process-test.js:73:9:73:11 | cmd | child_process-test.js:75:29:75:31 | cmd | provenance | | +| child_process-test.js:73:15:73:38 | url.par ... , true) | child_process-test.js:73:9:73:11 | cmd | provenance | | | child_process-test.js:73:25:73:31 | req.url | child_process-test.js:73:15:73:38 | url.par ... , true) | provenance | | | child_process-test.js:94:21:94:30 | ctx.params | child_process-test.js:94:11:94:35 | "ping " ... ms.host | provenance | | -| command-line-libs.js:9:9:9:34 | args | command-line-libs.js:12:17:12:20 | args | provenance | | -| command-line-libs.js:9:9:9:34 | args | command-line-libs.js:23:29:23:32 | args | provenance | | -| command-line-libs.js:9:16:9:23 | req.body | command-line-libs.js:9:9:9:34 | args | provenance | | +| command-line-libs.js:9:9:9:12 | args | command-line-libs.js:12:17:12:20 | args | provenance | | +| command-line-libs.js:9:9:9:12 | args | command-line-libs.js:23:29:23:32 | args | provenance | | +| command-line-libs.js:9:16:9:23 | req.body | command-line-libs.js:9:9:9:12 | args | provenance | | | command-line-libs.js:12:17:12:20 | args | command-line-libs.js:13:19:13:32 | program.opts() | provenance | | | command-line-libs.js:12:17:12:20 | args | command-line-libs.js:15:8:15:18 | program.cmd | provenance | | | command-line-libs.js:12:17:12:20 | args | command-line-libs.js:20:14:20:19 | script | provenance | | -| command-line-libs.js:13:9:13:32 | options | command-line-libs.js:14:8:14:14 | options | provenance | | -| command-line-libs.js:13:19:13:32 | program.opts() | command-line-libs.js:13:9:13:32 | options | provenance | | +| command-line-libs.js:13:9:13:15 | options | command-line-libs.js:14:8:14:14 | options | provenance | | +| command-line-libs.js:13:19:13:32 | program.opts() | command-line-libs.js:13:9:13:15 | options | provenance | | | command-line-libs.js:14:8:14:14 | options | command-line-libs.js:14:8:14:18 | options.cmd | provenance | | | command-line-libs.js:20:14:20:19 | script | command-line-libs.js:21:12:21:17 | script | provenance | | | command-line-libs.js:23:29:23:32 | args | command-line-libs.js:20:14:20:19 | script | provenance | | -| command-line-libs.js:27:11:27:41 | argsArray | command-line-libs.js:28:53:28:61 | argsArray | provenance | | -| command-line-libs.js:27:23:27:30 | req.body | command-line-libs.js:27:11:27:41 | argsArray | provenance | | -| command-line-libs.js:28:11:28:64 | parsed | command-line-libs.js:29:10:29:15 | parsed | provenance | | -| command-line-libs.js:28:20:28:64 | arg({ ' ... rray }) | command-line-libs.js:28:11:28:64 | parsed | provenance | | +| command-line-libs.js:27:11:27:19 | argsArray | command-line-libs.js:28:53:28:61 | argsArray | provenance | | +| command-line-libs.js:27:23:27:30 | req.body | command-line-libs.js:27:11:27:19 | argsArray | provenance | | +| command-line-libs.js:28:11:28:16 | parsed | command-line-libs.js:29:10:29:15 | parsed | provenance | | +| command-line-libs.js:28:20:28:64 | arg({ ' ... rray }) | command-line-libs.js:28:11:28:16 | parsed | provenance | | | command-line-libs.js:28:53:28:61 | argsArray | command-line-libs.js:28:20:28:64 | arg({ ' ... rray }) | provenance | | | command-line-libs.js:29:10:29:15 | parsed | command-line-libs.js:29:10:29:24 | parsed['--cmd'] | provenance | | -| command-line-libs.js:35:9:35:83 | options | command-line-libs.js:37:8:37:14 | options | provenance | | -| command-line-libs.js:35:19:35:83 | command ... \| [] }) | command-line-libs.js:35:9:35:83 | options | provenance | | +| command-line-libs.js:35:9:35:15 | options | command-line-libs.js:37:8:37:14 | options | provenance | | +| command-line-libs.js:35:19:35:83 | command ... \| [] }) | command-line-libs.js:35:9:35:15 | options | provenance | | | command-line-libs.js:35:62:35:69 | req.body | command-line-libs.js:35:19:35:83 | command ... \| [] }) | provenance | | | command-line-libs.js:37:8:37:14 | options | command-line-libs.js:37:8:37:18 | options.cmd | provenance | | -| command-line-libs.js:42:9:42:34 | args | command-line-libs.js:43:24:43:27 | args | provenance | | -| command-line-libs.js:42:16:42:23 | req.body | command-line-libs.js:42:9:42:34 | args | provenance | | -| command-line-libs.js:43:9:47:12 | parsed | command-line-libs.js:49:8:49:13 | parsed | provenance | | +| command-line-libs.js:42:9:42:12 | args | command-line-libs.js:43:24:43:27 | args | provenance | | +| command-line-libs.js:42:16:42:23 | req.body | command-line-libs.js:42:9:42:12 | args | provenance | | +| command-line-libs.js:43:9:43:14 | parsed | command-line-libs.js:49:8:49:13 | parsed | provenance | | | command-line-libs.js:43:18:43:28 | yargs(args) | command-line-libs.js:43:18:47:4 | yargs(a ... ue\\n }) | provenance | | | command-line-libs.js:43:18:47:4 | yargs(a ... ue\\n }) | command-line-libs.js:43:18:47:12 | yargs(a ... parse() | provenance | | -| command-line-libs.js:43:18:47:12 | yargs(a ... parse() | command-line-libs.js:43:9:47:12 | parsed | provenance | | +| command-line-libs.js:43:18:47:12 | yargs(a ... parse() | command-line-libs.js:43:9:43:14 | parsed | provenance | | | command-line-libs.js:43:24:43:27 | args | command-line-libs.js:43:18:43:28 | yargs(args) | provenance | | | command-line-libs.js:49:8:49:13 | parsed | command-line-libs.js:49:8:49:17 | parsed.cmd | provenance | | | exec-sh2.js:9:17:9:23 | command | exec-sh2.js:10:40:10:46 | command | provenance | | -| exec-sh2.js:14:9:14:49 | cmd | exec-sh2.js:15:12:15:14 | cmd | provenance | | -| exec-sh2.js:14:15:14:38 | url.par ... , true) | exec-sh2.js:14:9:14:49 | cmd | provenance | | +| exec-sh2.js:14:9:14:11 | cmd | exec-sh2.js:15:12:15:14 | cmd | provenance | | +| exec-sh2.js:14:15:14:38 | url.par ... , true) | exec-sh2.js:14:9:14:11 | cmd | provenance | | | exec-sh2.js:14:25:14:31 | req.url | exec-sh2.js:14:15:14:38 | url.par ... , true) | provenance | | | exec-sh2.js:15:12:15:14 | cmd | exec-sh2.js:9:17:9:23 | command | provenance | | | exec-sh.js:13:17:13:23 | command | exec-sh.js:15:44:15:50 | command | provenance | | -| exec-sh.js:19:9:19:49 | cmd | exec-sh.js:20:12:20:14 | cmd | provenance | | -| exec-sh.js:19:15:19:38 | url.par ... , true) | exec-sh.js:19:9:19:49 | cmd | provenance | | +| exec-sh.js:19:9:19:11 | cmd | exec-sh.js:20:12:20:14 | cmd | provenance | | +| exec-sh.js:19:15:19:38 | url.par ... , true) | exec-sh.js:19:9:19:11 | cmd | provenance | | | exec-sh.js:19:25:19:31 | req.url | exec-sh.js:19:15:19:38 | url.par ... , true) | provenance | | | exec-sh.js:20:12:20:14 | cmd | exec-sh.js:13:17:13:23 | command | provenance | | | execSeries.js:3:20:3:22 | arr [0] | execSeries.js:5:3:10:4 | (functi ... );\\n }) [arr, 0] | provenance | | @@ -169,45 +169,45 @@ edges | execSeries.js:13:19:13:26 | commands [0] | execSeries.js:14:13:14:20 | commands [0] | provenance | | | execSeries.js:14:13:14:20 | commands [0] | execSeries.js:3:20:3:22 | arr [0] | provenance | | | execSeries.js:14:24:14:30 | command | execSeries.js:14:41:14:47 | command | provenance | | -| execSeries.js:18:7:18:58 | cmd | execSeries.js:19:13:19:15 | cmd | provenance | | -| execSeries.js:18:13:18:47 | require ... , true) | execSeries.js:18:7:18:58 | cmd | provenance | | +| execSeries.js:18:7:18:9 | cmd | execSeries.js:19:13:19:15 | cmd | provenance | | +| execSeries.js:18:13:18:47 | require ... , true) | execSeries.js:18:7:18:9 | cmd | provenance | | | execSeries.js:18:34:18:40 | req.url | execSeries.js:18:13:18:47 | require ... , true) | provenance | | | execSeries.js:19:12:19:16 | [cmd] [0] | execSeries.js:13:19:13:26 | commands [0] | provenance | | | execSeries.js:19:13:19:15 | cmd | execSeries.js:19:12:19:16 | [cmd] [0] | provenance | | -| execa.js:6:9:6:54 | cmd | execa.js:11:15:11:17 | cmd | provenance | | -| execa.js:6:9:6:54 | cmd | execa.js:13:32:13:34 | cmd | provenance | | -| execa.js:6:9:6:54 | cmd | execa.js:14:31:14:33 | cmd | provenance | | -| execa.js:6:9:6:54 | cmd | execa.js:17:14:17:16 | cmd | provenance | | -| execa.js:6:9:6:54 | cmd | execa.js:19:32:19:34 | cmd | provenance | | -| execa.js:6:9:6:54 | cmd | execa.js:20:33:20:35 | cmd | provenance | | -| execa.js:6:9:6:54 | cmd | execa.js:23:17:23:19 | cmd | provenance | | -| execa.js:6:9:6:54 | cmd | execa.js:24:17:24:19 | cmd | provenance | | -| execa.js:6:9:6:54 | cmd | execa.js:25:17:25:19 | cmd | provenance | | -| execa.js:6:9:6:54 | cmd | execa.js:27:15:27:17 | cmd | provenance | | -| execa.js:6:9:6:54 | cmd | execa.js:28:15:28:17 | cmd | provenance | | -| execa.js:6:9:6:54 | cmd | execa.js:30:24:30:26 | cmd | provenance | | -| execa.js:6:9:6:54 | cmd | execa.js:31:24:31:26 | cmd | provenance | | -| execa.js:6:9:6:54 | cmd | execa.js:33:22:33:24 | cmd | provenance | | -| execa.js:6:9:6:54 | cmd | execa.js:34:22:34:24 | cmd | provenance | | -| execa.js:6:15:6:38 | url.par ... , true) | execa.js:6:9:6:54 | cmd | provenance | | +| execa.js:6:9:6:11 | cmd | execa.js:11:15:11:17 | cmd | provenance | | +| execa.js:6:9:6:11 | cmd | execa.js:13:32:13:34 | cmd | provenance | | +| execa.js:6:9:6:11 | cmd | execa.js:14:31:14:33 | cmd | provenance | | +| execa.js:6:9:6:11 | cmd | execa.js:17:14:17:16 | cmd | provenance | | +| execa.js:6:9:6:11 | cmd | execa.js:19:32:19:34 | cmd | provenance | | +| execa.js:6:9:6:11 | cmd | execa.js:20:33:20:35 | cmd | provenance | | +| execa.js:6:9:6:11 | cmd | execa.js:23:17:23:19 | cmd | provenance | | +| execa.js:6:9:6:11 | cmd | execa.js:24:17:24:19 | cmd | provenance | | +| execa.js:6:9:6:11 | cmd | execa.js:25:17:25:19 | cmd | provenance | | +| execa.js:6:9:6:11 | cmd | execa.js:27:15:27:17 | cmd | provenance | | +| execa.js:6:9:6:11 | cmd | execa.js:28:15:28:17 | cmd | provenance | | +| execa.js:6:9:6:11 | cmd | execa.js:30:24:30:26 | cmd | provenance | | +| execa.js:6:9:6:11 | cmd | execa.js:31:24:31:26 | cmd | provenance | | +| execa.js:6:9:6:11 | cmd | execa.js:33:22:33:24 | cmd | provenance | | +| execa.js:6:9:6:11 | cmd | execa.js:34:22:34:24 | cmd | provenance | | +| execa.js:6:15:6:38 | url.par ... , true) | execa.js:6:9:6:11 | cmd | provenance | | | execa.js:6:25:6:31 | req.url | execa.js:6:15:6:38 | url.par ... , true) | provenance | | -| execa.js:7:9:7:53 | arg1 | execa.js:30:30:30:33 | arg1 | provenance | | -| execa.js:7:9:7:53 | arg1 | execa.js:31:30:31:33 | arg1 | provenance | | -| execa.js:7:9:7:53 | arg1 | execa.js:33:28:33:31 | arg1 | provenance | | -| execa.js:7:9:7:53 | arg1 | execa.js:34:28:34:31 | arg1 | provenance | | -| execa.js:7:16:7:39 | url.par ... , true) | execa.js:7:9:7:53 | arg1 | provenance | | +| execa.js:7:9:7:12 | arg1 | execa.js:30:30:30:33 | arg1 | provenance | | +| execa.js:7:9:7:12 | arg1 | execa.js:31:30:31:33 | arg1 | provenance | | +| execa.js:7:9:7:12 | arg1 | execa.js:33:28:33:31 | arg1 | provenance | | +| execa.js:7:9:7:12 | arg1 | execa.js:34:28:34:31 | arg1 | provenance | | +| execa.js:7:16:7:39 | url.par ... , true) | execa.js:7:9:7:12 | arg1 | provenance | | | execa.js:7:26:7:32 | req.url | execa.js:7:16:7:39 | url.par ... , true) | provenance | | -| execa.js:8:9:8:53 | arg2 | execa.js:30:37:30:40 | arg2 | provenance | | -| execa.js:8:9:8:53 | arg2 | execa.js:31:37:31:40 | arg2 | provenance | | -| execa.js:8:9:8:53 | arg2 | execa.js:33:35:33:38 | arg2 | provenance | | -| execa.js:8:9:8:53 | arg2 | execa.js:34:35:34:38 | arg2 | provenance | | -| execa.js:8:16:8:39 | url.par ... , true) | execa.js:8:9:8:53 | arg2 | provenance | | +| execa.js:8:9:8:12 | arg2 | execa.js:30:37:30:40 | arg2 | provenance | | +| execa.js:8:9:8:12 | arg2 | execa.js:31:37:31:40 | arg2 | provenance | | +| execa.js:8:9:8:12 | arg2 | execa.js:33:35:33:38 | arg2 | provenance | | +| execa.js:8:9:8:12 | arg2 | execa.js:34:35:34:38 | arg2 | provenance | | +| execa.js:8:16:8:39 | url.par ... , true) | execa.js:8:9:8:12 | arg2 | provenance | | | execa.js:8:26:8:32 | req.url | execa.js:8:16:8:39 | url.par ... , true) | provenance | | -| execa.js:9:9:9:53 | arg3 | execa.js:30:44:30:47 | arg3 | provenance | | -| execa.js:9:9:9:53 | arg3 | execa.js:31:44:31:47 | arg3 | provenance | | -| execa.js:9:9:9:53 | arg3 | execa.js:33:42:33:45 | arg3 | provenance | | -| execa.js:9:9:9:53 | arg3 | execa.js:34:42:34:45 | arg3 | provenance | | -| execa.js:9:16:9:39 | url.par ... , true) | execa.js:9:9:9:53 | arg3 | provenance | | +| execa.js:9:9:9:12 | arg3 | execa.js:30:44:30:47 | arg3 | provenance | | +| execa.js:9:9:9:12 | arg3 | execa.js:31:44:31:47 | arg3 | provenance | | +| execa.js:9:9:9:12 | arg3 | execa.js:33:42:33:45 | arg3 | provenance | | +| execa.js:9:9:9:12 | arg3 | execa.js:34:42:34:45 | arg3 | provenance | | +| execa.js:9:16:9:39 | url.par ... , true) | execa.js:9:9:9:12 | arg3 | provenance | | | execa.js:9:26:9:32 | req.url | execa.js:9:16:9:39 | url.par ... , true) | provenance | | | execa.js:30:24:30:26 | cmd | execa.js:30:24:30:47 | cmd + a ... + arg3 | provenance | | | execa.js:30:30:30:33 | arg1 | execa.js:30:24:30:47 | cmd + a ... + arg3 | provenance | | @@ -239,37 +239,37 @@ edges | form-parsers.js:53:21:53:26 | fields | form-parsers.js:53:10:53:31 | "touch ... ds.name | provenance | | | form-parsers.js:58:30:58:33 | part | form-parsers.js:59:21:59:24 | part | provenance | | | form-parsers.js:59:21:59:24 | part | form-parsers.js:59:10:59:33 | "touch ... ilename | provenance | | -| other.js:5:9:5:49 | cmd | other.js:7:33:7:35 | cmd | provenance | | -| other.js:5:9:5:49 | cmd | other.js:8:28:8:30 | cmd | provenance | | -| other.js:5:9:5:49 | cmd | other.js:9:32:9:34 | cmd | provenance | | -| other.js:5:9:5:49 | cmd | other.js:10:29:10:31 | cmd | provenance | | -| other.js:5:9:5:49 | cmd | other.js:11:29:11:31 | cmd | provenance | | -| other.js:5:9:5:49 | cmd | other.js:12:27:12:29 | cmd | provenance | | -| other.js:5:9:5:49 | cmd | other.js:14:28:14:30 | cmd | provenance | | -| other.js:5:9:5:49 | cmd | other.js:15:34:15:36 | cmd | provenance | | -| other.js:5:9:5:49 | cmd | other.js:16:21:16:23 | cmd | provenance | | -| other.js:5:9:5:49 | cmd | other.js:17:27:17:29 | cmd | provenance | | -| other.js:5:9:5:49 | cmd | other.js:18:22:18:24 | cmd | provenance | | -| other.js:5:9:5:49 | cmd | other.js:19:36:19:38 | cmd | provenance | | -| other.js:5:9:5:49 | cmd | other.js:22:21:22:23 | cmd | provenance | | -| other.js:5:9:5:49 | cmd | other.js:23:28:23:30 | cmd | provenance | | -| other.js:5:9:5:49 | cmd | other.js:26:34:26:36 | cmd | provenance | | -| other.js:5:9:5:49 | cmd | other.js:28:27:28:29 | cmd | provenance | | -| other.js:5:9:5:49 | cmd | other.js:30:33:30:35 | cmd | provenance | | -| other.js:5:9:5:49 | cmd | other.js:34:44:34:46 | cmd | provenance | | -| other.js:5:15:5:38 | url.par ... , true) | other.js:5:9:5:49 | cmd | provenance | | +| other.js:5:9:5:11 | cmd | other.js:7:33:7:35 | cmd | provenance | | +| other.js:5:9:5:11 | cmd | other.js:8:28:8:30 | cmd | provenance | | +| other.js:5:9:5:11 | cmd | other.js:9:32:9:34 | cmd | provenance | | +| other.js:5:9:5:11 | cmd | other.js:10:29:10:31 | cmd | provenance | | +| other.js:5:9:5:11 | cmd | other.js:11:29:11:31 | cmd | provenance | | +| other.js:5:9:5:11 | cmd | other.js:12:27:12:29 | cmd | provenance | | +| other.js:5:9:5:11 | cmd | other.js:14:28:14:30 | cmd | provenance | | +| other.js:5:9:5:11 | cmd | other.js:15:34:15:36 | cmd | provenance | | +| other.js:5:9:5:11 | cmd | other.js:16:21:16:23 | cmd | provenance | | +| other.js:5:9:5:11 | cmd | other.js:17:27:17:29 | cmd | provenance | | +| other.js:5:9:5:11 | cmd | other.js:18:22:18:24 | cmd | provenance | | +| other.js:5:9:5:11 | cmd | other.js:19:36:19:38 | cmd | provenance | | +| other.js:5:9:5:11 | cmd | other.js:22:21:22:23 | cmd | provenance | | +| other.js:5:9:5:11 | cmd | other.js:23:28:23:30 | cmd | provenance | | +| other.js:5:9:5:11 | cmd | other.js:26:34:26:36 | cmd | provenance | | +| other.js:5:9:5:11 | cmd | other.js:28:27:28:29 | cmd | provenance | | +| other.js:5:9:5:11 | cmd | other.js:30:33:30:35 | cmd | provenance | | +| other.js:5:9:5:11 | cmd | other.js:34:44:34:46 | cmd | provenance | | +| other.js:5:15:5:38 | url.par ... , true) | other.js:5:9:5:11 | cmd | provenance | | | other.js:5:25:5:31 | req.url | other.js:5:15:5:38 | url.par ... , true) | provenance | | | third-party-command-injection.js:5:20:5:26 | command | third-party-command-injection.js:6:21:6:27 | command | provenance | | nodes -| actions.js:8:9:8:57 | title | semmle.label | title | +| actions.js:8:9:8:13 | title | semmle.label | title | | actions.js:8:17:8:57 | github. ... t.title | semmle.label | github. ... t.title | | actions.js:9:8:9:22 | `echo ${title}` | semmle.label | `echo ${title}` | | actions.js:9:16:9:20 | title | semmle.label | title | -| actions.js:18:9:18:63 | head_ref | semmle.label | head_ref | +| actions.js:18:9:18:16 | head_ref | semmle.label | head_ref | | actions.js:18:20:18:63 | github. ... ead.ref | semmle.label | github. ... ead.ref | | actions.js:19:14:19:31 | `echo ${head_ref}` | semmle.label | `echo ${head_ref}` | | actions.js:19:22:19:29 | head_ref | semmle.label | head_ref | -| child_process-test.js:6:9:6:49 | cmd | semmle.label | cmd | +| child_process-test.js:6:9:6:11 | cmd | semmle.label | cmd | | child_process-test.js:6:15:6:38 | url.par ... , true) | semmle.label | url.par ... , true) | | child_process-test.js:6:15:6:49 | url.par ... ry.path | semmle.label | url.par ... ry.path | | child_process-test.js:6:15:6:49 | url.par ... ry.path | semmle.label | url.par ... ry.path | @@ -297,17 +297,17 @@ nodes | child_process-test.js:57:25:57:49 | ['/C', ... at(cmd) | semmle.label | ['/C', ... at(cmd) | | child_process-test.js:57:46:57:48 | cmd | semmle.label | cmd | | child_process-test.js:66:19:66:22 | args | semmle.label | args | -| child_process-test.js:73:9:73:49 | cmd | semmle.label | cmd | +| child_process-test.js:73:9:73:11 | cmd | semmle.label | cmd | | child_process-test.js:73:15:73:38 | url.par ... , true) | semmle.label | url.par ... , true) | | child_process-test.js:73:25:73:31 | req.url | semmle.label | req.url | | child_process-test.js:75:29:75:31 | cmd | semmle.label | cmd | | child_process-test.js:83:19:83:36 | req.query.fileName | semmle.label | req.query.fileName | | child_process-test.js:94:11:94:35 | "ping " ... ms.host | semmle.label | "ping " ... ms.host | | child_process-test.js:94:21:94:30 | ctx.params | semmle.label | ctx.params | -| command-line-libs.js:9:9:9:34 | args | semmle.label | args | +| command-line-libs.js:9:9:9:12 | args | semmle.label | args | | command-line-libs.js:9:16:9:23 | req.body | semmle.label | req.body | | command-line-libs.js:12:17:12:20 | args | semmle.label | args | -| command-line-libs.js:13:9:13:32 | options | semmle.label | options | +| command-line-libs.js:13:9:13:15 | options | semmle.label | options | | command-line-libs.js:13:19:13:32 | program.opts() | semmle.label | program.opts() | | command-line-libs.js:14:8:14:14 | options | semmle.label | options | | command-line-libs.js:14:8:14:18 | options.cmd | semmle.label | options.cmd | @@ -315,21 +315,21 @@ nodes | command-line-libs.js:20:14:20:19 | script | semmle.label | script | | command-line-libs.js:21:12:21:17 | script | semmle.label | script | | command-line-libs.js:23:29:23:32 | args | semmle.label | args | -| command-line-libs.js:27:11:27:41 | argsArray | semmle.label | argsArray | +| command-line-libs.js:27:11:27:19 | argsArray | semmle.label | argsArray | | command-line-libs.js:27:23:27:30 | req.body | semmle.label | req.body | -| command-line-libs.js:28:11:28:64 | parsed | semmle.label | parsed | +| command-line-libs.js:28:11:28:16 | parsed | semmle.label | parsed | | command-line-libs.js:28:20:28:64 | arg({ ' ... rray }) | semmle.label | arg({ ' ... rray }) | | command-line-libs.js:28:53:28:61 | argsArray | semmle.label | argsArray | | command-line-libs.js:29:10:29:15 | parsed | semmle.label | parsed | | command-line-libs.js:29:10:29:24 | parsed['--cmd'] | semmle.label | parsed['--cmd'] | -| command-line-libs.js:35:9:35:83 | options | semmle.label | options | +| command-line-libs.js:35:9:35:15 | options | semmle.label | options | | command-line-libs.js:35:19:35:83 | command ... \| [] }) | semmle.label | command ... \| [] }) | | command-line-libs.js:35:62:35:69 | req.body | semmle.label | req.body | | command-line-libs.js:37:8:37:14 | options | semmle.label | options | | command-line-libs.js:37:8:37:18 | options.cmd | semmle.label | options.cmd | -| command-line-libs.js:42:9:42:34 | args | semmle.label | args | +| command-line-libs.js:42:9:42:12 | args | semmle.label | args | | command-line-libs.js:42:16:42:23 | req.body | semmle.label | req.body | -| command-line-libs.js:43:9:47:12 | parsed | semmle.label | parsed | +| command-line-libs.js:43:9:43:14 | parsed | semmle.label | parsed | | command-line-libs.js:43:18:43:28 | yargs(args) | semmle.label | yargs(args) | | command-line-libs.js:43:18:47:4 | yargs(a ... ue\\n }) | semmle.label | yargs(a ... ue\\n }) | | command-line-libs.js:43:18:47:12 | yargs(a ... parse() | semmle.label | yargs(a ... parse() | @@ -338,13 +338,13 @@ nodes | command-line-libs.js:49:8:49:17 | parsed.cmd | semmle.label | parsed.cmd | | exec-sh2.js:9:17:9:23 | command | semmle.label | command | | exec-sh2.js:10:40:10:46 | command | semmle.label | command | -| exec-sh2.js:14:9:14:49 | cmd | semmle.label | cmd | +| exec-sh2.js:14:9:14:11 | cmd | semmle.label | cmd | | exec-sh2.js:14:15:14:38 | url.par ... , true) | semmle.label | url.par ... , true) | | exec-sh2.js:14:25:14:31 | req.url | semmle.label | req.url | | exec-sh2.js:15:12:15:14 | cmd | semmle.label | cmd | | exec-sh.js:13:17:13:23 | command | semmle.label | command | | exec-sh.js:15:44:15:50 | command | semmle.label | command | -| exec-sh.js:19:9:19:49 | cmd | semmle.label | cmd | +| exec-sh.js:19:9:19:11 | cmd | semmle.label | cmd | | exec-sh.js:19:15:19:38 | url.par ... , true) | semmle.label | url.par ... , true) | | exec-sh.js:19:25:19:31 | req.url | semmle.label | req.url | | exec-sh.js:20:12:20:14 | cmd | semmle.label | cmd | @@ -356,21 +356,21 @@ nodes | execSeries.js:14:13:14:20 | commands [0] | semmle.label | commands [0] | | execSeries.js:14:24:14:30 | command | semmle.label | command | | execSeries.js:14:41:14:47 | command | semmle.label | command | -| execSeries.js:18:7:18:58 | cmd | semmle.label | cmd | +| execSeries.js:18:7:18:9 | cmd | semmle.label | cmd | | execSeries.js:18:13:18:47 | require ... , true) | semmle.label | require ... , true) | | execSeries.js:18:34:18:40 | req.url | semmle.label | req.url | | execSeries.js:19:12:19:16 | [cmd] [0] | semmle.label | [cmd] [0] | | execSeries.js:19:13:19:15 | cmd | semmle.label | cmd | -| execa.js:6:9:6:54 | cmd | semmle.label | cmd | +| execa.js:6:9:6:11 | cmd | semmle.label | cmd | | execa.js:6:15:6:38 | url.par ... , true) | semmle.label | url.par ... , true) | | execa.js:6:25:6:31 | req.url | semmle.label | req.url | -| execa.js:7:9:7:53 | arg1 | semmle.label | arg1 | +| execa.js:7:9:7:12 | arg1 | semmle.label | arg1 | | execa.js:7:16:7:39 | url.par ... , true) | semmle.label | url.par ... , true) | | execa.js:7:26:7:32 | req.url | semmle.label | req.url | -| execa.js:8:9:8:53 | arg2 | semmle.label | arg2 | +| execa.js:8:9:8:12 | arg2 | semmle.label | arg2 | | execa.js:8:16:8:39 | url.par ... , true) | semmle.label | url.par ... , true) | | execa.js:8:26:8:32 | req.url | semmle.label | req.url | -| execa.js:9:9:9:53 | arg3 | semmle.label | arg3 | +| execa.js:9:9:9:12 | arg3 | semmle.label | arg3 | | execa.js:9:16:9:39 | url.par ... , true) | semmle.label | url.par ... , true) | | execa.js:9:26:9:32 | req.url | semmle.label | req.url | | execa.js:11:15:11:17 | cmd | semmle.label | cmd | @@ -425,7 +425,7 @@ nodes | form-parsers.js:58:30:58:33 | part | semmle.label | part | | form-parsers.js:59:10:59:33 | "touch ... ilename | semmle.label | "touch ... ilename | | form-parsers.js:59:21:59:24 | part | semmle.label | part | -| other.js:5:9:5:49 | cmd | semmle.label | cmd | +| other.js:5:9:5:11 | cmd | semmle.label | cmd | | other.js:5:15:5:38 | url.par ... , true) | semmle.label | url.par ... , true) | | other.js:5:25:5:31 | req.url | semmle.label | req.url | | other.js:7:33:7:35 | cmd | semmle.label | cmd | diff --git a/javascript/ql/test/query-tests/Security/CWE-078/IndirectCommandInjection/IndirectCommandInjection.expected b/javascript/ql/test/query-tests/Security/CWE-078/IndirectCommandInjection/IndirectCommandInjection.expected index 9fc6f6b1bc4e..ee906376953a 100644 --- a/javascript/ql/test/query-tests/Security/CWE-078/IndirectCommandInjection/IndirectCommandInjection.expected +++ b/javascript/ql/test/query-tests/Security/CWE-078/IndirectCommandInjection/IndirectCommandInjection.expected @@ -51,51 +51,51 @@ edges | actions.js:19:22:19:32 | shelljs.env | actions.js:19:10:19:37 | 'rm -rf ... nv.SOME | provenance | | | actions.js:20:22:20:32 | shelljs.env | actions.js:20:10:20:32 | 'rm -rf ... ljs.env | provenance | | | command-line-parameter-command-injection.js:8:22:8:33 | process.argv | command-line-parameter-command-injection.js:8:10:8:36 | "cmd.sh ... argv[2] | provenance | | -| command-line-parameter-command-injection.js:10:6:10:33 | args | command-line-parameter-command-injection.js:11:14:11:17 | args | provenance | | -| command-line-parameter-command-injection.js:10:6:10:33 | args | command-line-parameter-command-injection.js:12:26:12:29 | args | provenance | | -| command-line-parameter-command-injection.js:10:6:10:33 | args | command-line-parameter-command-injection.js:14:18:14:21 | args | provenance | | -| command-line-parameter-command-injection.js:10:6:10:33 | args [ArrayElement] | command-line-parameter-command-injection.js:11:14:11:17 | args [ArrayElement] | provenance | | -| command-line-parameter-command-injection.js:10:6:10:33 | args [ArrayElement] | command-line-parameter-command-injection.js:12:26:12:29 | args [ArrayElement] | provenance | | -| command-line-parameter-command-injection.js:10:6:10:33 | args [ArrayElement] | command-line-parameter-command-injection.js:14:18:14:21 | args [ArrayElement] | provenance | | +| command-line-parameter-command-injection.js:10:6:10:9 | args | command-line-parameter-command-injection.js:11:14:11:17 | args | provenance | | +| command-line-parameter-command-injection.js:10:6:10:9 | args | command-line-parameter-command-injection.js:12:26:12:29 | args | provenance | | +| command-line-parameter-command-injection.js:10:6:10:9 | args | command-line-parameter-command-injection.js:14:18:14:21 | args | provenance | | +| command-line-parameter-command-injection.js:10:6:10:9 | args [ArrayElement] | command-line-parameter-command-injection.js:11:14:11:17 | args [ArrayElement] | provenance | | +| command-line-parameter-command-injection.js:10:6:10:9 | args [ArrayElement] | command-line-parameter-command-injection.js:12:26:12:29 | args [ArrayElement] | provenance | | +| command-line-parameter-command-injection.js:10:6:10:9 | args [ArrayElement] | command-line-parameter-command-injection.js:14:18:14:21 | args [ArrayElement] | provenance | | | command-line-parameter-command-injection.js:10:13:10:24 | process.argv | command-line-parameter-command-injection.js:10:13:10:33 | process ... lice(2) | provenance | | | command-line-parameter-command-injection.js:10:13:10:24 | process.argv | command-line-parameter-command-injection.js:10:13:10:33 | process ... lice(2) [ArrayElement] | provenance | | -| command-line-parameter-command-injection.js:10:13:10:33 | process ... lice(2) | command-line-parameter-command-injection.js:10:6:10:33 | args | provenance | | -| command-line-parameter-command-injection.js:10:13:10:33 | process ... lice(2) [ArrayElement] | command-line-parameter-command-injection.js:10:6:10:33 | args [ArrayElement] | provenance | | +| command-line-parameter-command-injection.js:10:13:10:33 | process ... lice(2) | command-line-parameter-command-injection.js:10:6:10:9 | args | provenance | | +| command-line-parameter-command-injection.js:10:13:10:33 | process ... lice(2) [ArrayElement] | command-line-parameter-command-injection.js:10:6:10:9 | args [ArrayElement] | provenance | | | command-line-parameter-command-injection.js:11:14:11:17 | args | command-line-parameter-command-injection.js:11:14:11:20 | args[0] | provenance | | | command-line-parameter-command-injection.js:11:14:11:17 | args [ArrayElement] | command-line-parameter-command-injection.js:11:14:11:20 | args[0] | provenance | | | command-line-parameter-command-injection.js:12:26:12:29 | args | command-line-parameter-command-injection.js:12:14:12:32 | "cmd.sh " + args[0] | provenance | | | command-line-parameter-command-injection.js:12:26:12:29 | args [ArrayElement] | command-line-parameter-command-injection.js:12:26:12:32 | args[0] | provenance | | | command-line-parameter-command-injection.js:12:26:12:32 | args[0] | command-line-parameter-command-injection.js:12:14:12:32 | "cmd.sh " + args[0] | provenance | | -| command-line-parameter-command-injection.js:14:6:14:30 | fewerArgs | command-line-parameter-command-injection.js:15:14:15:22 | fewerArgs | provenance | | -| command-line-parameter-command-injection.js:14:6:14:30 | fewerArgs | command-line-parameter-command-injection.js:16:26:16:34 | fewerArgs | provenance | | -| command-line-parameter-command-injection.js:14:6:14:30 | fewerArgs | command-line-parameter-command-injection.js:18:13:18:21 | fewerArgs | provenance | | -| command-line-parameter-command-injection.js:14:6:14:30 | fewerArgs [ArrayElement] | command-line-parameter-command-injection.js:15:14:15:22 | fewerArgs [ArrayElement] | provenance | | -| command-line-parameter-command-injection.js:14:6:14:30 | fewerArgs [ArrayElement] | command-line-parameter-command-injection.js:16:26:16:34 | fewerArgs [ArrayElement] | provenance | | -| command-line-parameter-command-injection.js:14:6:14:30 | fewerArgs [ArrayElement] | command-line-parameter-command-injection.js:18:13:18:21 | fewerArgs [ArrayElement] | provenance | | +| command-line-parameter-command-injection.js:14:6:14:14 | fewerArgs | command-line-parameter-command-injection.js:15:14:15:22 | fewerArgs | provenance | | +| command-line-parameter-command-injection.js:14:6:14:14 | fewerArgs | command-line-parameter-command-injection.js:16:26:16:34 | fewerArgs | provenance | | +| command-line-parameter-command-injection.js:14:6:14:14 | fewerArgs | command-line-parameter-command-injection.js:18:13:18:21 | fewerArgs | provenance | | +| command-line-parameter-command-injection.js:14:6:14:14 | fewerArgs [ArrayElement] | command-line-parameter-command-injection.js:15:14:15:22 | fewerArgs [ArrayElement] | provenance | | +| command-line-parameter-command-injection.js:14:6:14:14 | fewerArgs [ArrayElement] | command-line-parameter-command-injection.js:16:26:16:34 | fewerArgs [ArrayElement] | provenance | | +| command-line-parameter-command-injection.js:14:6:14:14 | fewerArgs [ArrayElement] | command-line-parameter-command-injection.js:18:13:18:21 | fewerArgs [ArrayElement] | provenance | | | command-line-parameter-command-injection.js:14:18:14:21 | args | command-line-parameter-command-injection.js:14:18:14:30 | args.slice(1) | provenance | | | command-line-parameter-command-injection.js:14:18:14:21 | args | command-line-parameter-command-injection.js:14:18:14:30 | args.slice(1) [ArrayElement] | provenance | | | command-line-parameter-command-injection.js:14:18:14:21 | args [ArrayElement] | command-line-parameter-command-injection.js:14:18:14:30 | args.slice(1) [ArrayElement] | provenance | | -| command-line-parameter-command-injection.js:14:18:14:30 | args.slice(1) | command-line-parameter-command-injection.js:14:6:14:30 | fewerArgs | provenance | | -| command-line-parameter-command-injection.js:14:18:14:30 | args.slice(1) [ArrayElement] | command-line-parameter-command-injection.js:14:6:14:30 | fewerArgs [ArrayElement] | provenance | | +| command-line-parameter-command-injection.js:14:18:14:30 | args.slice(1) | command-line-parameter-command-injection.js:14:6:14:14 | fewerArgs | provenance | | +| command-line-parameter-command-injection.js:14:18:14:30 | args.slice(1) [ArrayElement] | command-line-parameter-command-injection.js:14:6:14:14 | fewerArgs [ArrayElement] | provenance | | | command-line-parameter-command-injection.js:15:14:15:22 | fewerArgs | command-line-parameter-command-injection.js:15:14:15:25 | fewerArgs[0] | provenance | | | command-line-parameter-command-injection.js:15:14:15:22 | fewerArgs [ArrayElement] | command-line-parameter-command-injection.js:15:14:15:25 | fewerArgs[0] | provenance | | | command-line-parameter-command-injection.js:16:26:16:34 | fewerArgs | command-line-parameter-command-injection.js:16:14:16:37 | "cmd.sh ... Args[0] | provenance | | | command-line-parameter-command-injection.js:16:26:16:34 | fewerArgs [ArrayElement] | command-line-parameter-command-injection.js:16:26:16:37 | fewerArgs[0] | provenance | | | command-line-parameter-command-injection.js:16:26:16:37 | fewerArgs[0] | command-line-parameter-command-injection.js:16:14:16:37 | "cmd.sh ... Args[0] | provenance | | -| command-line-parameter-command-injection.js:18:6:18:24 | arg0 | command-line-parameter-command-injection.js:19:14:19:17 | arg0 | provenance | | -| command-line-parameter-command-injection.js:18:6:18:24 | arg0 | command-line-parameter-command-injection.js:20:26:20:29 | arg0 | provenance | | -| command-line-parameter-command-injection.js:18:13:18:21 | fewerArgs | command-line-parameter-command-injection.js:18:6:18:24 | arg0 | provenance | | +| command-line-parameter-command-injection.js:18:6:18:9 | arg0 | command-line-parameter-command-injection.js:19:14:19:17 | arg0 | provenance | | +| command-line-parameter-command-injection.js:18:6:18:9 | arg0 | command-line-parameter-command-injection.js:20:26:20:29 | arg0 | provenance | | +| command-line-parameter-command-injection.js:18:13:18:21 | fewerArgs | command-line-parameter-command-injection.js:18:6:18:9 | arg0 | provenance | | | command-line-parameter-command-injection.js:18:13:18:21 | fewerArgs [ArrayElement] | command-line-parameter-command-injection.js:18:13:18:24 | fewerArgs[0] | provenance | | -| command-line-parameter-command-injection.js:18:13:18:24 | fewerArgs[0] | command-line-parameter-command-injection.js:18:6:18:24 | arg0 | provenance | | +| command-line-parameter-command-injection.js:18:13:18:24 | fewerArgs[0] | command-line-parameter-command-injection.js:18:6:18:9 | arg0 | provenance | | | command-line-parameter-command-injection.js:20:26:20:29 | arg0 | command-line-parameter-command-injection.js:20:14:20:29 | "cmd.sh " + arg0 | provenance | | -| command-line-parameter-command-injection.js:24:8:24:35 | args | command-line-parameter-command-injection.js:26:32:26:35 | args | provenance | | -| command-line-parameter-command-injection.js:24:8:24:35 | args | command-line-parameter-command-injection.js:27:32:27:35 | args | provenance | | -| command-line-parameter-command-injection.js:24:8:24:35 | args [ArrayElement] | command-line-parameter-command-injection.js:26:32:26:35 | args [ArrayElement] | provenance | | -| command-line-parameter-command-injection.js:24:8:24:35 | args [ArrayElement] | command-line-parameter-command-injection.js:27:32:27:35 | args [ArrayElement] | provenance | | +| command-line-parameter-command-injection.js:24:8:24:11 | args | command-line-parameter-command-injection.js:26:32:26:35 | args | provenance | | +| command-line-parameter-command-injection.js:24:8:24:11 | args | command-line-parameter-command-injection.js:27:32:27:35 | args | provenance | | +| command-line-parameter-command-injection.js:24:8:24:11 | args [ArrayElement] | command-line-parameter-command-injection.js:26:32:26:35 | args [ArrayElement] | provenance | | +| command-line-parameter-command-injection.js:24:8:24:11 | args [ArrayElement] | command-line-parameter-command-injection.js:27:32:27:35 | args [ArrayElement] | provenance | | | command-line-parameter-command-injection.js:24:15:24:26 | process.argv | command-line-parameter-command-injection.js:24:15:24:35 | process ... lice(2) | provenance | | | command-line-parameter-command-injection.js:24:15:24:26 | process.argv | command-line-parameter-command-injection.js:24:15:24:35 | process ... lice(2) [ArrayElement] | provenance | | -| command-line-parameter-command-injection.js:24:15:24:35 | process ... lice(2) | command-line-parameter-command-injection.js:24:8:24:35 | args | provenance | | -| command-line-parameter-command-injection.js:24:15:24:35 | process ... lice(2) [ArrayElement] | command-line-parameter-command-injection.js:24:8:24:35 | args [ArrayElement] | provenance | | +| command-line-parameter-command-injection.js:24:15:24:35 | process ... lice(2) | command-line-parameter-command-injection.js:24:8:24:11 | args | provenance | | +| command-line-parameter-command-injection.js:24:15:24:35 | process ... lice(2) [ArrayElement] | command-line-parameter-command-injection.js:24:8:24:11 | args [ArrayElement] | provenance | | | command-line-parameter-command-injection.js:26:32:26:35 | args | command-line-parameter-command-injection.js:26:14:26:50 | `node $ ... ption"` | provenance | | | command-line-parameter-command-injection.js:26:32:26:35 | args [ArrayElement] | command-line-parameter-command-injection.js:26:32:26:38 | args[0] | provenance | | | command-line-parameter-command-injection.js:26:32:26:38 | args[0] | command-line-parameter-command-injection.js:26:14:26:50 | `node $ ... ption"` | provenance | | @@ -105,43 +105,43 @@ edges | command-line-parameter-command-injection.js:30:21:30:46 | require ... rgs")() | command-line-parameter-command-injection.js:30:9:30:50 | "cmd.sh ... )().foo | provenance | | | command-line-parameter-command-injection.js:32:21:32:41 | require ... ").argv | command-line-parameter-command-injection.js:32:9:32:45 | "cmd.sh ... rgv.foo | provenance | | | command-line-parameter-command-injection.js:33:21:33:44 | require ... ").argv | command-line-parameter-command-injection.js:33:9:33:48 | "cmd.sh ... rgv.foo | provenance | | -| command-line-parameter-command-injection.js:36:6:39:7 | args | command-line-parameter-command-injection.js:41:22:41:25 | args | provenance | | -| command-line-parameter-command-injection.js:36:13:39:7 | require ... \\t\\t.argv | command-line-parameter-command-injection.js:36:6:39:7 | args | provenance | | +| command-line-parameter-command-injection.js:36:6:36:9 | args | command-line-parameter-command-injection.js:41:22:41:25 | args | provenance | | +| command-line-parameter-command-injection.js:36:13:39:7 | require ... \\t\\t.argv | command-line-parameter-command-injection.js:36:6:36:9 | args | provenance | | | command-line-parameter-command-injection.js:41:22:41:25 | args | command-line-parameter-command-injection.js:41:10:41:25 | "cmd.sh " + args | provenance | | | command-line-parameter-command-injection.js:43:22:43:58 | require ... parse() | command-line-parameter-command-injection.js:43:10:43:62 | "cmd.sh ... e().foo | provenance | | -| command-line-parameter-command-injection.js:47:8:53:12 | args | command-line-parameter-command-injection.js:55:22:55:25 | args | provenance | | | command-line-parameter-command-injection.js:48:3:50:3 | argv: { ... rgs\\n\\t\\t} | command-line-parameter-command-injection.js:48:9:50:3 | {\\n\\t\\t\\t...args\\n\\t\\t} | provenance | | -| command-line-parameter-command-injection.js:48:9:50:3 | {\\n\\t\\t\\t...args\\n\\t\\t} | command-line-parameter-command-injection.js:47:8:53:12 | args | provenance | | +| command-line-parameter-command-injection.js:48:9:50:3 | {\\n\\t\\t\\t...args\\n\\t\\t} | command-line-parameter-command-injection.js:49:7:49:10 | args | provenance | | +| command-line-parameter-command-injection.js:49:7:49:10 | args | command-line-parameter-command-injection.js:55:22:55:25 | args | provenance | | | command-line-parameter-command-injection.js:55:22:55:25 | args | command-line-parameter-command-injection.js:55:10:55:25 | "cmd.sh " + args | provenance | | -| command-line-parameter-command-injection.js:57:6:57:37 | tainted1 | command-line-parameter-command-injection.js:61:11:61:18 | tainted1 | provenance | | -| command-line-parameter-command-injection.js:57:17:57:37 | require ... ').argv | command-line-parameter-command-injection.js:57:6:57:37 | tainted1 | provenance | | -| command-line-parameter-command-injection.js:58:6:58:40 | tainted2 | command-line-parameter-command-injection.js:62:11:62:18 | tainted2 | provenance | | -| command-line-parameter-command-injection.js:58:17:58:40 | require ... parse() | command-line-parameter-command-injection.js:58:6:58:40 | tainted2 | provenance | | +| command-line-parameter-command-injection.js:57:6:57:13 | tainted1 | command-line-parameter-command-injection.js:61:11:61:18 | tainted1 | provenance | | +| command-line-parameter-command-injection.js:57:17:57:37 | require ... ').argv | command-line-parameter-command-injection.js:57:6:57:13 | tainted1 | provenance | | +| command-line-parameter-command-injection.js:58:6:58:13 | tainted2 | command-line-parameter-command-injection.js:62:11:62:18 | tainted2 | provenance | | +| command-line-parameter-command-injection.js:58:17:58:40 | require ... parse() | command-line-parameter-command-injection.js:58:6:58:13 | tainted2 | provenance | | | command-line-parameter-command-injection.js:60:8:60:56 | {taint1 ... 2rest}} [taint1] | command-line-parameter-command-injection.js:60:9:60:31 | taint1: ... t1rest} | provenance | | | command-line-parameter-command-injection.js:60:8:60:56 | {taint1 ... 2rest}} [taint2] | command-line-parameter-command-injection.js:60:33:60:55 | taint2: ... t2rest} | provenance | | -| command-line-parameter-command-injection.js:60:8:63:2 | taint1rest | command-line-parameter-command-injection.js:65:22:65:31 | taint1rest | provenance | | -| command-line-parameter-command-injection.js:60:8:63:2 | taint2rest | command-line-parameter-command-injection.js:66:22:66:31 | taint2rest | provenance | | | command-line-parameter-command-injection.js:60:9:60:31 | taint1: ... t1rest} | command-line-parameter-command-injection.js:60:17:60:31 | {...taint1rest} | provenance | | -| command-line-parameter-command-injection.js:60:17:60:31 | {...taint1rest} | command-line-parameter-command-injection.js:60:8:63:2 | taint1rest | provenance | | +| command-line-parameter-command-injection.js:60:17:60:31 | {...taint1rest} | command-line-parameter-command-injection.js:60:21:60:30 | taint1rest | provenance | | +| command-line-parameter-command-injection.js:60:21:60:30 | taint1rest | command-line-parameter-command-injection.js:65:22:65:31 | taint1rest | provenance | | | command-line-parameter-command-injection.js:60:33:60:55 | taint2: ... t2rest} | command-line-parameter-command-injection.js:60:41:60:55 | {...taint2rest} | provenance | | -| command-line-parameter-command-injection.js:60:41:60:55 | {...taint2rest} | command-line-parameter-command-injection.js:60:8:63:2 | taint2rest | provenance | | +| command-line-parameter-command-injection.js:60:41:60:55 | {...taint2rest} | command-line-parameter-command-injection.js:60:45:60:54 | taint2rest | provenance | | +| command-line-parameter-command-injection.js:60:45:60:54 | taint2rest | command-line-parameter-command-injection.js:66:22:66:31 | taint2rest | provenance | | | command-line-parameter-command-injection.js:60:60:63:2 | {\\n\\t\\ttai ... ted2\\n\\t} [taint1] | command-line-parameter-command-injection.js:60:8:60:56 | {taint1 ... 2rest}} [taint1] | provenance | | | command-line-parameter-command-injection.js:60:60:63:2 | {\\n\\t\\ttai ... ted2\\n\\t} [taint2] | command-line-parameter-command-injection.js:60:8:60:56 | {taint1 ... 2rest}} [taint2] | provenance | | | command-line-parameter-command-injection.js:61:11:61:18 | tainted1 | command-line-parameter-command-injection.js:60:60:63:2 | {\\n\\t\\ttai ... ted2\\n\\t} [taint1] | provenance | | | command-line-parameter-command-injection.js:62:11:62:18 | tainted2 | command-line-parameter-command-injection.js:60:60:63:2 | {\\n\\t\\ttai ... ted2\\n\\t} [taint2] | provenance | | | command-line-parameter-command-injection.js:65:22:65:31 | taint1rest | command-line-parameter-command-injection.js:65:10:65:31 | "cmd.sh ... nt1rest | provenance | | | command-line-parameter-command-injection.js:66:22:66:31 | taint2rest | command-line-parameter-command-injection.js:66:10:66:31 | "cmd.sh ... nt2rest | provenance | | -| command-line-parameter-command-injection.js:68:6:68:16 | {...taint3} | command-line-parameter-command-injection.js:68:6:68:40 | taint3 | provenance | | -| command-line-parameter-command-injection.js:68:6:68:40 | taint3 | command-line-parameter-command-injection.js:69:22:69:27 | taint3 | provenance | | +| command-line-parameter-command-injection.js:68:6:68:16 | {...taint3} | command-line-parameter-command-injection.js:68:10:68:15 | taint3 | provenance | | +| command-line-parameter-command-injection.js:68:10:68:15 | taint3 | command-line-parameter-command-injection.js:69:22:69:27 | taint3 | provenance | | | command-line-parameter-command-injection.js:68:20:68:40 | require ... ').argv | command-line-parameter-command-injection.js:68:6:68:16 | {...taint3} | provenance | | | command-line-parameter-command-injection.js:69:22:69:27 | taint3 | command-line-parameter-command-injection.js:69:10:69:27 | "cmd.sh " + taint3 | provenance | | -| command-line-parameter-command-injection.js:71:6:71:16 | [...taint4] | command-line-parameter-command-injection.js:71:6:71:40 | taint4 | provenance | | -| command-line-parameter-command-injection.js:71:6:71:40 | taint4 | command-line-parameter-command-injection.js:72:22:72:27 | taint4 | provenance | | +| command-line-parameter-command-injection.js:71:6:71:16 | [...taint4] | command-line-parameter-command-injection.js:71:10:71:15 | taint4 | provenance | | +| command-line-parameter-command-injection.js:71:10:71:15 | taint4 | command-line-parameter-command-injection.js:72:22:72:27 | taint4 | provenance | | | command-line-parameter-command-injection.js:71:20:71:40 | require ... ').argv | command-line-parameter-command-injection.js:71:6:71:16 | [...taint4] | provenance | | | command-line-parameter-command-injection.js:72:22:72:27 | taint4 | command-line-parameter-command-injection.js:72:10:72:27 | "cmd.sh " + taint4 | provenance | | -| command-line-parameter-command-injection.js:76:8:76:35 | argv | command-line-parameter-command-injection.js:79:31:79:34 | argv | provenance | | +| command-line-parameter-command-injection.js:76:8:76:11 | argv | command-line-parameter-command-injection.js:79:31:79:34 | argv | provenance | | | command-line-parameter-command-injection.js:76:15:76:26 | process.argv | command-line-parameter-command-injection.js:76:15:76:35 | process ... lice(2) | provenance | | -| command-line-parameter-command-injection.js:76:15:76:35 | process ... lice(2) | command-line-parameter-command-injection.js:76:8:76:35 | argv | provenance | | +| command-line-parameter-command-injection.js:76:15:76:35 | process ... lice(2) | command-line-parameter-command-injection.js:76:8:76:11 | argv | provenance | | | command-line-parameter-command-injection.js:79:22:79:35 | minimist(argv) | command-line-parameter-command-injection.js:79:10:79:39 | "cmd.sh ... gv).foo | provenance | | | command-line-parameter-command-injection.js:79:31:79:34 | argv | command-line-parameter-command-injection.js:79:22:79:35 | minimist(argv) | provenance | | | command-line-parameter-command-injection.js:82:22:82:50 | subarg( ... ice(2)) | command-line-parameter-command-injection.js:82:10:82:54 | "cmd.sh ... 2)).foo | provenance | | @@ -150,28 +150,28 @@ edges | command-line-parameter-command-injection.js:85:22:85:55 | yargsPa ... ice(2)) | command-line-parameter-command-injection.js:85:10:85:59 | "cmd.sh ... 2)).foo | provenance | | | command-line-parameter-command-injection.js:85:34:85:45 | process.argv | command-line-parameter-command-injection.js:85:34:85:54 | process ... lice(2) | provenance | | | command-line-parameter-command-injection.js:85:34:85:54 | process ... lice(2) | command-line-parameter-command-injection.js:85:22:85:55 | yargsPa ... ice(2)) | provenance | | -| command-line-parameter-command-injection.js:88:6:88:37 | flags | command-line-parameter-command-injection.js:89:22:89:26 | flags | provenance | | -| command-line-parameter-command-injection.js:88:14:88:37 | args.pa ... s.argv) | command-line-parameter-command-injection.js:88:6:88:37 | flags | provenance | | +| command-line-parameter-command-injection.js:88:6:88:10 | flags | command-line-parameter-command-injection.js:89:22:89:26 | flags | provenance | | +| command-line-parameter-command-injection.js:88:14:88:37 | args.pa ... s.argv) | command-line-parameter-command-injection.js:88:6:88:10 | flags | provenance | | | command-line-parameter-command-injection.js:88:25:88:36 | process.argv | command-line-parameter-command-injection.js:88:14:88:37 | args.pa ... s.argv) | provenance | | | command-line-parameter-command-injection.js:89:22:89:26 | flags | command-line-parameter-command-injection.js:89:10:89:30 | "cmd.sh ... ags.foo | provenance | | -| command-line-parameter-command-injection.js:91:6:91:38 | flags | command-line-parameter-command-injection.js:92:22:92:26 | flags | provenance | | -| command-line-parameter-command-injection.js:91:14:91:38 | require ... .spec}) | command-line-parameter-command-injection.js:91:6:91:38 | flags | provenance | | +| command-line-parameter-command-injection.js:91:6:91:10 | flags | command-line-parameter-command-injection.js:92:22:92:26 | flags | provenance | | +| command-line-parameter-command-injection.js:91:14:91:38 | require ... .spec}) | command-line-parameter-command-injection.js:91:6:91:10 | flags | provenance | | | command-line-parameter-command-injection.js:92:22:92:26 | flags | command-line-parameter-command-injection.js:92:10:92:30 | "cmd.sh ... ags.foo | provenance | | | command-line-parameter-command-injection.js:102:22:102:40 | parser.parse_args() | command-line-parameter-command-injection.js:102:10:102:44 | "cmd.sh ... s().foo | provenance | | -| command-line-parameter-command-injection.js:107:8:107:51 | options | command-line-parameter-command-injection.js:108:22:108:28 | options | provenance | | -| command-line-parameter-command-injection.js:107:18:107:51 | command ... itions) | command-line-parameter-command-injection.js:107:8:107:51 | options | provenance | | +| command-line-parameter-command-injection.js:107:8:107:14 | options | command-line-parameter-command-injection.js:108:22:108:28 | options | provenance | | +| command-line-parameter-command-injection.js:107:18:107:51 | command ... itions) | command-line-parameter-command-injection.js:107:8:107:14 | options | provenance | | | command-line-parameter-command-injection.js:108:22:108:28 | options | command-line-parameter-command-injection.js:108:10:108:32 | "cmd.sh ... ons.foo | provenance | | -| command-line-parameter-command-injection.js:114:8:114:52 | cli | command-line-parameter-command-injection.js:116:22:116:24 | cli | provenance | | -| command-line-parameter-command-injection.js:114:14:114:52 | meow(`h ... lags}}) | command-line-parameter-command-injection.js:114:8:114:52 | cli | provenance | | +| command-line-parameter-command-injection.js:114:8:114:10 | cli | command-line-parameter-command-injection.js:116:22:116:24 | cli | provenance | | +| command-line-parameter-command-injection.js:114:14:114:52 | meow(`h ... lags}}) | command-line-parameter-command-injection.js:114:8:114:10 | cli | provenance | | | command-line-parameter-command-injection.js:116:22:116:24 | cli | command-line-parameter-command-injection.js:116:10:116:33 | "cmd.sh ... nput[0] | provenance | | -| command-line-parameter-command-injection.js:122:6:122:46 | opts | command-line-parameter-command-injection.js:124:22:124:25 | opts | provenance | | -| command-line-parameter-command-injection.js:122:13:122:46 | dashdas ... tions}) | command-line-parameter-command-injection.js:122:6:122:46 | opts | provenance | | +| command-line-parameter-command-injection.js:122:6:122:9 | opts | command-line-parameter-command-injection.js:124:22:124:25 | opts | provenance | | +| command-line-parameter-command-injection.js:122:13:122:46 | dashdas ... tions}) | command-line-parameter-command-injection.js:122:6:122:9 | opts | provenance | | | command-line-parameter-command-injection.js:124:22:124:25 | opts | command-line-parameter-command-injection.js:124:10:124:29 | "cmd.sh " + opts.foo | provenance | | -| command-line-parameter-command-injection.js:127:6:127:26 | opts | command-line-parameter-command-injection.js:129:22:129:25 | opts | provenance | | -| command-line-parameter-command-injection.js:127:13:127:26 | parser.parse() | command-line-parameter-command-injection.js:127:6:127:26 | opts | provenance | | +| command-line-parameter-command-injection.js:127:6:127:9 | opts | command-line-parameter-command-injection.js:129:22:129:25 | opts | provenance | | +| command-line-parameter-command-injection.js:127:13:127:26 | parser.parse() | command-line-parameter-command-injection.js:127:6:127:9 | opts | provenance | | | command-line-parameter-command-injection.js:129:22:129:25 | opts | command-line-parameter-command-injection.js:129:10:129:29 | "cmd.sh " + opts.foo | provenance | | -| command-line-parameter-command-injection.js:133:8:133:41 | program | command-line-parameter-command-injection.js:137:22:137:28 | program | provenance | | -| command-line-parameter-command-injection.js:133:10:133:16 | program | command-line-parameter-command-injection.js:133:8:133:41 | program | provenance | | +| command-line-parameter-command-injection.js:133:10:133:16 | program | command-line-parameter-command-injection.js:133:10:133:16 | program | provenance | | +| command-line-parameter-command-injection.js:133:10:133:16 | program | command-line-parameter-command-injection.js:137:22:137:28 | program | provenance | | | command-line-parameter-command-injection.js:136:22:136:35 | program.opts() | command-line-parameter-command-injection.js:136:10:136:45 | "cmd.sh ... zzaType | provenance | | | command-line-parameter-command-injection.js:136:22:136:45 | program ... zzaType | command-line-parameter-command-injection.js:136:10:136:45 | "cmd.sh ... zzaType | provenance | | | command-line-parameter-command-injection.js:137:22:137:28 | program | command-line-parameter-command-injection.js:137:10:137:38 | "cmd.sh ... zzaType | provenance | | @@ -196,8 +196,8 @@ nodes | command-line-parameter-command-injection.js:4:10:4:21 | process.argv | semmle.label | process.argv | | command-line-parameter-command-injection.js:8:10:8:36 | "cmd.sh ... argv[2] | semmle.label | "cmd.sh ... argv[2] | | command-line-parameter-command-injection.js:8:22:8:33 | process.argv | semmle.label | process.argv | -| command-line-parameter-command-injection.js:10:6:10:33 | args | semmle.label | args | -| command-line-parameter-command-injection.js:10:6:10:33 | args [ArrayElement] | semmle.label | args [ArrayElement] | +| command-line-parameter-command-injection.js:10:6:10:9 | args | semmle.label | args | +| command-line-parameter-command-injection.js:10:6:10:9 | args [ArrayElement] | semmle.label | args [ArrayElement] | | command-line-parameter-command-injection.js:10:13:10:24 | process.argv | semmle.label | process.argv | | command-line-parameter-command-injection.js:10:13:10:33 | process ... lice(2) | semmle.label | process ... lice(2) | | command-line-parameter-command-injection.js:10:13:10:33 | process ... lice(2) [ArrayElement] | semmle.label | process ... lice(2) [ArrayElement] | @@ -208,8 +208,8 @@ nodes | command-line-parameter-command-injection.js:12:26:12:29 | args | semmle.label | args | | command-line-parameter-command-injection.js:12:26:12:29 | args [ArrayElement] | semmle.label | args [ArrayElement] | | command-line-parameter-command-injection.js:12:26:12:32 | args[0] | semmle.label | args[0] | -| command-line-parameter-command-injection.js:14:6:14:30 | fewerArgs | semmle.label | fewerArgs | -| command-line-parameter-command-injection.js:14:6:14:30 | fewerArgs [ArrayElement] | semmle.label | fewerArgs [ArrayElement] | +| command-line-parameter-command-injection.js:14:6:14:14 | fewerArgs | semmle.label | fewerArgs | +| command-line-parameter-command-injection.js:14:6:14:14 | fewerArgs [ArrayElement] | semmle.label | fewerArgs [ArrayElement] | | command-line-parameter-command-injection.js:14:18:14:21 | args | semmle.label | args | | command-line-parameter-command-injection.js:14:18:14:21 | args [ArrayElement] | semmle.label | args [ArrayElement] | | command-line-parameter-command-injection.js:14:18:14:30 | args.slice(1) | semmle.label | args.slice(1) | @@ -221,15 +221,15 @@ nodes | command-line-parameter-command-injection.js:16:26:16:34 | fewerArgs | semmle.label | fewerArgs | | command-line-parameter-command-injection.js:16:26:16:34 | fewerArgs [ArrayElement] | semmle.label | fewerArgs [ArrayElement] | | command-line-parameter-command-injection.js:16:26:16:37 | fewerArgs[0] | semmle.label | fewerArgs[0] | -| command-line-parameter-command-injection.js:18:6:18:24 | arg0 | semmle.label | arg0 | +| command-line-parameter-command-injection.js:18:6:18:9 | arg0 | semmle.label | arg0 | | command-line-parameter-command-injection.js:18:13:18:21 | fewerArgs | semmle.label | fewerArgs | | command-line-parameter-command-injection.js:18:13:18:21 | fewerArgs [ArrayElement] | semmle.label | fewerArgs [ArrayElement] | | command-line-parameter-command-injection.js:18:13:18:24 | fewerArgs[0] | semmle.label | fewerArgs[0] | | command-line-parameter-command-injection.js:19:14:19:17 | arg0 | semmle.label | arg0 | | command-line-parameter-command-injection.js:20:14:20:29 | "cmd.sh " + arg0 | semmle.label | "cmd.sh " + arg0 | | command-line-parameter-command-injection.js:20:26:20:29 | arg0 | semmle.label | arg0 | -| command-line-parameter-command-injection.js:24:8:24:35 | args | semmle.label | args | -| command-line-parameter-command-injection.js:24:8:24:35 | args [ArrayElement] | semmle.label | args [ArrayElement] | +| command-line-parameter-command-injection.js:24:8:24:11 | args | semmle.label | args | +| command-line-parameter-command-injection.js:24:8:24:11 | args [ArrayElement] | semmle.label | args [ArrayElement] | | command-line-parameter-command-injection.js:24:15:24:26 | process.argv | semmle.label | process.argv | | command-line-parameter-command-injection.js:24:15:24:35 | process ... lice(2) | semmle.label | process ... lice(2) | | command-line-parameter-command-injection.js:24:15:24:35 | process ... lice(2) [ArrayElement] | semmle.label | process ... lice(2) [ArrayElement] | @@ -247,29 +247,29 @@ nodes | command-line-parameter-command-injection.js:32:21:32:41 | require ... ").argv | semmle.label | require ... ").argv | | command-line-parameter-command-injection.js:33:9:33:48 | "cmd.sh ... rgv.foo | semmle.label | "cmd.sh ... rgv.foo | | command-line-parameter-command-injection.js:33:21:33:44 | require ... ").argv | semmle.label | require ... ").argv | -| command-line-parameter-command-injection.js:36:6:39:7 | args | semmle.label | args | +| command-line-parameter-command-injection.js:36:6:36:9 | args | semmle.label | args | | command-line-parameter-command-injection.js:36:13:39:7 | require ... \\t\\t.argv | semmle.label | require ... \\t\\t.argv | | command-line-parameter-command-injection.js:41:10:41:25 | "cmd.sh " + args | semmle.label | "cmd.sh " + args | | command-line-parameter-command-injection.js:41:22:41:25 | args | semmle.label | args | | command-line-parameter-command-injection.js:43:10:43:62 | "cmd.sh ... e().foo | semmle.label | "cmd.sh ... e().foo | | command-line-parameter-command-injection.js:43:22:43:58 | require ... parse() | semmle.label | require ... parse() | -| command-line-parameter-command-injection.js:47:8:53:12 | args | semmle.label | args | | command-line-parameter-command-injection.js:48:3:50:3 | argv: { ... rgs\\n\\t\\t} | semmle.label | argv: { ... rgs\\n\\t\\t} | | command-line-parameter-command-injection.js:48:9:50:3 | {\\n\\t\\t\\t...args\\n\\t\\t} | semmle.label | {\\n\\t\\t\\t...args\\n\\t\\t} | +| command-line-parameter-command-injection.js:49:7:49:10 | args | semmle.label | args | | command-line-parameter-command-injection.js:55:10:55:25 | "cmd.sh " + args | semmle.label | "cmd.sh " + args | | command-line-parameter-command-injection.js:55:22:55:25 | args | semmle.label | args | -| command-line-parameter-command-injection.js:57:6:57:37 | tainted1 | semmle.label | tainted1 | +| command-line-parameter-command-injection.js:57:6:57:13 | tainted1 | semmle.label | tainted1 | | command-line-parameter-command-injection.js:57:17:57:37 | require ... ').argv | semmle.label | require ... ').argv | -| command-line-parameter-command-injection.js:58:6:58:40 | tainted2 | semmle.label | tainted2 | +| command-line-parameter-command-injection.js:58:6:58:13 | tainted2 | semmle.label | tainted2 | | command-line-parameter-command-injection.js:58:17:58:40 | require ... parse() | semmle.label | require ... parse() | | command-line-parameter-command-injection.js:60:8:60:56 | {taint1 ... 2rest}} [taint1] | semmle.label | {taint1 ... 2rest}} [taint1] | | command-line-parameter-command-injection.js:60:8:60:56 | {taint1 ... 2rest}} [taint2] | semmle.label | {taint1 ... 2rest}} [taint2] | -| command-line-parameter-command-injection.js:60:8:63:2 | taint1rest | semmle.label | taint1rest | -| command-line-parameter-command-injection.js:60:8:63:2 | taint2rest | semmle.label | taint2rest | | command-line-parameter-command-injection.js:60:9:60:31 | taint1: ... t1rest} | semmle.label | taint1: ... t1rest} | | command-line-parameter-command-injection.js:60:17:60:31 | {...taint1rest} | semmle.label | {...taint1rest} | +| command-line-parameter-command-injection.js:60:21:60:30 | taint1rest | semmle.label | taint1rest | | command-line-parameter-command-injection.js:60:33:60:55 | taint2: ... t2rest} | semmle.label | taint2: ... t2rest} | | command-line-parameter-command-injection.js:60:41:60:55 | {...taint2rest} | semmle.label | {...taint2rest} | +| command-line-parameter-command-injection.js:60:45:60:54 | taint2rest | semmle.label | taint2rest | | command-line-parameter-command-injection.js:60:60:63:2 | {\\n\\t\\ttai ... ted2\\n\\t} [taint1] | semmle.label | {\\n\\t\\ttai ... ted2\\n\\t} [taint1] | | command-line-parameter-command-injection.js:60:60:63:2 | {\\n\\t\\ttai ... ted2\\n\\t} [taint2] | semmle.label | {\\n\\t\\ttai ... ted2\\n\\t} [taint2] | | command-line-parameter-command-injection.js:61:11:61:18 | tainted1 | semmle.label | tainted1 | @@ -279,16 +279,16 @@ nodes | command-line-parameter-command-injection.js:66:10:66:31 | "cmd.sh ... nt2rest | semmle.label | "cmd.sh ... nt2rest | | command-line-parameter-command-injection.js:66:22:66:31 | taint2rest | semmle.label | taint2rest | | command-line-parameter-command-injection.js:68:6:68:16 | {...taint3} | semmle.label | {...taint3} | -| command-line-parameter-command-injection.js:68:6:68:40 | taint3 | semmle.label | taint3 | +| command-line-parameter-command-injection.js:68:10:68:15 | taint3 | semmle.label | taint3 | | command-line-parameter-command-injection.js:68:20:68:40 | require ... ').argv | semmle.label | require ... ').argv | | command-line-parameter-command-injection.js:69:10:69:27 | "cmd.sh " + taint3 | semmle.label | "cmd.sh " + taint3 | | command-line-parameter-command-injection.js:69:22:69:27 | taint3 | semmle.label | taint3 | | command-line-parameter-command-injection.js:71:6:71:16 | [...taint4] | semmle.label | [...taint4] | -| command-line-parameter-command-injection.js:71:6:71:40 | taint4 | semmle.label | taint4 | +| command-line-parameter-command-injection.js:71:10:71:15 | taint4 | semmle.label | taint4 | | command-line-parameter-command-injection.js:71:20:71:40 | require ... ').argv | semmle.label | require ... ').argv | | command-line-parameter-command-injection.js:72:10:72:27 | "cmd.sh " + taint4 | semmle.label | "cmd.sh " + taint4 | | command-line-parameter-command-injection.js:72:22:72:27 | taint4 | semmle.label | taint4 | -| command-line-parameter-command-injection.js:76:8:76:35 | argv | semmle.label | argv | +| command-line-parameter-command-injection.js:76:8:76:11 | argv | semmle.label | argv | | command-line-parameter-command-injection.js:76:15:76:26 | process.argv | semmle.label | process.argv | | command-line-parameter-command-injection.js:76:15:76:35 | process ... lice(2) | semmle.label | process ... lice(2) | | command-line-parameter-command-injection.js:79:10:79:39 | "cmd.sh ... gv).foo | semmle.label | "cmd.sh ... gv).foo | @@ -302,34 +302,34 @@ nodes | command-line-parameter-command-injection.js:85:22:85:55 | yargsPa ... ice(2)) | semmle.label | yargsPa ... ice(2)) | | command-line-parameter-command-injection.js:85:34:85:45 | process.argv | semmle.label | process.argv | | command-line-parameter-command-injection.js:85:34:85:54 | process ... lice(2) | semmle.label | process ... lice(2) | -| command-line-parameter-command-injection.js:88:6:88:37 | flags | semmle.label | flags | +| command-line-parameter-command-injection.js:88:6:88:10 | flags | semmle.label | flags | | command-line-parameter-command-injection.js:88:14:88:37 | args.pa ... s.argv) | semmle.label | args.pa ... s.argv) | | command-line-parameter-command-injection.js:88:25:88:36 | process.argv | semmle.label | process.argv | | command-line-parameter-command-injection.js:89:10:89:30 | "cmd.sh ... ags.foo | semmle.label | "cmd.sh ... ags.foo | | command-line-parameter-command-injection.js:89:22:89:26 | flags | semmle.label | flags | -| command-line-parameter-command-injection.js:91:6:91:38 | flags | semmle.label | flags | +| command-line-parameter-command-injection.js:91:6:91:10 | flags | semmle.label | flags | | command-line-parameter-command-injection.js:91:14:91:38 | require ... .spec}) | semmle.label | require ... .spec}) | | command-line-parameter-command-injection.js:92:10:92:30 | "cmd.sh ... ags.foo | semmle.label | "cmd.sh ... ags.foo | | command-line-parameter-command-injection.js:92:22:92:26 | flags | semmle.label | flags | | command-line-parameter-command-injection.js:102:10:102:44 | "cmd.sh ... s().foo | semmle.label | "cmd.sh ... s().foo | | command-line-parameter-command-injection.js:102:22:102:40 | parser.parse_args() | semmle.label | parser.parse_args() | -| command-line-parameter-command-injection.js:107:8:107:51 | options | semmle.label | options | +| command-line-parameter-command-injection.js:107:8:107:14 | options | semmle.label | options | | command-line-parameter-command-injection.js:107:18:107:51 | command ... itions) | semmle.label | command ... itions) | | command-line-parameter-command-injection.js:108:10:108:32 | "cmd.sh ... ons.foo | semmle.label | "cmd.sh ... ons.foo | | command-line-parameter-command-injection.js:108:22:108:28 | options | semmle.label | options | -| command-line-parameter-command-injection.js:114:8:114:52 | cli | semmle.label | cli | +| command-line-parameter-command-injection.js:114:8:114:10 | cli | semmle.label | cli | | command-line-parameter-command-injection.js:114:14:114:52 | meow(`h ... lags}}) | semmle.label | meow(`h ... lags}}) | | command-line-parameter-command-injection.js:116:10:116:33 | "cmd.sh ... nput[0] | semmle.label | "cmd.sh ... nput[0] | | command-line-parameter-command-injection.js:116:22:116:24 | cli | semmle.label | cli | -| command-line-parameter-command-injection.js:122:6:122:46 | opts | semmle.label | opts | +| command-line-parameter-command-injection.js:122:6:122:9 | opts | semmle.label | opts | | command-line-parameter-command-injection.js:122:13:122:46 | dashdas ... tions}) | semmle.label | dashdas ... tions}) | | command-line-parameter-command-injection.js:124:10:124:29 | "cmd.sh " + opts.foo | semmle.label | "cmd.sh " + opts.foo | | command-line-parameter-command-injection.js:124:22:124:25 | opts | semmle.label | opts | -| command-line-parameter-command-injection.js:127:6:127:26 | opts | semmle.label | opts | +| command-line-parameter-command-injection.js:127:6:127:9 | opts | semmle.label | opts | | command-line-parameter-command-injection.js:127:13:127:26 | parser.parse() | semmle.label | parser.parse() | | command-line-parameter-command-injection.js:129:10:129:29 | "cmd.sh " + opts.foo | semmle.label | "cmd.sh " + opts.foo | | command-line-parameter-command-injection.js:129:22:129:25 | opts | semmle.label | opts | -| command-line-parameter-command-injection.js:133:8:133:41 | program | semmle.label | program | +| command-line-parameter-command-injection.js:133:10:133:16 | program | semmle.label | program | | command-line-parameter-command-injection.js:133:10:133:16 | program | semmle.label | program | | command-line-parameter-command-injection.js:136:10:136:45 | "cmd.sh ... zzaType | semmle.label | "cmd.sh ... zzaType | | command-line-parameter-command-injection.js:136:22:136:35 | program.opts() | semmle.label | program.opts() | diff --git a/javascript/ql/test/query-tests/Security/CWE-078/SecondOrderCommandInjection/SecondOrderCommandInjection.expected b/javascript/ql/test/query-tests/Security/CWE-078/SecondOrderCommandInjection/SecondOrderCommandInjection.expected index e4396669dc85..85d629191c5a 100644 --- a/javascript/ql/test/query-tests/Security/CWE-078/SecondOrderCommandInjection/SecondOrderCommandInjection.expected +++ b/javascript/ql/test/query-tests/Security/CWE-078/SecondOrderCommandInjection/SecondOrderCommandInjection.expected @@ -9,20 +9,20 @@ | second-order.js:42:31:42:46 | req.query.remote | second-order.js:42:31:42:46 | req.query.remote | second-order.js:42:31:42:46 | req.query.remote | Command line argument that depends on $@ can execute an arbitrary command if --config=alias.= is used with hg. | second-order.js:42:31:42:46 | req.query.remote | a user-provided value | | second-order.js:44:18:44:31 | req.query.args | second-order.js:44:18:44:31 | req.query.args | second-order.js:44:18:44:31 | req.query.args | Command line argument that depends on $@ can execute an arbitrary command if --config=alias.= is used with hg. | second-order.js:44:18:44:31 | req.query.args | a user-provided value | edges -| second-order.js:6:9:6:33 | remote | second-order.js:7:33:7:38 | remote | provenance | | -| second-order.js:6:9:6:33 | remote | second-order.js:9:29:9:34 | remote | provenance | | -| second-order.js:6:9:6:33 | remote | second-order.js:11:33:11:38 | remote | provenance | | -| second-order.js:6:9:6:33 | remote | second-order.js:26:35:26:40 | remote | provenance | | -| second-order.js:6:18:6:33 | req.query.remote | second-order.js:6:9:6:33 | remote | provenance | | -| second-order.js:13:9:13:31 | myArgs | second-order.js:15:19:15:24 | myArgs | provenance | | -| second-order.js:13:18:13:31 | req.query.args | second-order.js:13:9:13:31 | myArgs | provenance | | +| second-order.js:6:9:6:14 | remote | second-order.js:7:33:7:38 | remote | provenance | | +| second-order.js:6:9:6:14 | remote | second-order.js:9:29:9:34 | remote | provenance | | +| second-order.js:6:9:6:14 | remote | second-order.js:11:33:11:38 | remote | provenance | | +| second-order.js:6:9:6:14 | remote | second-order.js:26:35:26:40 | remote | provenance | | +| second-order.js:6:18:6:33 | req.query.remote | second-order.js:6:9:6:14 | remote | provenance | | +| second-order.js:13:9:13:14 | myArgs | second-order.js:15:19:15:24 | myArgs | provenance | | +| second-order.js:13:18:13:31 | req.query.args | second-order.js:13:9:13:14 | myArgs | provenance | | nodes -| second-order.js:6:9:6:33 | remote | semmle.label | remote | +| second-order.js:6:9:6:14 | remote | semmle.label | remote | | second-order.js:6:18:6:33 | req.query.remote | semmle.label | req.query.remote | | second-order.js:7:33:7:38 | remote | semmle.label | remote | | second-order.js:9:29:9:34 | remote | semmle.label | remote | | second-order.js:11:33:11:38 | remote | semmle.label | remote | -| second-order.js:13:9:13:31 | myArgs | semmle.label | myArgs | +| second-order.js:13:9:13:14 | myArgs | semmle.label | myArgs | | second-order.js:13:18:13:31 | req.query.args | semmle.label | req.query.args | | second-order.js:15:19:15:24 | myArgs | semmle.label | myArgs | | second-order.js:26:35:26:40 | remote | semmle.label | remote | diff --git a/javascript/ql/test/query-tests/Security/CWE-078/UnsafeShellCommandConstruction/UnsafeShellCommandConstruction.expected b/javascript/ql/test/query-tests/Security/CWE-078/UnsafeShellCommandConstruction/UnsafeShellCommandConstruction.expected index c4b16b01a38f..564d9ca221e7 100644 --- a/javascript/ql/test/query-tests/Security/CWE-078/UnsafeShellCommandConstruction/UnsafeShellCommandConstruction.expected +++ b/javascript/ql/test/query-tests/Security/CWE-078/UnsafeShellCommandConstruction/UnsafeShellCommandConstruction.expected @@ -142,10 +142,10 @@ edges | lib/lib.js:155:38:155:41 | name | lib/lib.js:161:25:161:28 | name | provenance | | | lib/lib.js:170:41:170:44 | name | lib/lib.js:173:20:173:23 | name | provenance | | | lib/lib.js:177:38:177:41 | name | lib/lib.js:181:21:181:24 | name | provenance | | -| lib/lib.js:181:6:181:52 | broken | lib/lib.js:182:22:182:27 | broken | provenance | | +| lib/lib.js:181:6:181:11 | broken | lib/lib.js:182:22:182:27 | broken | provenance | | | lib/lib.js:181:21:181:24 | name | lib/lib.js:181:21:181:46 | name.re ... "'\\''") | provenance | | | lib/lib.js:181:21:181:24 | name | lib/lib.js:181:21:181:46 | name.re ... "'\\''") | provenance | | -| lib/lib.js:181:21:181:46 | name.re ... "'\\''") | lib/lib.js:181:6:181:52 | broken | provenance | | +| lib/lib.js:181:21:181:46 | name.re ... "'\\''") | lib/lib.js:181:6:181:11 | broken | provenance | | | lib/lib.js:186:34:186:37 | name | lib/lib.js:187:22:187:25 | name | provenance | | | lib/lib.js:186:34:186:37 | name | lib/lib.js:190:23:190:26 | name | provenance | | | lib/lib.js:196:45:196:48 | name | lib/lib.js:197:22:197:25 | name | provenance | | @@ -160,8 +160,8 @@ edges | lib/lib.js:239:28:239:28 | s | lib/lib.js:245:9:245:9 | s | provenance | | | lib/lib.js:248:42:248:45 | name | lib/lib.js:249:22:249:25 | name | provenance | | | lib/lib.js:248:42:248:45 | name | lib/lib.js:251:27:251:30 | name | provenance | | -| lib/lib.js:251:6:251:31 | cleaned | lib/lib.js:253:22:253:28 | cleaned | provenance | | -| lib/lib.js:251:16:251:31 | cleanInput(name) | lib/lib.js:251:6:251:31 | cleaned | provenance | | +| lib/lib.js:251:6:251:12 | cleaned | lib/lib.js:253:22:253:28 | cleaned | provenance | | +| lib/lib.js:251:16:251:31 | cleanInput(name) | lib/lib.js:251:6:251:12 | cleaned | provenance | | | lib/lib.js:251:27:251:30 | name | lib/lib.js:239:28:239:28 | s | provenance | | | lib/lib.js:251:27:251:30 | name | lib/lib.js:251:16:251:31 | cleanInput(name) | provenance | | | lib/lib.js:257:35:257:38 | name | lib/lib.js:258:22:258:25 | name | provenance | | @@ -235,10 +235,10 @@ edges | lib/lib.js:608:42:608:45 | name | lib/lib.js:626:29:626:32 | name | provenance | | | lib/lib.js:608:42:608:45 | name | lib/lib.js:629:25:629:28 | name | provenance | | | lib/lib.js:632:38:632:41 | name | lib/lib.js:633:24:633:27 | name | provenance | | -| lib/lib.js:633:6:633:68 | sanitized | lib/lib.js:634:22:634:30 | sanitized | provenance | | +| lib/lib.js:633:6:633:14 | sanitized | lib/lib.js:634:22:634:30 | sanitized | provenance | | | lib/lib.js:633:24:633:27 | name | lib/lib.js:633:24:633:62 | name.re ... '\\\\''") | provenance | | | lib/lib.js:633:24:633:27 | name | lib/lib.js:633:24:633:62 | name.re ... '\\\\''") | provenance | | -| lib/lib.js:633:24:633:62 | name.re ... '\\\\''") | lib/lib.js:633:6:633:68 | sanitized | provenance | | +| lib/lib.js:633:24:633:62 | name.re ... '\\\\''") | lib/lib.js:633:6:633:14 | sanitized | provenance | | | lib/subLib2/compiled-file.ts:3:26:3:29 | name | lib/subLib2/compiled-file.ts:4:25:4:28 | name | provenance | | | lib/subLib2/special-file.js:3:28:3:31 | name | lib/subLib2/special-file.js:4:22:4:25 | name | provenance | | | lib/subLib3/my-file.ts:3:28:3:31 | name | lib/subLib3/my-file.ts:4:22:4:25 | name | provenance | | @@ -308,7 +308,7 @@ nodes | lib/lib.js:170:41:170:44 | name | semmle.label | name | | lib/lib.js:173:20:173:23 | name | semmle.label | name | | lib/lib.js:177:38:177:41 | name | semmle.label | name | -| lib/lib.js:181:6:181:52 | broken | semmle.label | broken | +| lib/lib.js:181:6:181:11 | broken | semmle.label | broken | | lib/lib.js:181:21:181:24 | name | semmle.label | name | | lib/lib.js:181:21:181:46 | name.re ... "'\\''") | semmle.label | name.re ... "'\\''") | | lib/lib.js:181:21:181:46 | name.re ... "'\\''") | semmle.label | name.re ... "'\\''") | @@ -333,7 +333,7 @@ nodes | lib/lib.js:245:9:245:9 | s | semmle.label | s | | lib/lib.js:248:42:248:45 | name | semmle.label | name | | lib/lib.js:249:22:249:25 | name | semmle.label | name | -| lib/lib.js:251:6:251:31 | cleaned | semmle.label | cleaned | +| lib/lib.js:251:6:251:12 | cleaned | semmle.label | cleaned | | lib/lib.js:251:16:251:31 | cleanInput(name) | semmle.label | cleanInput(name) | | lib/lib.js:251:27:251:30 | name | semmle.label | name | | lib/lib.js:253:22:253:28 | cleaned | semmle.label | cleaned | @@ -428,7 +428,7 @@ nodes | lib/lib.js:626:29:626:32 | name | semmle.label | name | | lib/lib.js:629:25:629:28 | name | semmle.label | name | | lib/lib.js:632:38:632:41 | name | semmle.label | name | -| lib/lib.js:633:6:633:68 | sanitized | semmle.label | sanitized | +| lib/lib.js:633:6:633:14 | sanitized | semmle.label | sanitized | | lib/lib.js:633:24:633:27 | name | semmle.label | name | | lib/lib.js:633:24:633:62 | name.re ... '\\\\''") | semmle.label | name.re ... '\\\\''") | | lib/lib.js:633:24:633:62 | name.re ... '\\\\''") | semmle.label | name.re ... '\\\\''") | diff --git a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/Xss.expected b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/Xss.expected index 0f5659492116..fce55fec2936 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/Xss.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/Xss.expected @@ -244,8 +244,8 @@ edges | addEventListener.js:1:43:1:47 | event | addEventListener.js:2:20:2:24 | event | provenance | | | addEventListener.js:2:20:2:24 | event | addEventListener.js:2:20:2:29 | event.data | provenance | | -| addEventListener.js:5:43:5:48 | data | addEventListener.js:6:20:6:23 | data | provenance | | -| addEventListener.js:5:43:5:48 | {data} | addEventListener.js:5:43:5:48 | data | provenance | | +| addEventListener.js:5:43:5:48 | {data} | addEventListener.js:5:44:5:47 | data | provenance | | +| addEventListener.js:5:44:5:47 | data | addEventListener.js:6:20:6:23 | data | provenance | | | addEventListener.js:10:21:10:25 | event | addEventListener.js:12:24:12:28 | event | provenance | | | addEventListener.js:12:24:12:28 | event | addEventListener.js:12:24:12:33 | event.data | provenance | | | angular2-client.ts:26:44:26:69 | this.ro ... .params | angular2-client.ts:26:44:26:73 | this.ro ... ams.foo | provenance | | @@ -270,25 +270,25 @@ edges | classnames.js:15:52:15:62 | window.name | classnames.js:15:47:15:63 | clsx(window.name) | provenance | | | classnames.js:17:48:17:64 | clsx(window.name) | classnames.js:17:32:17:79 | `` | provenance | | | classnames.js:17:53:17:63 | window.name | classnames.js:17:48:17:64 | clsx(window.name) | provenance | | -| clipboard.ts:8:11:8:51 | html | clipboard.ts:15:25:15:28 | html | provenance | | -| clipboard.ts:8:18:8:51 | clipboa ... /html') | clipboard.ts:8:11:8:51 | html | provenance | | -| clipboard.ts:43:15:43:55 | html | clipboard.ts:50:29:50:32 | html | provenance | | -| clipboard.ts:43:22:43:55 | clipboa ... /html') | clipboard.ts:43:15:43:55 | html | provenance | | -| clipboard.ts:71:13:71:62 | droppedHtml | clipboard.ts:73:29:73:39 | droppedHtml | provenance | | -| clipboard.ts:71:27:71:62 | e.clipb ... /html') | clipboard.ts:71:13:71:62 | droppedHtml | provenance | | -| clipboard.ts:98:15:98:54 | html | clipboard.ts:99:23:99:26 | html | provenance | | -| clipboard.ts:98:22:98:54 | dataTra ... /html') | clipboard.ts:98:15:98:54 | html | provenance | | +| clipboard.ts:8:11:8:14 | html | clipboard.ts:15:25:15:28 | html | provenance | | +| clipboard.ts:8:18:8:51 | clipboa ... /html') | clipboard.ts:8:11:8:14 | html | provenance | | +| clipboard.ts:43:15:43:18 | html | clipboard.ts:50:29:50:32 | html | provenance | | +| clipboard.ts:43:22:43:55 | clipboa ... /html') | clipboard.ts:43:15:43:18 | html | provenance | | +| clipboard.ts:71:13:71:23 | droppedHtml | clipboard.ts:73:29:73:39 | droppedHtml | provenance | | +| clipboard.ts:71:27:71:62 | e.clipb ... /html') | clipboard.ts:71:13:71:23 | droppedHtml | provenance | | +| clipboard.ts:98:15:98:18 | html | clipboard.ts:99:23:99:26 | html | provenance | | +| clipboard.ts:98:22:98:54 | dataTra ... /html') | clipboard.ts:98:15:98:18 | html | provenance | | | d3.js:4:12:4:22 | window.name | d3.js:11:15:11:24 | getTaint() | provenance | | | d3.js:4:12:4:22 | window.name | d3.js:12:20:12:29 | getTaint() | provenance | | | d3.js:4:12:4:22 | window.name | d3.js:14:20:14:29 | getTaint() | provenance | | | d3.js:4:12:4:22 | window.name | d3.js:21:15:21:24 | getTaint() | provenance | | -| dates.js:9:9:9:69 | taint | dates.js:11:63:11:67 | taint | provenance | | -| dates.js:9:9:9:69 | taint | dates.js:12:66:12:70 | taint | provenance | | -| dates.js:9:9:9:69 | taint | dates.js:13:59:13:63 | taint | provenance | | -| dates.js:9:9:9:69 | taint | dates.js:16:62:16:66 | taint | provenance | | -| dates.js:9:9:9:69 | taint | dates.js:18:59:18:63 | taint | provenance | | -| dates.js:9:9:9:69 | taint | dates.js:21:61:21:65 | taint | provenance | | -| dates.js:9:17:9:69 | decodeU ... ing(1)) | dates.js:9:9:9:69 | taint | provenance | | +| dates.js:9:9:9:13 | taint | dates.js:11:63:11:67 | taint | provenance | | +| dates.js:9:9:9:13 | taint | dates.js:12:66:12:70 | taint | provenance | | +| dates.js:9:9:9:13 | taint | dates.js:13:59:13:63 | taint | provenance | | +| dates.js:9:9:9:13 | taint | dates.js:16:62:16:66 | taint | provenance | | +| dates.js:9:9:9:13 | taint | dates.js:18:59:18:63 | taint | provenance | | +| dates.js:9:9:9:13 | taint | dates.js:21:61:21:65 | taint | provenance | | +| dates.js:9:17:9:69 | decodeU ... ing(1)) | dates.js:9:9:9:13 | taint | provenance | | | dates.js:9:36:9:55 | window.location.hash | dates.js:9:36:9:68 | window. ... ring(1) | provenance | | | dates.js:9:36:9:55 | window.location.hash | dates.js:9:36:9:68 | window. ... ring(1) | provenance | Config | | dates.js:9:36:9:68 | window. ... ring(1) | dates.js:9:17:9:69 | decodeU ... ing(1)) | provenance | | @@ -304,11 +304,11 @@ edges | dates.js:18:59:18:63 | taint | dates.js:18:42:18:64 | datefor ... taint) | provenance | | | dates.js:21:42:21:66 | dayjs(t ... (taint) | dates.js:21:31:21:68 | `Time i ... aint)}` | provenance | | | dates.js:21:61:21:65 | taint | dates.js:21:42:21:66 | dayjs(t ... (taint) | provenance | | -| dates.js:30:9:30:69 | taint | dates.js:37:77:37:81 | taint | provenance | | -| dates.js:30:9:30:69 | taint | dates.js:38:77:38:81 | taint | provenance | | -| dates.js:30:9:30:69 | taint | dates.js:39:79:39:83 | taint | provenance | | -| dates.js:30:9:30:69 | taint | dates.js:40:77:40:81 | taint | provenance | | -| dates.js:30:17:30:69 | decodeU ... ing(1)) | dates.js:30:9:30:69 | taint | provenance | | +| dates.js:30:9:30:13 | taint | dates.js:37:77:37:81 | taint | provenance | | +| dates.js:30:9:30:13 | taint | dates.js:38:77:38:81 | taint | provenance | | +| dates.js:30:9:30:13 | taint | dates.js:39:79:39:83 | taint | provenance | | +| dates.js:30:9:30:13 | taint | dates.js:40:77:40:81 | taint | provenance | | +| dates.js:30:17:30:69 | decodeU ... ing(1)) | dates.js:30:9:30:13 | taint | provenance | | | dates.js:30:36:30:55 | window.location.hash | dates.js:30:36:30:68 | window. ... ring(1) | provenance | | | dates.js:30:36:30:55 | window.location.hash | dates.js:30:36:30:68 | window. ... ring(1) | provenance | Config | | dates.js:30:36:30:68 | window. ... ring(1) | dates.js:30:17:30:69 | decodeU ... ing(1)) | provenance | | @@ -320,10 +320,10 @@ edges | dates.js:39:79:39:83 | taint | dates.js:39:42:39:84 | moment. ... taint) | provenance | | | dates.js:40:42:40:82 | dayjs.f ... taint) | dates.js:40:31:40:84 | `Time i ... aint)}` | provenance | | | dates.js:40:77:40:81 | taint | dates.js:40:42:40:82 | dayjs.f ... taint) | provenance | | -| dates.js:46:9:46:69 | taint | dates.js:48:83:48:87 | taint | provenance | | -| dates.js:46:9:46:69 | taint | dates.js:49:82:49:86 | taint | provenance | | -| dates.js:46:9:46:69 | taint | dates.js:50:97:50:101 | taint | provenance | | -| dates.js:46:17:46:69 | decodeU ... ing(1)) | dates.js:46:9:46:69 | taint | provenance | | +| dates.js:46:9:46:13 | taint | dates.js:48:83:48:87 | taint | provenance | | +| dates.js:46:9:46:13 | taint | dates.js:49:82:49:86 | taint | provenance | | +| dates.js:46:9:46:13 | taint | dates.js:50:97:50:101 | taint | provenance | | +| dates.js:46:17:46:69 | decodeU ... ing(1)) | dates.js:46:9:46:13 | taint | provenance | | | dates.js:46:36:46:55 | window.location.hash | dates.js:46:36:46:68 | window. ... ring(1) | provenance | | | dates.js:46:36:46:55 | window.location.hash | dates.js:46:36:46:68 | window. ... ring(1) | provenance | Config | | dates.js:46:36:46:68 | window. ... ring(1) | dates.js:46:17:46:69 | decodeU ... ing(1)) | provenance | | @@ -333,10 +333,10 @@ edges | dates.js:49:82:49:86 | taint | dates.js:49:42:49:87 | new Dat ... (taint) | provenance | | | dates.js:50:42:50:102 | DateTim ... (taint) | dates.js:50:31:50:104 | `Time i ... aint)}` | provenance | | | dates.js:50:97:50:101 | taint | dates.js:50:42:50:102 | DateTim ... (taint) | provenance | | -| dates.js:54:9:54:69 | taint | dates.js:57:94:57:98 | taint | provenance | | -| dates.js:54:9:54:69 | taint | dates.js:59:80:59:84 | taint | provenance | | -| dates.js:54:9:54:69 | taint | dates.js:61:81:61:85 | taint | provenance | | -| dates.js:54:17:54:69 | decodeU ... ing(1)) | dates.js:54:9:54:69 | taint | provenance | | +| dates.js:54:9:54:13 | taint | dates.js:57:94:57:98 | taint | provenance | | +| dates.js:54:9:54:13 | taint | dates.js:59:80:59:84 | taint | provenance | | +| dates.js:54:9:54:13 | taint | dates.js:61:81:61:85 | taint | provenance | | +| dates.js:54:17:54:69 | decodeU ... ing(1)) | dates.js:54:9:54:13 | taint | provenance | | | dates.js:54:36:54:55 | window.location.hash | dates.js:54:36:54:68 | window. ... ring(1) | provenance | | | dates.js:54:36:54:55 | window.location.hash | dates.js:54:36:54:68 | window. ... ring(1) | provenance | Config | | dates.js:54:36:54:68 | window. ... ring(1) | dates.js:54:17:54:69 | decodeU ... ing(1)) | provenance | | @@ -346,21 +346,21 @@ edges | dates.js:59:80:59:84 | taint | dates.js:59:42:59:85 | luxon.e ... (taint) | provenance | | | dates.js:61:42:61:86 | dayjs.s ... (taint) | dates.js:61:31:61:88 | `Time i ... aint)}` | provenance | | | dates.js:61:81:61:85 | taint | dates.js:61:42:61:86 | dayjs.s ... (taint) | provenance | | -| dragAndDrop.ts:8:11:8:50 | html | dragAndDrop.ts:15:25:15:28 | html | provenance | | -| dragAndDrop.ts:8:18:8:50 | dataTra ... /html') | dragAndDrop.ts:8:11:8:50 | html | provenance | | -| dragAndDrop.ts:43:15:43:54 | html | dragAndDrop.ts:50:29:50:32 | html | provenance | | -| dragAndDrop.ts:43:22:43:54 | dataTra ... /html') | dragAndDrop.ts:43:15:43:54 | html | provenance | | -| dragAndDrop.ts:71:13:71:61 | droppedHtml | dragAndDrop.ts:73:29:73:39 | droppedHtml | provenance | | -| dragAndDrop.ts:71:27:71:61 | e.dataT ... /html') | dragAndDrop.ts:71:13:71:61 | droppedHtml | provenance | | +| dragAndDrop.ts:8:11:8:14 | html | dragAndDrop.ts:15:25:15:28 | html | provenance | | +| dragAndDrop.ts:8:18:8:50 | dataTra ... /html') | dragAndDrop.ts:8:11:8:14 | html | provenance | | +| dragAndDrop.ts:43:15:43:18 | html | dragAndDrop.ts:50:29:50:32 | html | provenance | | +| dragAndDrop.ts:43:22:43:54 | dataTra ... /html') | dragAndDrop.ts:43:15:43:18 | html | provenance | | +| dragAndDrop.ts:71:13:71:23 | droppedHtml | dragAndDrop.ts:73:29:73:39 | droppedHtml | provenance | | +| dragAndDrop.ts:71:27:71:61 | e.dataT ... /html') | dragAndDrop.ts:71:13:71:23 | droppedHtml | provenance | | | event-handler-receiver.js:2:49:2:61 | location.href | event-handler-receiver.js:2:31:2:83 | '

    ' | provenance | | | event-handler-receiver.js:2:49:2:61 | location.href | event-handler-receiver.js:2:31:2:83 | '

    ' | provenance | Config | -| jquery.js:2:7:2:40 | tainted | jquery.js:4:5:4:11 | tainted | provenance | | -| jquery.js:2:7:2:40 | tainted | jquery.js:5:13:5:19 | tainted | provenance | | -| jquery.js:2:7:2:40 | tainted | jquery.js:6:11:6:17 | tainted | provenance | | -| jquery.js:2:7:2:40 | tainted | jquery.js:7:20:7:26 | tainted | provenance | | -| jquery.js:2:7:2:40 | tainted | jquery.js:8:28:8:34 | tainted | provenance | | -| jquery.js:2:7:2:40 | tainted | jquery.js:36:25:36:31 | tainted | provenance | | -| jquery.js:2:17:2:40 | documen ... .search | jquery.js:2:7:2:40 | tainted | provenance | | +| jquery.js:2:7:2:13 | tainted | jquery.js:4:5:4:11 | tainted | provenance | | +| jquery.js:2:7:2:13 | tainted | jquery.js:5:13:5:19 | tainted | provenance | | +| jquery.js:2:7:2:13 | tainted | jquery.js:6:11:6:17 | tainted | provenance | | +| jquery.js:2:7:2:13 | tainted | jquery.js:7:20:7:26 | tainted | provenance | | +| jquery.js:2:7:2:13 | tainted | jquery.js:8:28:8:34 | tainted | provenance | | +| jquery.js:2:7:2:13 | tainted | jquery.js:36:25:36:31 | tainted | provenance | | +| jquery.js:2:17:2:40 | documen ... .search | jquery.js:2:7:2:13 | tainted | provenance | | | jquery.js:4:5:4:11 | tainted | jquery.js:5:13:5:19 | tainted | provenance | | | jquery.js:5:13:5:19 | tainted | jquery.js:6:11:6:17 | tainted | provenance | | | jquery.js:6:11:6:17 | tainted | jquery.js:7:20:7:26 | tainted | provenance | | @@ -374,13 +374,13 @@ edges | jquery.js:15:38:15:59 | window. ... .search | jquery.js:15:19:15:60 | decodeU ... search) | provenance | | | jquery.js:16:38:16:52 | window.location | jquery.js:16:38:16:63 | window. ... tring() | provenance | | | jquery.js:16:38:16:63 | window. ... tring() | jquery.js:16:19:16:64 | decodeU ... ring()) | provenance | | -| jquery.js:18:7:18:33 | hash | jquery.js:21:5:21:8 | hash | provenance | | -| jquery.js:18:7:18:33 | hash | jquery.js:22:5:22:8 | hash | provenance | | -| jquery.js:18:7:18:33 | hash | jquery.js:23:5:23:8 | hash | provenance | | -| jquery.js:18:7:18:33 | hash | jquery.js:24:5:24:8 | hash | provenance | | -| jquery.js:18:7:18:33 | hash | jquery.js:27:5:27:8 | hash | provenance | | -| jquery.js:18:7:18:33 | hash | jquery.js:34:13:34:16 | hash | provenance | | -| jquery.js:18:14:18:33 | window.location.hash | jquery.js:18:7:18:33 | hash | provenance | | +| jquery.js:18:7:18:10 | hash | jquery.js:21:5:21:8 | hash | provenance | | +| jquery.js:18:7:18:10 | hash | jquery.js:22:5:22:8 | hash | provenance | | +| jquery.js:18:7:18:10 | hash | jquery.js:23:5:23:8 | hash | provenance | | +| jquery.js:18:7:18:10 | hash | jquery.js:24:5:24:8 | hash | provenance | | +| jquery.js:18:7:18:10 | hash | jquery.js:27:5:27:8 | hash | provenance | | +| jquery.js:18:7:18:10 | hash | jquery.js:34:13:34:16 | hash | provenance | | +| jquery.js:18:14:18:33 | window.location.hash | jquery.js:18:7:18:10 | hash | provenance | | | jquery.js:21:5:21:8 | hash | jquery.js:21:5:21:21 | hash.substring(1) | provenance | Config | | jquery.js:22:5:22:8 | hash | jquery.js:22:5:22:25 | hash.su ... (1, 10) | provenance | Config | | jquery.js:23:5:23:8 | hash | jquery.js:23:5:23:18 | hash.substr(1) | provenance | Config | @@ -390,47 +390,47 @@ edges | jquery.js:34:13:34:16 | hash | jquery.js:34:5:34:25 | '' + ... '' | provenance | Config | | jquery.js:36:25:36:31 | tainted | jquery.js:37:31:37:37 | tainted | provenance | | | jquery.js:37:31:37:37 | tainted | jquery.js:37:25:37:37 | () => tainted | provenance | Config | -| json-stringify.jsx:5:9:5:36 | locale | json-stringify.jsx:11:51:11:56 | locale | provenance | | -| json-stringify.jsx:5:9:5:36 | locale | json-stringify.jsx:19:56:19:61 | locale | provenance | | -| json-stringify.jsx:5:9:5:36 | locale | json-stringify.jsx:31:55:31:60 | locale | provenance | | -| json-stringify.jsx:5:18:5:36 | req.param("locale") | json-stringify.jsx:5:9:5:36 | locale | provenance | | +| json-stringify.jsx:5:9:5:14 | locale | json-stringify.jsx:11:51:11:56 | locale | provenance | | +| json-stringify.jsx:5:9:5:14 | locale | json-stringify.jsx:19:56:19:61 | locale | provenance | | +| json-stringify.jsx:5:9:5:14 | locale | json-stringify.jsx:31:55:31:60 | locale | provenance | | +| json-stringify.jsx:5:18:5:36 | req.param("locale") | json-stringify.jsx:5:9:5:14 | locale | provenance | | | json-stringify.jsx:11:51:11:56 | locale | json-stringify.jsx:35:40:35:61 | JSON.st ... jsonLD) | provenance | | | json-stringify.jsx:19:56:19:61 | locale | json-stringify.jsx:35:40:35:61 | JSON.st ... jsonLD) | provenance | | | json-stringify.jsx:31:55:31:60 | locale | json-stringify.jsx:31:40:31:61 | JSON.st ... locale) | provenance | | -| jwt-server.js:7:9:7:35 | taint | jwt-server.js:9:16:9:20 | taint | provenance | | -| jwt-server.js:7:17:7:35 | req.param("wobble") | jwt-server.js:7:9:7:35 | taint | provenance | | +| jwt-server.js:7:9:7:13 | taint | jwt-server.js:9:16:9:20 | taint | provenance | | +| jwt-server.js:7:17:7:35 | req.param("wobble") | jwt-server.js:7:9:7:13 | taint | provenance | | | jwt-server.js:9:16:9:20 | taint | jwt-server.js:9:55:9:61 | decoded | provenance | | | jwt-server.js:9:55:9:61 | decoded | jwt-server.js:10:19:10:25 | decoded | provenance | | | jwt-server.js:10:19:10:25 | decoded | jwt-server.js:10:19:10:29 | decoded.foo | provenance | | | nodemailer.js:13:50:13:66 | req.query.message | nodemailer.js:13:11:13:69 | `Hi, yo ... sage}.` | provenance | | -| optionalSanitizer.js:2:7:2:39 | target | optionalSanitizer.js:6:18:6:23 | target | provenance | | -| optionalSanitizer.js:2:7:2:39 | target | optionalSanitizer.js:8:17:8:22 | target | provenance | | -| optionalSanitizer.js:2:7:2:39 | target | optionalSanitizer.js:15:9:15:14 | target | provenance | | -| optionalSanitizer.js:2:16:2:39 | documen ... .search | optionalSanitizer.js:2:7:2:39 | target | provenance | | -| optionalSanitizer.js:8:7:8:22 | tainted | optionalSanitizer.js:9:18:9:24 | tainted | provenance | | -| optionalSanitizer.js:8:17:8:22 | target | optionalSanitizer.js:8:7:8:22 | tainted | provenance | | +| optionalSanitizer.js:2:7:2:12 | target | optionalSanitizer.js:6:18:6:23 | target | provenance | | +| optionalSanitizer.js:2:7:2:12 | target | optionalSanitizer.js:8:17:8:22 | target | provenance | | +| optionalSanitizer.js:2:7:2:12 | target | optionalSanitizer.js:15:9:15:14 | target | provenance | | +| optionalSanitizer.js:2:16:2:39 | documen ... .search | optionalSanitizer.js:2:7:2:12 | target | provenance | | +| optionalSanitizer.js:8:7:8:13 | tainted | optionalSanitizer.js:9:18:9:24 | tainted | provenance | | +| optionalSanitizer.js:8:17:8:22 | target | optionalSanitizer.js:8:7:8:13 | tainted | provenance | | | optionalSanitizer.js:15:9:15:14 | target | optionalSanitizer.js:16:18:16:18 | x | provenance | | | optionalSanitizer.js:16:18:16:18 | x | optionalSanitizer.js:17:20:17:20 | x | provenance | | -| optionalSanitizer.js:26:7:26:39 | target | optionalSanitizer.js:31:18:31:23 | target | provenance | | -| optionalSanitizer.js:26:7:26:39 | target | optionalSanitizer.js:38:18:38:23 | target | provenance | | -| optionalSanitizer.js:26:7:26:39 | target | optionalSanitizer.js:45:41:45:46 | target | provenance | | -| optionalSanitizer.js:26:7:26:39 | target | optionalSanitizer.js:45:51:45:56 | target | provenance | | -| optionalSanitizer.js:26:16:26:39 | documen ... .search | optionalSanitizer.js:26:7:26:39 | target | provenance | | +| optionalSanitizer.js:26:7:26:12 | target | optionalSanitizer.js:31:18:31:23 | target | provenance | | +| optionalSanitizer.js:26:7:26:12 | target | optionalSanitizer.js:38:18:38:23 | target | provenance | | +| optionalSanitizer.js:26:7:26:12 | target | optionalSanitizer.js:45:41:45:46 | target | provenance | | +| optionalSanitizer.js:26:7:26:12 | target | optionalSanitizer.js:45:51:45:56 | target | provenance | | +| optionalSanitizer.js:26:16:26:39 | documen ... .search | optionalSanitizer.js:26:7:26:12 | target | provenance | | | optionalSanitizer.js:28:24:28:24 | x | optionalSanitizer.js:29:12:29:12 | x | provenance | | -| optionalSanitizer.js:31:7:31:23 | tainted2 | optionalSanitizer.js:32:18:32:25 | tainted2 | provenance | | -| optionalSanitizer.js:31:7:31:23 | tainted2 | optionalSanitizer.js:34:28:34:35 | tainted2 | provenance | | -| optionalSanitizer.js:31:7:31:23 | tainted2 | optionalSanitizer.js:36:18:36:25 | tainted2 | provenance | | -| optionalSanitizer.js:31:18:31:23 | target | optionalSanitizer.js:31:7:31:23 | tainted2 | provenance | | -| optionalSanitizer.js:34:5:34:36 | tainted2 | optionalSanitizer.js:36:18:36:25 | tainted2 | provenance | | -| optionalSanitizer.js:34:16:34:36 | sanitiz ... inted2) | optionalSanitizer.js:34:5:34:36 | tainted2 | provenance | | +| optionalSanitizer.js:31:7:31:14 | tainted2 | optionalSanitizer.js:32:18:32:25 | tainted2 | provenance | | +| optionalSanitizer.js:31:7:31:14 | tainted2 | optionalSanitizer.js:34:28:34:35 | tainted2 | provenance | | +| optionalSanitizer.js:31:7:31:14 | tainted2 | optionalSanitizer.js:36:18:36:25 | tainted2 | provenance | | +| optionalSanitizer.js:31:18:31:23 | target | optionalSanitizer.js:31:7:31:14 | tainted2 | provenance | | +| optionalSanitizer.js:34:5:34:12 | tainted2 | optionalSanitizer.js:36:18:36:25 | tainted2 | provenance | | +| optionalSanitizer.js:34:16:34:36 | sanitiz ... inted2) | optionalSanitizer.js:34:5:34:12 | tainted2 | provenance | | | optionalSanitizer.js:34:28:34:35 | tainted2 | optionalSanitizer.js:28:24:28:24 | x | provenance | | | optionalSanitizer.js:34:28:34:35 | tainted2 | optionalSanitizer.js:34:16:34:36 | sanitiz ... inted2) | provenance | | -| optionalSanitizer.js:38:7:38:23 | tainted3 | optionalSanitizer.js:39:18:39:25 | tainted3 | provenance | | -| optionalSanitizer.js:38:7:38:23 | tainted3 | optionalSanitizer.js:41:28:41:35 | tainted3 | provenance | | -| optionalSanitizer.js:38:7:38:23 | tainted3 | optionalSanitizer.js:43:18:43:25 | tainted3 | provenance | | -| optionalSanitizer.js:38:18:38:23 | target | optionalSanitizer.js:38:7:38:23 | tainted3 | provenance | | -| optionalSanitizer.js:41:5:41:36 | tainted3 | optionalSanitizer.js:43:18:43:25 | tainted3 | provenance | | -| optionalSanitizer.js:41:16:41:36 | sanitiz ... inted3) | optionalSanitizer.js:41:5:41:36 | tainted3 | provenance | | +| optionalSanitizer.js:38:7:38:14 | tainted3 | optionalSanitizer.js:39:18:39:25 | tainted3 | provenance | | +| optionalSanitizer.js:38:7:38:14 | tainted3 | optionalSanitizer.js:41:28:41:35 | tainted3 | provenance | | +| optionalSanitizer.js:38:7:38:14 | tainted3 | optionalSanitizer.js:43:18:43:25 | tainted3 | provenance | | +| optionalSanitizer.js:38:18:38:23 | target | optionalSanitizer.js:38:7:38:14 | tainted3 | provenance | | +| optionalSanitizer.js:41:5:41:12 | tainted3 | optionalSanitizer.js:43:18:43:25 | tainted3 | provenance | | +| optionalSanitizer.js:41:16:41:36 | sanitiz ... inted3) | optionalSanitizer.js:41:5:41:12 | tainted3 | provenance | | | optionalSanitizer.js:41:28:41:35 | tainted3 | optionalSanitizer.js:28:24:28:24 | x | provenance | | | optionalSanitizer.js:41:28:41:35 | tainted3 | optionalSanitizer.js:41:16:41:36 | sanitiz ... inted3) | provenance | | | optionalSanitizer.js:45:29:45:47 | sanitizeBad(target) | optionalSanitizer.js:45:18:45:56 | sanitiz ... target | provenance | | @@ -439,8 +439,8 @@ edges | optionalSanitizer.js:45:51:45:56 | target | optionalSanitizer.js:45:18:45:56 | sanitiz ... target | provenance | | | pages/[id].jsx:3:30:3:35 | params [id] | pages/[id].jsx:13:44:13:49 | params [id] | provenance | | | pages/[id].jsx:3:30:3:35 | params [q] | pages/[id].jsx:16:44:16:49 | params [q] | provenance | | -| pages/[id].jsx:5:9:5:14 | { id } | pages/[id].jsx:5:9:5:29 | id | provenance | | -| pages/[id].jsx:5:9:5:29 | id | pages/[id].jsx:10:44:10:45 | id | provenance | | +| pages/[id].jsx:5:9:5:14 | { id } | pages/[id].jsx:5:11:5:12 | id | provenance | | +| pages/[id].jsx:5:11:5:12 | id | pages/[id].jsx:10:44:10:45 | id | provenance | | | pages/[id].jsx:5:18:5:29 | router.query | pages/[id].jsx:5:9:5:14 | { id } | provenance | | | pages/[id].jsx:13:44:13:49 | params [id] | pages/[id].jsx:13:44:13:52 | params.id | provenance | | | pages/[id].jsx:16:44:16:49 | params [q] | pages/[id].jsx:16:44:16:51 | params.q | provenance | | @@ -450,30 +450,30 @@ edges | pages/[id].jsx:25:11:25:33 | context ... d \|\| "" | pages/[id].jsx:24:12:27:5 | {\\n ... e\\n } [id] | provenance | | | pages/[id].jsx:26:10:26:22 | context.query | pages/[id].jsx:26:10:26:36 | context ... r \|\| "" | provenance | | | pages/[id].jsx:26:10:26:36 | context ... r \|\| "" | pages/[id].jsx:24:12:27:5 | {\\n ... e\\n } [q] | provenance | | -| react-native.js:7:7:7:33 | tainted | react-native.js:8:18:8:24 | tainted | provenance | | -| react-native.js:7:7:7:33 | tainted | react-native.js:9:27:9:33 | tainted | provenance | | -| react-native.js:7:17:7:33 | req.param("code") | react-native.js:7:7:7:33 | tainted | provenance | | +| react-native.js:7:7:7:13 | tainted | react-native.js:8:18:8:24 | tainted | provenance | | +| react-native.js:7:7:7:13 | tainted | react-native.js:9:27:9:33 | tainted | provenance | | +| react-native.js:7:17:7:33 | req.param("code") | react-native.js:7:7:7:13 | tainted | provenance | | | react-use-router.js:8:21:8:32 | router.query | react-use-router.js:8:21:8:39 | router.query.foobar | provenance | | | react-use-router.js:11:24:11:35 | router.query | react-use-router.js:11:24:11:42 | router.query.foobar | provenance | | | react-use-router.js:23:43:23:54 | router.query | react-use-router.js:23:43:23:61 | router.query.foobar | provenance | | | react-use-router.js:33:21:33:32 | router.query | react-use-router.js:33:21:33:39 | router.query.foobar | provenance | | -| react-use-state.js:4:9:4:49 | state | react-use-state.js:5:51:5:55 | state | provenance | | -| react-use-state.js:4:38:4:48 | window.name | react-use-state.js:4:9:4:49 | state | provenance | | -| react-use-state.js:9:9:9:43 | state | react-use-state.js:11:51:11:55 | state | provenance | | -| react-use-state.js:10:14:10:24 | window.name | react-use-state.js:9:9:9:43 | state | provenance | | -| react-use-state.js:15:9:15:43 | state | react-use-state.js:17:51:17:55 | state | provenance | | -| react-use-state.js:15:10:15:14 | state | react-use-state.js:15:9:15:43 | state | provenance | | +| react-use-state.js:4:10:4:14 | state | react-use-state.js:5:51:5:55 | state | provenance | | +| react-use-state.js:4:38:4:48 | window.name | react-use-state.js:4:10:4:14 | state | provenance | | +| react-use-state.js:9:10:9:14 | state | react-use-state.js:11:51:11:55 | state | provenance | | +| react-use-state.js:10:14:10:24 | window.name | react-use-state.js:9:10:9:14 | state | provenance | | +| react-use-state.js:15:10:15:14 | state | react-use-state.js:15:10:15:14 | state | provenance | | +| react-use-state.js:15:10:15:14 | state | react-use-state.js:17:51:17:55 | state | provenance | | | react-use-state.js:16:20:16:30 | window.name | react-use-state.js:15:10:15:14 | state | provenance | | | react-use-state.js:21:10:21:14 | state | react-use-state.js:22:14:22:17 | prev | provenance | | | react-use-state.js:22:14:22:17 | prev | react-use-state.js:23:35:23:38 | prev | provenance | | | react-use-state.js:25:20:25:30 | window.name | react-use-state.js:21:10:21:14 | state | provenance | | -| sanitiser.js:16:7:16:27 | tainted | sanitiser.js:23:29:23:35 | tainted | provenance | | -| sanitiser.js:16:7:16:27 | tainted | sanitiser.js:30:29:30:35 | tainted | provenance | | -| sanitiser.js:16:7:16:27 | tainted | sanitiser.js:33:29:33:35 | tainted | provenance | | -| sanitiser.js:16:7:16:27 | tainted | sanitiser.js:38:29:38:35 | tainted | provenance | | -| sanitiser.js:16:7:16:27 | tainted | sanitiser.js:45:29:45:35 | tainted | provenance | | -| sanitiser.js:16:7:16:27 | tainted | sanitiser.js:48:19:48:25 | tainted | provenance | | -| sanitiser.js:16:17:16:27 | window.name | sanitiser.js:16:7:16:27 | tainted | provenance | | +| sanitiser.js:16:7:16:13 | tainted | sanitiser.js:23:29:23:35 | tainted | provenance | | +| sanitiser.js:16:7:16:13 | tainted | sanitiser.js:30:29:30:35 | tainted | provenance | | +| sanitiser.js:16:7:16:13 | tainted | sanitiser.js:33:29:33:35 | tainted | provenance | | +| sanitiser.js:16:7:16:13 | tainted | sanitiser.js:38:29:38:35 | tainted | provenance | | +| sanitiser.js:16:7:16:13 | tainted | sanitiser.js:45:29:45:35 | tainted | provenance | | +| sanitiser.js:16:7:16:13 | tainted | sanitiser.js:48:19:48:25 | tainted | provenance | | +| sanitiser.js:16:17:16:27 | window.name | sanitiser.js:16:7:16:13 | tainted | provenance | | | sanitiser.js:23:29:23:35 | tainted | sanitiser.js:23:21:23:44 | '' + ... '' | provenance | | | sanitiser.js:30:29:30:35 | tainted | sanitiser.js:30:21:30:44 | '' + ... '' | provenance | | | sanitiser.js:33:29:33:35 | tainted | sanitiser.js:33:21:33:44 | '' + ... '' | provenance | | @@ -483,8 +483,8 @@ edges | stored-xss.js:2:39:2:62 | documen ... .search | stored-xss.js:5:20:5:52 | session ... ssion') | provenance | | | stored-xss.js:3:35:3:58 | documen ... .search | stored-xss.js:8:20:8:48 | localSt ... local') | provenance | | | stored-xss.js:3:35:3:58 | documen ... .search | stored-xss.js:10:16:10:44 | localSt ... local') | provenance | | -| stored-xss.js:10:9:10:44 | href | stored-xss.js:12:35:12:38 | href | provenance | | -| stored-xss.js:10:16:10:44 | localSt ... local') | stored-xss.js:10:9:10:44 | href | provenance | | +| stored-xss.js:10:9:10:12 | href | stored-xss.js:12:35:12:38 | href | provenance | | +| stored-xss.js:10:16:10:44 | localSt ... local') | stored-xss.js:10:9:10:12 | href | provenance | | | stored-xss.js:12:35:12:38 | href | stored-xss.js:12:20:12:54 | "" | provenance | | | stored-xss.js:12:35:12:38 | href | stored-xss.js:12:20:12:54 | "" | provenance | Config | | string-manipulations.js:5:16:5:37 | documen ... on.href | string-manipulations.js:5:16:5:47 | documen ... lueOf() | provenance | | @@ -494,24 +494,24 @@ edges | string-manipulations.js:9:36:9:57 | documen ... on.href | string-manipulations.js:9:16:9:58 | String. ... n.href) | provenance | | | string-manipulations.js:10:23:10:44 | documen ... on.href | string-manipulations.js:10:16:10:45 | String( ... n.href) | provenance | | | tainted-url-suffix-arguments.js:3:17:3:17 | y | tainted-url-suffix-arguments.js:6:22:6:22 | y | provenance | | -| tainted-url-suffix-arguments.js:11:11:11:36 | url | tainted-url-suffix-arguments.js:12:17:12:19 | url | provenance | | -| tainted-url-suffix-arguments.js:11:17:11:36 | window.location.href | tainted-url-suffix-arguments.js:11:11:11:36 | url | provenance | | +| tainted-url-suffix-arguments.js:11:11:11:13 | url | tainted-url-suffix-arguments.js:12:17:12:19 | url | provenance | | +| tainted-url-suffix-arguments.js:11:17:11:36 | window.location.href | tainted-url-suffix-arguments.js:11:11:11:13 | url | provenance | | | tainted-url-suffix-arguments.js:12:17:12:19 | url | tainted-url-suffix-arguments.js:3:17:3:17 | y | provenance | | -| tooltip.jsx:6:11:6:30 | source | tooltip.jsx:10:25:10:30 | source | provenance | | -| tooltip.jsx:6:11:6:30 | source | tooltip.jsx:11:25:11:30 | source | provenance | | -| tooltip.jsx:6:20:6:30 | window.name | tooltip.jsx:6:11:6:30 | source | provenance | | -| tooltip.jsx:17:11:17:33 | provide [source] | tooltip.jsx:18:51:18:57 | provide [source] | provenance | | -| tooltip.jsx:17:21:17:33 | props.provide [source] | tooltip.jsx:17:11:17:33 | provide [source] | provenance | | +| tooltip.jsx:6:11:6:16 | source | tooltip.jsx:10:25:10:30 | source | provenance | | +| tooltip.jsx:6:11:6:16 | source | tooltip.jsx:11:25:11:30 | source | provenance | | +| tooltip.jsx:6:20:6:30 | window.name | tooltip.jsx:6:11:6:16 | source | provenance | | +| tooltip.jsx:17:11:17:17 | provide [source] | tooltip.jsx:18:51:18:57 | provide [source] | provenance | | +| tooltip.jsx:17:21:17:33 | props.provide [source] | tooltip.jsx:17:11:17:17 | provide [source] | provenance | | | tooltip.jsx:18:51:18:57 | provide [source] | tooltip.jsx:18:51:18:59 | provide() | provenance | | | tooltip.jsx:18:51:18:57 | provide [source] | tooltip.jsx:23:38:23:43 | source | provenance | | -| tooltip.jsx:22:11:22:30 | source | tooltip.jsx:17:21:17:33 | props.provide [source] | provenance | | -| tooltip.jsx:22:20:22:30 | window.name | tooltip.jsx:22:11:22:30 | source | provenance | | -| translate.js:6:7:6:39 | target | translate.js:7:42:7:47 | target | provenance | | -| translate.js:6:16:6:39 | documen ... .search | translate.js:6:7:6:39 | target | provenance | | -| translate.js:7:7:7:61 | searchParams | translate.js:8:27:8:38 | searchParams | provenance | | -| translate.js:7:7:7:61 | searchParams [MapValue] | translate.js:8:27:8:38 | searchParams [MapValue] | provenance | | -| translate.js:7:22:7:61 | new URL ... ing(1)) | translate.js:7:7:7:61 | searchParams | provenance | | -| translate.js:7:22:7:61 | new URL ... ing(1)) [MapValue] | translate.js:7:7:7:61 | searchParams [MapValue] | provenance | | +| tooltip.jsx:22:11:22:16 | source | tooltip.jsx:17:21:17:33 | props.provide [source] | provenance | | +| tooltip.jsx:22:20:22:30 | window.name | tooltip.jsx:22:11:22:16 | source | provenance | | +| translate.js:6:7:6:12 | target | translate.js:7:42:7:47 | target | provenance | | +| translate.js:6:16:6:39 | documen ... .search | translate.js:6:7:6:12 | target | provenance | | +| translate.js:7:7:7:18 | searchParams | translate.js:8:27:8:38 | searchParams | provenance | | +| translate.js:7:7:7:18 | searchParams [MapValue] | translate.js:8:27:8:38 | searchParams [MapValue] | provenance | | +| translate.js:7:22:7:61 | new URL ... ing(1)) | translate.js:7:7:7:18 | searchParams | provenance | | +| translate.js:7:22:7:61 | new URL ... ing(1)) [MapValue] | translate.js:7:7:7:18 | searchParams [MapValue] | provenance | | | translate.js:7:42:7:47 | target | translate.js:7:42:7:60 | target.substring(1) | provenance | | | translate.js:7:42:7:47 | target | translate.js:7:42:7:60 | target.substring(1) | provenance | Config | | translate.js:7:42:7:47 | target | translate.js:7:42:7:60 | target.substring(1) | provenance | Config | @@ -538,32 +538,32 @@ edges | tst3.js:7:32:7:35 | data | tst3.js:7:32:7:37 | data.p | provenance | | | tst3.js:9:37:9:40 | data | tst3.js:9:37:9:42 | data.p | provenance | | | tst3.js:10:38:10:41 | data | tst3.js:10:38:10:43 | data.p | provenance | | -| tst.js:2:7:2:39 | target | tst.js:4:18:4:23 | target | provenance | | -| tst.js:2:7:2:39 | target | tst.js:9:28:9:33 | target | provenance | | -| tst.js:2:7:2:39 | target | tst.js:17:42:17:47 | target | provenance | | -| tst.js:2:16:2:39 | documen ... .search | tst.js:2:7:2:39 | target | provenance | | +| tst.js:2:7:2:12 | target | tst.js:4:18:4:23 | target | provenance | | +| tst.js:2:7:2:12 | target | tst.js:9:28:9:33 | target | provenance | | +| tst.js:2:7:2:12 | target | tst.js:17:42:17:47 | target | provenance | | +| tst.js:2:16:2:39 | documen ... .search | tst.js:2:7:2:12 | target | provenance | | | tst.js:6:37:6:58 | documen ... on.href | tst.js:6:37:6:114 | documen ... t=")+8) | provenance | | | tst.js:6:37:6:58 | documen ... on.href | tst.js:6:37:6:114 | documen ... t=")+8) | provenance | Config | | tst.js:6:37:6:114 | documen ... t=")+8) | tst.js:6:18:6:126 | "" | provenance | | | tst.js:6:37:6:114 | documen ... t=")+8) | tst.js:6:18:6:126 | "" | provenance | | | tst.js:6:37:6:114 | documen ... t=")+8) | tst.js:6:18:6:126 | "" | provenance | Config | | tst.js:9:28:9:33 | target | tst.js:9:5:9:42 | '
    ' | provenance | Config | -| tst.js:14:7:14:56 | params | tst.js:15:18:15:23 | params | provenance | | -| tst.js:14:7:14:56 | params [MapValue] | tst.js:15:18:15:23 | params [MapValue] | provenance | | +| tst.js:14:7:14:12 | params | tst.js:15:18:15:23 | params | provenance | | +| tst.js:14:7:14:12 | params [MapValue] | tst.js:15:18:15:23 | params [MapValue] | provenance | | | tst.js:14:16:14:43 | (new UR ... ation)) [searchParams, MapValue] | tst.js:14:16:14:56 | (new UR ... hParams [MapValue] | provenance | | | tst.js:14:16:14:43 | (new UR ... ation)) [searchParams] | tst.js:14:16:14:56 | (new UR ... hParams | provenance | | -| tst.js:14:16:14:56 | (new UR ... hParams | tst.js:14:7:14:56 | params | provenance | | -| tst.js:14:16:14:56 | (new UR ... hParams [MapValue] | tst.js:14:7:14:56 | params [MapValue] | provenance | | +| tst.js:14:16:14:56 | (new UR ... hParams | tst.js:14:7:14:12 | params | provenance | | +| tst.js:14:16:14:56 | (new UR ... hParams [MapValue] | tst.js:14:7:14:12 | params [MapValue] | provenance | | | tst.js:14:17:14:42 | new URL ... cation) [searchParams, MapValue] | tst.js:14:16:14:43 | (new UR ... ation)) [searchParams, MapValue] | provenance | | | tst.js:14:17:14:42 | new URL ... cation) [searchParams] | tst.js:14:16:14:43 | (new UR ... ation)) [searchParams] | provenance | | | tst.js:14:25:14:41 | document.location | tst.js:14:17:14:42 | new URL ... cation) [searchParams, MapValue] | provenance | | | tst.js:14:25:14:41 | document.location | tst.js:14:17:14:42 | new URL ... cation) [searchParams] | provenance | | | tst.js:15:18:15:23 | params | tst.js:15:18:15:35 | params.get('name') | provenance | Config | | tst.js:15:18:15:23 | params [MapValue] | tst.js:15:18:15:35 | params.get('name') | provenance | | -| tst.js:17:7:17:61 | searchParams | tst.js:18:18:18:29 | searchParams | provenance | | -| tst.js:17:7:17:61 | searchParams [MapValue] | tst.js:18:18:18:29 | searchParams [MapValue] | provenance | | -| tst.js:17:22:17:61 | new URL ... ing(1)) | tst.js:17:7:17:61 | searchParams | provenance | | -| tst.js:17:22:17:61 | new URL ... ing(1)) [MapValue] | tst.js:17:7:17:61 | searchParams [MapValue] | provenance | | +| tst.js:17:7:17:18 | searchParams | tst.js:18:18:18:29 | searchParams | provenance | | +| tst.js:17:7:17:18 | searchParams [MapValue] | tst.js:18:18:18:29 | searchParams [MapValue] | provenance | | +| tst.js:17:22:17:61 | new URL ... ing(1)) | tst.js:17:7:17:18 | searchParams | provenance | | +| tst.js:17:22:17:61 | new URL ... ing(1)) [MapValue] | tst.js:17:7:17:18 | searchParams [MapValue] | provenance | | | tst.js:17:42:17:47 | target | tst.js:17:42:17:60 | target.substring(1) | provenance | | | tst.js:17:42:17:47 | target | tst.js:17:42:17:60 | target.substring(1) | provenance | Config | | tst.js:17:42:17:47 | target | tst.js:17:42:17:60 | target.substring(1) | provenance | Config | @@ -613,31 +613,31 @@ edges | tst.js:58:1:58:27 | [,docum ... search] [1] | tst.js:58:46:58:46 | x | provenance | | | tst.js:58:3:58:26 | documen ... .search | tst.js:58:1:58:27 | [,docum ... search] [1] | provenance | | | tst.js:58:46:58:46 | x | tst.js:60:20:60:20 | x | provenance | | -| tst.js:93:7:93:44 | v | tst.js:95:18:95:18 | v | provenance | | -| tst.js:93:7:93:44 | v | tst.js:120:18:120:18 | v | provenance | | +| tst.js:93:7:93:7 | v | tst.js:95:18:95:18 | v | provenance | | +| tst.js:93:7:93:7 | v | tst.js:120:18:120:18 | v | provenance | | | tst.js:93:11:93:34 | documen ... .search | tst.js:93:11:93:44 | documen ... bstr(1) | provenance | | | tst.js:93:11:93:34 | documen ... .search | tst.js:93:11:93:44 | documen ... bstr(1) | provenance | Config | -| tst.js:93:11:93:44 | documen ... bstr(1) | tst.js:93:7:93:44 | v | provenance | | +| tst.js:93:11:93:44 | documen ... bstr(1) | tst.js:93:7:93:7 | v | provenance | | | tst.js:132:29:132:50 | window. ... .search | tst.js:135:29:135:29 | v | provenance | | | tst.js:135:29:135:29 | v | tst.js:135:49:135:49 | v | provenance | | | tst.js:142:40:142:61 | window. ... .search | tst.js:139:29:139:46 | xssSourceService() | provenance | | -| tst.js:161:9:161:41 | target | tst.js:164:28:164:33 | target | provenance | | -| tst.js:161:18:161:41 | documen ... .search | tst.js:161:9:161:41 | target | provenance | | -| tst.js:168:9:168:42 | tainted | tst.js:170:31:170:37 | tainted | provenance | | -| tst.js:168:9:168:42 | tainted | tst.js:172:42:172:48 | tainted | provenance | | -| tst.js:168:9:168:42 | tainted | tst.js:173:33:173:39 | tainted | provenance | | -| tst.js:168:9:168:42 | tainted | tst.js:175:54:175:60 | tainted | provenance | | -| tst.js:168:9:168:42 | tainted | tst.js:176:45:176:51 | tainted | provenance | | -| tst.js:168:9:168:42 | tainted | tst.js:177:49:177:55 | tainted | provenance | | -| tst.js:168:19:168:42 | documen ... .search | tst.js:168:9:168:42 | tainted | provenance | | -| tst.js:181:9:181:42 | tainted | tst.js:183:67:183:73 | tainted | provenance | | -| tst.js:181:9:181:42 | tainted | tst.js:184:67:184:73 | tainted | provenance | | -| tst.js:181:9:181:42 | tainted | tst.js:220:35:220:41 | tainted | provenance | | -| tst.js:181:9:181:42 | tainted | tst.js:222:20:222:26 | tainted | provenance | | -| tst.js:181:9:181:42 | tainted | tst.js:224:23:224:29 | tainted | provenance | | -| tst.js:181:9:181:42 | tainted | tst.js:225:23:225:29 | tainted | provenance | | -| tst.js:181:9:181:42 | tainted | tst.js:239:23:239:29 | tainted | provenance | | -| tst.js:181:19:181:42 | documen ... .search | tst.js:181:9:181:42 | tainted | provenance | | +| tst.js:161:9:161:14 | target | tst.js:164:28:164:33 | target | provenance | | +| tst.js:161:18:161:41 | documen ... .search | tst.js:161:9:161:14 | target | provenance | | +| tst.js:168:9:168:15 | tainted | tst.js:170:31:170:37 | tainted | provenance | | +| tst.js:168:9:168:15 | tainted | tst.js:172:42:172:48 | tainted | provenance | | +| tst.js:168:9:168:15 | tainted | tst.js:173:33:173:39 | tainted | provenance | | +| tst.js:168:9:168:15 | tainted | tst.js:175:54:175:60 | tainted | provenance | | +| tst.js:168:9:168:15 | tainted | tst.js:176:45:176:51 | tainted | provenance | | +| tst.js:168:9:168:15 | tainted | tst.js:177:49:177:55 | tainted | provenance | | +| tst.js:168:19:168:42 | documen ... .search | tst.js:168:9:168:15 | tainted | provenance | | +| tst.js:181:9:181:15 | tainted | tst.js:183:67:183:73 | tainted | provenance | | +| tst.js:181:9:181:15 | tainted | tst.js:184:67:184:73 | tainted | provenance | | +| tst.js:181:9:181:15 | tainted | tst.js:220:35:220:41 | tainted | provenance | | +| tst.js:181:9:181:15 | tainted | tst.js:222:20:222:26 | tainted | provenance | | +| tst.js:181:9:181:15 | tainted | tst.js:224:23:224:29 | tainted | provenance | | +| tst.js:181:9:181:15 | tainted | tst.js:225:23:225:29 | tainted | provenance | | +| tst.js:181:9:181:15 | tainted | tst.js:239:23:239:29 | tainted | provenance | | +| tst.js:181:19:181:42 | documen ... .search | tst.js:181:9:181:15 | tainted | provenance | | | tst.js:183:67:183:73 | tainted | tst.js:184:67:184:73 | tainted | provenance | | | tst.js:184:67:184:73 | tainted | tst.js:188:35:188:41 | tainted | provenance | | | tst.js:184:67:184:73 | tainted | tst.js:190:46:190:52 | tainted | provenance | | @@ -658,8 +658,8 @@ edges | tst.js:225:23:225:29 | tainted | tst.js:239:23:239:29 | tainted | provenance | | | tst.js:231:39:231:55 | props.propTainted | tst.js:235:60:235:82 | this.st ... Tainted | provenance | | | tst.js:239:23:239:29 | tainted | tst.js:231:39:231:55 | props.propTainted | provenance | | -| tst.js:269:9:269:29 | tainted | tst.js:272:59:272:65 | tainted | provenance | | -| tst.js:269:19:269:29 | window.name | tst.js:269:9:269:29 | tainted | provenance | | +| tst.js:269:9:269:15 | tainted | tst.js:272:59:272:65 | tainted | provenance | | +| tst.js:269:19:269:29 | window.name | tst.js:269:9:269:15 | tainted | provenance | | | tst.js:285:9:285:16 | location | tst.js:286:10:286:10 | e | provenance | | | tst.js:286:10:286:10 | e | tst.js:287:20:287:20 | e | provenance | | | tst.js:292:10:292:17 | location | tst.js:294:10:294:10 | e | provenance | | @@ -668,34 +668,34 @@ edges | tst.js:311:10:311:35 | new URL ... cation) [searchParams] | tst.js:315:16:315:30 | getTaintedUrl() [searchParams] | provenance | | | tst.js:311:18:311:34 | document.location | tst.js:311:10:311:35 | new URL ... cation) [searchParams, MapValue] | provenance | | | tst.js:311:18:311:34 | document.location | tst.js:311:10:311:35 | new URL ... cation) [searchParams] | provenance | | -| tst.js:315:7:315:43 | params | tst.js:316:18:316:23 | params | provenance | | -| tst.js:315:7:315:43 | params [MapValue] | tst.js:316:18:316:23 | params [MapValue] | provenance | | +| tst.js:315:7:315:12 | params | tst.js:316:18:316:23 | params | provenance | | +| tst.js:315:7:315:12 | params [MapValue] | tst.js:316:18:316:23 | params [MapValue] | provenance | | | tst.js:315:16:315:30 | getTaintedUrl() [searchParams, MapValue] | tst.js:315:16:315:43 | getTain ... hParams [MapValue] | provenance | | | tst.js:315:16:315:30 | getTaintedUrl() [searchParams] | tst.js:315:16:315:43 | getTain ... hParams | provenance | | -| tst.js:315:16:315:43 | getTain ... hParams | tst.js:315:7:315:43 | params | provenance | | -| tst.js:315:16:315:43 | getTain ... hParams [MapValue] | tst.js:315:7:315:43 | params [MapValue] | provenance | | +| tst.js:315:16:315:43 | getTain ... hParams | tst.js:315:7:315:12 | params | provenance | | +| tst.js:315:16:315:43 | getTain ... hParams [MapValue] | tst.js:315:7:315:12 | params [MapValue] | provenance | | | tst.js:316:18:316:23 | params | tst.js:316:18:316:35 | params.get('name') | provenance | Config | | tst.js:316:18:316:23 | params [MapValue] | tst.js:316:18:316:35 | params.get('name') | provenance | | | tst.js:325:12:325:37 | new URL ... cation) [hash] | tst.js:327:5:327:12 | getUrl() [hash] | provenance | | | tst.js:325:20:325:36 | document.location | tst.js:325:12:325:37 | new URL ... cation) [hash] | provenance | | | tst.js:327:5:327:12 | getUrl() [hash] | tst.js:327:5:327:17 | getUrl().hash | provenance | | | tst.js:327:5:327:17 | getUrl().hash | tst.js:327:5:327:30 | getUrl( ... ring(1) | provenance | Config | -| tst.js:332:7:332:39 | target | tst.js:333:12:333:17 | target | provenance | | -| tst.js:332:16:332:39 | documen ... .search | tst.js:332:7:332:39 | target | provenance | | -| tst.js:339:10:339:42 | target | tst.js:340:16:340:21 | target | provenance | | -| tst.js:339:10:339:42 | target | tst.js:341:20:341:25 | target | provenance | | -| tst.js:339:19:339:42 | documen ... .search | tst.js:339:10:339:42 | target | provenance | | +| tst.js:332:7:332:12 | target | tst.js:333:12:333:17 | target | provenance | | +| tst.js:332:16:332:39 | documen ... .search | tst.js:332:7:332:12 | target | provenance | | +| tst.js:339:10:339:15 | target | tst.js:340:16:340:21 | target | provenance | | +| tst.js:339:10:339:15 | target | tst.js:341:20:341:25 | target | provenance | | +| tst.js:339:19:339:42 | documen ... .search | tst.js:339:10:339:15 | target | provenance | | | tst.js:340:16:340:21 | target | tst.js:341:20:341:25 | target | provenance | | | tst.js:341:20:341:25 | target | tst.js:344:21:344:26 | target | provenance | | | tst.js:341:20:341:25 | target | tst.js:347:18:347:23 | target | provenance | | -| tst.js:355:7:355:39 | target | tst.js:357:18:357:23 | target | provenance | | -| tst.js:355:16:355:39 | documen ... .search | tst.js:355:7:355:39 | target | provenance | | -| tst.js:364:7:364:39 | target | tst.js:367:18:367:23 | target | provenance | | -| tst.js:364:7:364:39 | target | tst.js:369:18:369:23 | target | provenance | | -| tst.js:364:7:364:39 | target | tst.js:380:18:380:23 | target | provenance | | -| tst.js:364:7:364:39 | target | tst.js:389:18:389:23 | target | provenance | | -| tst.js:364:7:364:39 | target | tst.js:391:19:391:24 | target | provenance | | -| tst.js:364:16:364:39 | documen ... .search | tst.js:364:7:364:39 | target | provenance | | +| tst.js:355:7:355:12 | target | tst.js:357:18:357:23 | target | provenance | | +| tst.js:355:16:355:39 | documen ... .search | tst.js:355:7:355:12 | target | provenance | | +| tst.js:364:7:364:12 | target | tst.js:367:18:367:23 | target | provenance | | +| tst.js:364:7:364:12 | target | tst.js:369:18:369:23 | target | provenance | | +| tst.js:364:7:364:12 | target | tst.js:380:18:380:23 | target | provenance | | +| tst.js:364:7:364:12 | target | tst.js:389:18:389:23 | target | provenance | | +| tst.js:364:7:364:12 | target | tst.js:391:19:391:24 | target | provenance | | +| tst.js:364:16:364:39 | documen ... .search | tst.js:364:7:364:12 | target | provenance | | | tst.js:369:18:369:23 | target | tst.js:369:18:369:29 | target.taint | provenance | | | tst.js:374:3:374:8 | [post update] target [taint3] | tst.js:375:18:375:23 | target [taint3] | provenance | | | tst.js:374:19:374:42 | documen ... .search | tst.js:374:3:374:8 | [post update] target [taint3] | provenance | | @@ -708,64 +708,64 @@ edges | tst.js:391:19:391:24 | target [taint8] | tst.js:391:19:391:31 | target.taint8 | provenance | | | tst.js:391:19:391:31 | target.taint8 | tst.js:391:3:391:8 | [post update] target [taint8] | provenance | | | tst.js:392:18:392:23 | target [taint8] | tst.js:392:18:392:30 | target.taint8 | provenance | | -| tst.js:399:7:399:46 | payload | tst.js:400:18:400:24 | payload | provenance | | +| tst.js:399:7:399:13 | payload | tst.js:400:18:400:24 | payload | provenance | | | tst.js:399:17:399:36 | window.location.hash | tst.js:399:17:399:46 | window. ... bstr(1) | provenance | | | tst.js:399:17:399:36 | window.location.hash | tst.js:399:17:399:46 | window. ... bstr(1) | provenance | Config | -| tst.js:399:17:399:46 | window. ... bstr(1) | tst.js:399:7:399:46 | payload | provenance | | -| tst.js:402:7:402:55 | match | tst.js:404:20:404:24 | match | provenance | | +| tst.js:399:17:399:46 | window. ... bstr(1) | tst.js:399:7:399:13 | payload | provenance | | +| tst.js:402:7:402:11 | match | tst.js:404:20:404:24 | match | provenance | | | tst.js:402:15:402:34 | window.location.hash | tst.js:402:15:402:55 | window. ... (\\w+)/) | provenance | | -| tst.js:402:15:402:55 | window. ... (\\w+)/) | tst.js:402:7:402:55 | match | provenance | | +| tst.js:402:15:402:55 | window. ... (\\w+)/) | tst.js:402:7:402:11 | match | provenance | | | tst.js:404:20:404:24 | match | tst.js:404:20:404:27 | match[1] | provenance | | | tst.js:407:18:407:37 | window.location.hash | tst.js:407:18:407:48 | window. ... it('#') [1] | provenance | Config | | tst.js:407:18:407:48 | window. ... it('#') [1] | tst.js:407:18:407:51 | window. ... '#')[1] | provenance | | -| tst.js:411:7:411:39 | target | tst.js:413:18:413:23 | target | provenance | | -| tst.js:411:16:411:39 | documen ... .search | tst.js:411:7:411:39 | target | provenance | | +| tst.js:411:7:411:12 | target | tst.js:413:18:413:23 | target | provenance | | +| tst.js:411:16:411:39 | documen ... .search | tst.js:411:7:411:12 | target | provenance | | | tst.js:413:18:413:23 | target | tst.js:413:18:413:89 | target. ... data>') | provenance | | -| tst.js:419:6:419:38 | source | tst.js:423:28:423:33 | source | provenance | | -| tst.js:419:6:419:38 | source | tst.js:424:33:424:38 | source | provenance | | -| tst.js:419:6:419:38 | source | tst.js:425:34:425:39 | source | provenance | | -| tst.js:419:6:419:38 | source | tst.js:426:41:426:46 | source | provenance | | -| tst.js:419:6:419:38 | source | tst.js:427:44:427:49 | source | provenance | | -| tst.js:419:6:419:38 | source | tst.js:428:32:428:37 | source | provenance | | -| tst.js:419:15:419:38 | documen ... .search | tst.js:419:6:419:38 | source | provenance | | -| tst.js:436:7:436:39 | source | tst.js:438:18:438:23 | source | provenance | | -| tst.js:436:7:436:39 | source | tst.js:439:36:439:41 | source | provenance | | -| tst.js:436:16:436:39 | documen ... .search | tst.js:436:7:436:39 | source | provenance | | +| tst.js:419:6:419:11 | source | tst.js:423:28:423:33 | source | provenance | | +| tst.js:419:6:419:11 | source | tst.js:424:33:424:38 | source | provenance | | +| tst.js:419:6:419:11 | source | tst.js:425:34:425:39 | source | provenance | | +| tst.js:419:6:419:11 | source | tst.js:426:41:426:46 | source | provenance | | +| tst.js:419:6:419:11 | source | tst.js:427:44:427:49 | source | provenance | | +| tst.js:419:6:419:11 | source | tst.js:428:32:428:37 | source | provenance | | +| tst.js:419:15:419:38 | documen ... .search | tst.js:419:6:419:11 | source | provenance | | +| tst.js:436:7:436:12 | source | tst.js:438:18:438:23 | source | provenance | | +| tst.js:436:7:436:12 | source | tst.js:439:36:439:41 | source | provenance | | +| tst.js:436:16:436:39 | documen ... .search | tst.js:436:7:436:12 | source | provenance | | | tst.js:439:36:439:41 | source | tst.js:439:18:439:42 | ansiToH ... source) | provenance | | -| tst.js:443:6:443:38 | source | tst.js:446:21:446:26 | source | provenance | | -| tst.js:443:6:443:38 | source | tst.js:448:19:448:24 | source | provenance | | -| tst.js:443:6:443:38 | source | tst.js:450:20:450:25 | source | provenance | | -| tst.js:443:15:443:38 | documen ... .search | tst.js:443:6:443:38 | source | provenance | | -| tst.js:454:7:454:46 | url | tst.js:456:19:456:21 | url | provenance | | -| tst.js:454:7:454:46 | url | tst.js:457:26:457:28 | url | provenance | | -| tst.js:454:7:454:46 | url | tst.js:458:25:458:27 | url | provenance | | -| tst.js:454:7:454:46 | url | tst.js:459:20:459:22 | url | provenance | | -| tst.js:454:7:454:46 | url | tst.js:469:22:469:24 | url | provenance | | +| tst.js:443:6:443:11 | source | tst.js:446:21:446:26 | source | provenance | | +| tst.js:443:6:443:11 | source | tst.js:448:19:448:24 | source | provenance | | +| tst.js:443:6:443:11 | source | tst.js:450:20:450:25 | source | provenance | | +| tst.js:443:15:443:38 | documen ... .search | tst.js:443:6:443:11 | source | provenance | | +| tst.js:454:7:454:9 | url | tst.js:456:19:456:21 | url | provenance | | +| tst.js:454:7:454:9 | url | tst.js:457:26:457:28 | url | provenance | | +| tst.js:454:7:454:9 | url | tst.js:458:25:458:27 | url | provenance | | +| tst.js:454:7:454:9 | url | tst.js:459:20:459:22 | url | provenance | | +| tst.js:454:7:454:9 | url | tst.js:469:22:469:24 | url | provenance | | | tst.js:454:13:454:36 | documen ... .search | tst.js:454:13:454:46 | documen ... bstr(1) | provenance | Config | -| tst.js:454:13:454:46 | documen ... bstr(1) | tst.js:454:7:454:46 | url | provenance | | +| tst.js:454:13:454:46 | documen ... bstr(1) | tst.js:454:7:454:9 | url | provenance | | | tst.js:474:23:474:35 | location.hash | tst.js:474:23:474:45 | locatio ... bstr(1) | provenance | Config | | tst.js:477:18:477:30 | location.hash | tst.js:477:18:477:40 | locatio ... bstr(1) | provenance | Config | | tst.js:484:43:484:62 | window.location.hash | tst.js:484:33:484:63 | decodeU ... n.hash) | provenance | | -| tst.js:491:7:491:39 | target | tst.js:492:18:492:23 | target | provenance | | -| tst.js:491:16:491:39 | documen ... .search | tst.js:491:7:491:39 | target | provenance | | +| tst.js:491:7:491:12 | target | tst.js:492:18:492:23 | target | provenance | | +| tst.js:491:16:491:39 | documen ... .search | tst.js:491:7:491:12 | target | provenance | | | tst.js:492:18:492:23 | target | tst.js:492:18:492:54 | target. ... "), '') | provenance | | -| tst.js:498:7:498:26 | source | tst.js:499:27:499:32 | source | provenance | | -| tst.js:498:16:498:26 | window.name | tst.js:498:7:498:26 | source | provenance | | +| tst.js:498:7:498:12 | source | tst.js:499:27:499:32 | source | provenance | | +| tst.js:498:16:498:26 | window.name | tst.js:498:7:498:12 | source | provenance | | | tst.js:499:27:499:32 | source | tst.js:499:18:499:33 | unescape(source) | provenance | | -| typeahead.js:20:13:20:45 | target | typeahead.js:21:12:21:17 | target | provenance | | -| typeahead.js:20:22:20:45 | documen ... .search | typeahead.js:20:13:20:45 | target | provenance | | +| typeahead.js:20:13:20:18 | target | typeahead.js:21:12:21:17 | target | provenance | | +| typeahead.js:20:22:20:45 | documen ... .search | typeahead.js:20:13:20:18 | target | provenance | | | typeahead.js:21:12:21:17 | target | typeahead.js:24:30:24:32 | val | provenance | | | typeahead.js:24:30:24:32 | val | typeahead.js:25:18:25:20 | val | provenance | | | v-html.vue:6:42:6:58 | document.location | v-html.vue:2:8:2:23 | v-html=tainted | provenance | | -| various-concat-obfuscations.js:2:6:2:39 | tainted | various-concat-obfuscations.js:4:14:4:20 | tainted | provenance | | -| various-concat-obfuscations.js:2:6:2:39 | tainted | various-concat-obfuscations.js:5:12:5:18 | tainted | provenance | | -| various-concat-obfuscations.js:2:6:2:39 | tainted | various-concat-obfuscations.js:6:19:6:25 | tainted | provenance | | -| various-concat-obfuscations.js:2:6:2:39 | tainted | various-concat-obfuscations.js:7:14:7:20 | tainted | provenance | | -| various-concat-obfuscations.js:2:6:2:39 | tainted | various-concat-obfuscations.js:9:19:9:25 | tainted | provenance | | -| various-concat-obfuscations.js:2:6:2:39 | tainted | various-concat-obfuscations.js:10:16:10:22 | tainted | provenance | | -| various-concat-obfuscations.js:2:6:2:39 | tainted | various-concat-obfuscations.js:11:24:11:30 | tainted | provenance | | -| various-concat-obfuscations.js:2:6:2:39 | tainted | various-concat-obfuscations.js:12:19:12:25 | tainted | provenance | | -| various-concat-obfuscations.js:2:16:2:39 | documen ... .search | various-concat-obfuscations.js:2:6:2:39 | tainted | provenance | | +| various-concat-obfuscations.js:2:6:2:12 | tainted | various-concat-obfuscations.js:4:14:4:20 | tainted | provenance | | +| various-concat-obfuscations.js:2:6:2:12 | tainted | various-concat-obfuscations.js:5:12:5:18 | tainted | provenance | | +| various-concat-obfuscations.js:2:6:2:12 | tainted | various-concat-obfuscations.js:6:19:6:25 | tainted | provenance | | +| various-concat-obfuscations.js:2:6:2:12 | tainted | various-concat-obfuscations.js:7:14:7:20 | tainted | provenance | | +| various-concat-obfuscations.js:2:6:2:12 | tainted | various-concat-obfuscations.js:9:19:9:25 | tainted | provenance | | +| various-concat-obfuscations.js:2:6:2:12 | tainted | various-concat-obfuscations.js:10:16:10:22 | tainted | provenance | | +| various-concat-obfuscations.js:2:6:2:12 | tainted | various-concat-obfuscations.js:11:24:11:30 | tainted | provenance | | +| various-concat-obfuscations.js:2:6:2:12 | tainted | various-concat-obfuscations.js:12:19:12:25 | tainted | provenance | | +| various-concat-obfuscations.js:2:16:2:39 | documen ... .search | various-concat-obfuscations.js:2:6:2:12 | tainted | provenance | | | various-concat-obfuscations.js:4:14:4:20 | tainted | various-concat-obfuscations.js:4:4:4:31 | "
    " ...
    " | provenance | Config | | various-concat-obfuscations.js:5:12:5:18 | tainted | various-concat-obfuscations.js:5:4:5:26 | `
    $ ...
    ` | provenance | Config | | various-concat-obfuscations.js:6:4:6:26 | "
    " ... ainted) | various-concat-obfuscations.js:6:4:6:43 | "
    " ... /div>") | provenance | | @@ -795,17 +795,17 @@ edges | various-concat-obfuscations.js:21:17:21:40 | documen ... .search | various-concat-obfuscations.js:21:17:21:46 | documen ... h.attrs | provenance | | | various-concat-obfuscations.js:21:17:21:46 | documen ... h.attrs | various-concat-obfuscations.js:17:24:17:28 | attrs | provenance | | | various-concat-obfuscations.js:21:17:21:46 | documen ... h.attrs | various-concat-obfuscations.js:21:4:21:47 | indirec ... .attrs) | provenance | Config | -| winjs.js:2:7:2:53 | tainted | winjs.js:3:43:3:49 | tainted | provenance | | -| winjs.js:2:7:2:53 | tainted | winjs.js:4:43:4:49 | tainted | provenance | | +| winjs.js:2:7:2:13 | tainted | winjs.js:3:43:3:49 | tainted | provenance | | +| winjs.js:2:7:2:13 | tainted | winjs.js:4:43:4:49 | tainted | provenance | | | winjs.js:2:17:2:40 | documen ... .search | winjs.js:2:17:2:53 | documen ... ring(1) | provenance | | | winjs.js:2:17:2:40 | documen ... .search | winjs.js:2:17:2:53 | documen ... ring(1) | provenance | Config | -| winjs.js:2:17:2:53 | documen ... ring(1) | winjs.js:2:7:2:53 | tainted | provenance | | +| winjs.js:2:17:2:53 | documen ... ring(1) | winjs.js:2:7:2:13 | tainted | provenance | | nodes | addEventListener.js:1:43:1:47 | event | semmle.label | event | | addEventListener.js:2:20:2:24 | event | semmle.label | event | | addEventListener.js:2:20:2:29 | event.data | semmle.label | event.data | -| addEventListener.js:5:43:5:48 | data | semmle.label | data | | addEventListener.js:5:43:5:48 | {data} | semmle.label | {data} | +| addEventListener.js:5:44:5:47 | data | semmle.label | data | | addEventListener.js:6:20:6:23 | data | semmle.label | data | | addEventListener.js:10:21:10:25 | event | semmle.label | event | | addEventListener.js:12:24:12:28 | event | semmle.label | event | @@ -855,19 +855,19 @@ nodes | classnames.js:17:32:17:79 | `` | semmle.label | `` | | classnames.js:17:48:17:64 | clsx(window.name) | semmle.label | clsx(window.name) | | classnames.js:17:53:17:63 | window.name | semmle.label | window.name | -| clipboard.ts:8:11:8:51 | html | semmle.label | html | +| clipboard.ts:8:11:8:14 | html | semmle.label | html | | clipboard.ts:8:18:8:51 | clipboa ... /html') | semmle.label | clipboa ... /html') | | clipboard.ts:15:25:15:28 | html | semmle.label | html | | clipboard.ts:24:23:24:58 | e.clipb ... /html') | semmle.label | e.clipb ... /html') | | clipboard.ts:29:19:29:54 | e.clipb ... /html') | semmle.label | e.clipb ... /html') | | clipboard.ts:33:19:33:68 | e.origi ... /html') | semmle.label | e.origi ... /html') | -| clipboard.ts:43:15:43:55 | html | semmle.label | html | +| clipboard.ts:43:15:43:18 | html | semmle.label | html | | clipboard.ts:43:22:43:55 | clipboa ... /html') | semmle.label | clipboa ... /html') | | clipboard.ts:50:29:50:32 | html | semmle.label | html | -| clipboard.ts:71:13:71:62 | droppedHtml | semmle.label | droppedHtml | +| clipboard.ts:71:13:71:23 | droppedHtml | semmle.label | droppedHtml | | clipboard.ts:71:27:71:62 | e.clipb ... /html') | semmle.label | e.clipb ... /html') | | clipboard.ts:73:29:73:39 | droppedHtml | semmle.label | droppedHtml | -| clipboard.ts:98:15:98:54 | html | semmle.label | html | +| clipboard.ts:98:15:98:18 | html | semmle.label | html | | clipboard.ts:98:22:98:54 | dataTra ... /html') | semmle.label | dataTra ... /html') | | clipboard.ts:99:23:99:26 | html | semmle.label | html | | custom-element.js:5:26:5:36 | window.name | semmle.label | window.name | @@ -876,7 +876,7 @@ nodes | d3.js:12:20:12:29 | getTaint() | semmle.label | getTaint() | | d3.js:14:20:14:29 | getTaint() | semmle.label | getTaint() | | d3.js:21:15:21:24 | getTaint() | semmle.label | getTaint() | -| dates.js:9:9:9:69 | taint | semmle.label | taint | +| dates.js:9:9:9:13 | taint | semmle.label | taint | | dates.js:9:17:9:69 | decodeU ... ing(1)) | semmle.label | decodeU ... ing(1)) | | dates.js:9:36:9:55 | window.location.hash | semmle.label | window.location.hash | | dates.js:9:36:9:68 | window. ... ring(1) | semmle.label | window. ... ring(1) | @@ -898,7 +898,7 @@ nodes | dates.js:21:31:21:68 | `Time i ... aint)}` | semmle.label | `Time i ... aint)}` | | dates.js:21:42:21:66 | dayjs(t ... (taint) | semmle.label | dayjs(t ... (taint) | | dates.js:21:61:21:65 | taint | semmle.label | taint | -| dates.js:30:9:30:69 | taint | semmle.label | taint | +| dates.js:30:9:30:13 | taint | semmle.label | taint | | dates.js:30:17:30:69 | decodeU ... ing(1)) | semmle.label | decodeU ... ing(1)) | | dates.js:30:36:30:55 | window.location.hash | semmle.label | window.location.hash | | dates.js:30:36:30:68 | window. ... ring(1) | semmle.label | window. ... ring(1) | @@ -914,7 +914,7 @@ nodes | dates.js:40:31:40:84 | `Time i ... aint)}` | semmle.label | `Time i ... aint)}` | | dates.js:40:42:40:82 | dayjs.f ... taint) | semmle.label | dayjs.f ... taint) | | dates.js:40:77:40:81 | taint | semmle.label | taint | -| dates.js:46:9:46:69 | taint | semmle.label | taint | +| dates.js:46:9:46:13 | taint | semmle.label | taint | | dates.js:46:17:46:69 | decodeU ... ing(1)) | semmle.label | decodeU ... ing(1)) | | dates.js:46:36:46:55 | window.location.hash | semmle.label | window.location.hash | | dates.js:46:36:46:68 | window. ... ring(1) | semmle.label | window. ... ring(1) | @@ -927,7 +927,7 @@ nodes | dates.js:50:31:50:104 | `Time i ... aint)}` | semmle.label | `Time i ... aint)}` | | dates.js:50:42:50:102 | DateTim ... (taint) | semmle.label | DateTim ... (taint) | | dates.js:50:97:50:101 | taint | semmle.label | taint | -| dates.js:54:9:54:69 | taint | semmle.label | taint | +| dates.js:54:9:54:13 | taint | semmle.label | taint | | dates.js:54:17:54:69 | decodeU ... ing(1)) | semmle.label | decodeU ... ing(1)) | | dates.js:54:36:54:55 | window.location.hash | semmle.label | window.location.hash | | dates.js:54:36:54:68 | window. ... ring(1) | semmle.label | window. ... ring(1) | @@ -941,16 +941,16 @@ nodes | dates.js:61:42:61:86 | dayjs.s ... (taint) | semmle.label | dayjs.s ... (taint) | | dates.js:61:81:61:85 | taint | semmle.label | taint | | dom.js:4:20:4:30 | window.name | semmle.label | window.name | -| dragAndDrop.ts:8:11:8:50 | html | semmle.label | html | +| dragAndDrop.ts:8:11:8:14 | html | semmle.label | html | | dragAndDrop.ts:8:18:8:50 | dataTra ... /html') | semmle.label | dataTra ... /html') | | dragAndDrop.ts:15:25:15:28 | html | semmle.label | html | | dragAndDrop.ts:24:23:24:57 | e.dataT ... /html') | semmle.label | e.dataT ... /html') | | dragAndDrop.ts:29:19:29:53 | e.dataT ... /html') | semmle.label | e.dataT ... /html') | | dragAndDrop.ts:33:19:33:67 | e.origi ... /html') | semmle.label | e.origi ... /html') | -| dragAndDrop.ts:43:15:43:54 | html | semmle.label | html | +| dragAndDrop.ts:43:15:43:18 | html | semmle.label | html | | dragAndDrop.ts:43:22:43:54 | dataTra ... /html') | semmle.label | dataTra ... /html') | | dragAndDrop.ts:50:29:50:32 | html | semmle.label | html | -| dragAndDrop.ts:71:13:71:61 | droppedHtml | semmle.label | droppedHtml | +| dragAndDrop.ts:71:13:71:23 | droppedHtml | semmle.label | droppedHtml | | dragAndDrop.ts:71:27:71:61 | e.dataT ... /html') | semmle.label | e.dataT ... /html') | | dragAndDrop.ts:73:29:73:39 | droppedHtml | semmle.label | droppedHtml | | event-handler-receiver.js:2:31:2:83 | '

    ' | semmle.label | '

    ' | @@ -958,7 +958,7 @@ nodes | express.js:6:15:6:33 | req.param("wobble") | semmle.label | req.param("wobble") | | jquery-declare-any.ts:6:7:6:17 | window.name | semmle.label | window.name | | jquery-declare-type.ts:6:7:6:17 | window.name | semmle.label | window.name | -| jquery.js:2:7:2:40 | tainted | semmle.label | tainted | +| jquery.js:2:7:2:13 | tainted | semmle.label | tainted | | jquery.js:2:17:2:40 | documen ... .search | semmle.label | documen ... .search | | jquery.js:4:5:4:11 | tainted | semmle.label | tainted | | jquery.js:5:13:5:19 | tainted | semmle.label | tainted | @@ -977,7 +977,7 @@ nodes | jquery.js:16:19:16:64 | decodeU ... ring()) | semmle.label | decodeU ... ring()) | | jquery.js:16:38:16:52 | window.location | semmle.label | window.location | | jquery.js:16:38:16:63 | window. ... tring() | semmle.label | window. ... tring() | -| jquery.js:18:7:18:33 | hash | semmle.label | hash | +| jquery.js:18:7:18:10 | hash | semmle.label | hash | | jquery.js:18:14:18:33 | window.location.hash | semmle.label | window.location.hash | | jquery.js:21:5:21:8 | hash | semmle.label | hash | | jquery.js:21:5:21:21 | hash.substring(1) | semmle.label | hash.substring(1) | @@ -996,14 +996,14 @@ nodes | jquery.js:36:25:36:31 | tainted | semmle.label | tainted | | jquery.js:37:25:37:37 | () => tainted | semmle.label | () => tainted | | jquery.js:37:31:37:37 | tainted | semmle.label | tainted | -| json-stringify.jsx:5:9:5:36 | locale | semmle.label | locale | +| json-stringify.jsx:5:9:5:14 | locale | semmle.label | locale | | json-stringify.jsx:5:18:5:36 | req.param("locale") | semmle.label | req.param("locale") | | json-stringify.jsx:11:51:11:56 | locale | semmle.label | locale | | json-stringify.jsx:19:56:19:61 | locale | semmle.label | locale | | json-stringify.jsx:31:40:31:61 | JSON.st ... locale) | semmle.label | JSON.st ... locale) | | json-stringify.jsx:31:55:31:60 | locale | semmle.label | locale | | json-stringify.jsx:35:40:35:61 | JSON.st ... jsonLD) | semmle.label | JSON.st ... jsonLD) | -| jwt-server.js:7:9:7:35 | taint | semmle.label | taint | +| jwt-server.js:7:9:7:13 | taint | semmle.label | taint | | jwt-server.js:7:17:7:35 | req.param("wobble") | semmle.label | req.param("wobble") | | jwt-server.js:9:16:9:20 | taint | semmle.label | taint | | jwt-server.js:9:55:9:61 | decoded | semmle.label | decoded | @@ -1011,30 +1011,30 @@ nodes | jwt-server.js:10:19:10:29 | decoded.foo | semmle.label | decoded.foo | | nodemailer.js:13:11:13:69 | `Hi, yo ... sage}.` | semmle.label | `Hi, yo ... sage}.` | | nodemailer.js:13:50:13:66 | req.query.message | semmle.label | req.query.message | -| optionalSanitizer.js:2:7:2:39 | target | semmle.label | target | +| optionalSanitizer.js:2:7:2:12 | target | semmle.label | target | | optionalSanitizer.js:2:16:2:39 | documen ... .search | semmle.label | documen ... .search | | optionalSanitizer.js:6:18:6:23 | target | semmle.label | target | -| optionalSanitizer.js:8:7:8:22 | tainted | semmle.label | tainted | +| optionalSanitizer.js:8:7:8:13 | tainted | semmle.label | tainted | | optionalSanitizer.js:8:17:8:22 | target | semmle.label | target | | optionalSanitizer.js:9:18:9:24 | tainted | semmle.label | tainted | | optionalSanitizer.js:15:9:15:14 | target | semmle.label | target | | optionalSanitizer.js:16:18:16:18 | x | semmle.label | x | | optionalSanitizer.js:17:20:17:20 | x | semmle.label | x | -| optionalSanitizer.js:26:7:26:39 | target | semmle.label | target | +| optionalSanitizer.js:26:7:26:12 | target | semmle.label | target | | optionalSanitizer.js:26:16:26:39 | documen ... .search | semmle.label | documen ... .search | | optionalSanitizer.js:28:24:28:24 | x | semmle.label | x | | optionalSanitizer.js:29:12:29:12 | x | semmle.label | x | -| optionalSanitizer.js:31:7:31:23 | tainted2 | semmle.label | tainted2 | +| optionalSanitizer.js:31:7:31:14 | tainted2 | semmle.label | tainted2 | | optionalSanitizer.js:31:18:31:23 | target | semmle.label | target | | optionalSanitizer.js:32:18:32:25 | tainted2 | semmle.label | tainted2 | -| optionalSanitizer.js:34:5:34:36 | tainted2 | semmle.label | tainted2 | +| optionalSanitizer.js:34:5:34:12 | tainted2 | semmle.label | tainted2 | | optionalSanitizer.js:34:16:34:36 | sanitiz ... inted2) | semmle.label | sanitiz ... inted2) | | optionalSanitizer.js:34:28:34:35 | tainted2 | semmle.label | tainted2 | | optionalSanitizer.js:36:18:36:25 | tainted2 | semmle.label | tainted2 | -| optionalSanitizer.js:38:7:38:23 | tainted3 | semmle.label | tainted3 | +| optionalSanitizer.js:38:7:38:14 | tainted3 | semmle.label | tainted3 | | optionalSanitizer.js:38:18:38:23 | target | semmle.label | target | | optionalSanitizer.js:39:18:39:25 | tainted3 | semmle.label | tainted3 | -| optionalSanitizer.js:41:5:41:36 | tainted3 | semmle.label | tainted3 | +| optionalSanitizer.js:41:5:41:12 | tainted3 | semmle.label | tainted3 | | optionalSanitizer.js:41:16:41:36 | sanitiz ... inted3) | semmle.label | sanitiz ... inted3) | | optionalSanitizer.js:41:28:41:35 | tainted3 | semmle.label | tainted3 | | optionalSanitizer.js:43:18:43:25 | tainted3 | semmle.label | tainted3 | @@ -1045,7 +1045,7 @@ nodes | pages/[id].jsx:3:30:3:35 | params [id] | semmle.label | params [id] | | pages/[id].jsx:3:30:3:35 | params [q] | semmle.label | params [q] | | pages/[id].jsx:5:9:5:14 | { id } | semmle.label | { id } | -| pages/[id].jsx:5:9:5:29 | id | semmle.label | id | +| pages/[id].jsx:5:11:5:12 | id | semmle.label | id | | pages/[id].jsx:5:18:5:29 | router.query | semmle.label | router.query | | pages/[id].jsx:10:44:10:45 | id | semmle.label | id | | pages/[id].jsx:13:44:13:49 | params [id] | semmle.label | params [id] | @@ -1058,7 +1058,7 @@ nodes | pages/[id].jsx:25:11:25:33 | context ... d \|\| "" | semmle.label | context ... d \|\| "" | | pages/[id].jsx:26:10:26:22 | context.query | semmle.label | context.query | | pages/[id].jsx:26:10:26:36 | context ... r \|\| "" | semmle.label | context ... r \|\| "" | -| react-native.js:7:7:7:33 | tainted | semmle.label | tainted | +| react-native.js:7:7:7:13 | tainted | semmle.label | tainted | | react-native.js:7:17:7:33 | req.param("code") | semmle.label | req.param("code") | | react-native.js:8:18:8:24 | tainted | semmle.label | tainted | | react-native.js:9:27:9:33 | tainted | semmle.label | tainted | @@ -1072,13 +1072,13 @@ nodes | react-use-router.js:23:43:23:61 | router.query.foobar | semmle.label | router.query.foobar | | react-use-router.js:33:21:33:32 | router.query | semmle.label | router.query | | react-use-router.js:33:21:33:39 | router.query.foobar | semmle.label | router.query.foobar | -| react-use-state.js:4:9:4:49 | state | semmle.label | state | +| react-use-state.js:4:10:4:14 | state | semmle.label | state | | react-use-state.js:4:38:4:48 | window.name | semmle.label | window.name | | react-use-state.js:5:51:5:55 | state | semmle.label | state | -| react-use-state.js:9:9:9:43 | state | semmle.label | state | +| react-use-state.js:9:10:9:14 | state | semmle.label | state | | react-use-state.js:10:14:10:24 | window.name | semmle.label | window.name | | react-use-state.js:11:51:11:55 | state | semmle.label | state | -| react-use-state.js:15:9:15:43 | state | semmle.label | state | +| react-use-state.js:15:10:15:14 | state | semmle.label | state | | react-use-state.js:15:10:15:14 | state | semmle.label | state | | react-use-state.js:16:20:16:30 | window.name | semmle.label | window.name | | react-use-state.js:17:51:17:55 | state | semmle.label | state | @@ -1086,7 +1086,7 @@ nodes | react-use-state.js:22:14:22:17 | prev | semmle.label | prev | | react-use-state.js:23:35:23:38 | prev | semmle.label | prev | | react-use-state.js:25:20:25:30 | window.name | semmle.label | window.name | -| sanitiser.js:16:7:16:27 | tainted | semmle.label | tainted | +| sanitiser.js:16:7:16:13 | tainted | semmle.label | tainted | | sanitiser.js:16:17:16:27 | window.name | semmle.label | window.name | | sanitiser.js:23:21:23:44 | '' + ... '' | semmle.label | '' + ... '' | | sanitiser.js:23:29:23:35 | tainted | semmle.label | tainted | @@ -1104,7 +1104,7 @@ nodes | stored-xss.js:3:35:3:58 | documen ... .search | semmle.label | documen ... .search | | stored-xss.js:5:20:5:52 | session ... ssion') | semmle.label | session ... ssion') | | stored-xss.js:8:20:8:48 | localSt ... local') | semmle.label | localSt ... local') | -| stored-xss.js:10:9:10:44 | href | semmle.label | href | +| stored-xss.js:10:9:10:12 | href | semmle.label | href | | stored-xss.js:10:16:10:44 | localSt ... local') | semmle.label | localSt ... local') | | stored-xss.js:12:20:12:54 | "" | semmle.label | "" | | stored-xss.js:12:35:12:38 | href | semmle.label | href | @@ -1124,24 +1124,24 @@ nodes | string-manipulations.js:10:23:10:44 | documen ... on.href | semmle.label | documen ... on.href | | tainted-url-suffix-arguments.js:3:17:3:17 | y | semmle.label | y | | tainted-url-suffix-arguments.js:6:22:6:22 | y | semmle.label | y | -| tainted-url-suffix-arguments.js:11:11:11:36 | url | semmle.label | url | +| tainted-url-suffix-arguments.js:11:11:11:13 | url | semmle.label | url | | tainted-url-suffix-arguments.js:11:17:11:36 | window.location.href | semmle.label | window.location.href | | tainted-url-suffix-arguments.js:12:17:12:19 | url | semmle.label | url | -| tooltip.jsx:6:11:6:30 | source | semmle.label | source | +| tooltip.jsx:6:11:6:16 | source | semmle.label | source | | tooltip.jsx:6:20:6:30 | window.name | semmle.label | window.name | | tooltip.jsx:10:25:10:30 | source | semmle.label | source | | tooltip.jsx:11:25:11:30 | source | semmle.label | source | -| tooltip.jsx:17:11:17:33 | provide [source] | semmle.label | provide [source] | +| tooltip.jsx:17:11:17:17 | provide [source] | semmle.label | provide [source] | | tooltip.jsx:17:21:17:33 | props.provide [source] | semmle.label | props.provide [source] | | tooltip.jsx:18:51:18:57 | provide [source] | semmle.label | provide [source] | | tooltip.jsx:18:51:18:59 | provide() | semmle.label | provide() | -| tooltip.jsx:22:11:22:30 | source | semmle.label | source | +| tooltip.jsx:22:11:22:16 | source | semmle.label | source | | tooltip.jsx:22:20:22:30 | window.name | semmle.label | window.name | | tooltip.jsx:23:38:23:43 | source | semmle.label | source | -| translate.js:6:7:6:39 | target | semmle.label | target | +| translate.js:6:7:6:12 | target | semmle.label | target | | translate.js:6:16:6:39 | documen ... .search | semmle.label | documen ... .search | -| translate.js:7:7:7:61 | searchParams | semmle.label | searchParams | -| translate.js:7:7:7:61 | searchParams [MapValue] | semmle.label | searchParams [MapValue] | +| translate.js:7:7:7:18 | searchParams | semmle.label | searchParams | +| translate.js:7:7:7:18 | searchParams [MapValue] | semmle.label | searchParams [MapValue] | | translate.js:7:22:7:61 | new URL ... ing(1)) | semmle.label | new URL ... ing(1)) | | translate.js:7:22:7:61 | new URL ... ing(1)) [MapValue] | semmle.label | new URL ... ing(1)) [MapValue] | | translate.js:7:42:7:47 | target | semmle.label | target | @@ -1171,7 +1171,7 @@ nodes | tst3.js:9:37:9:42 | data.p | semmle.label | data.p | | tst3.js:10:38:10:41 | data | semmle.label | data | | tst3.js:10:38:10:43 | data.p | semmle.label | data.p | -| tst.js:2:7:2:39 | target | semmle.label | target | +| tst.js:2:7:2:12 | target | semmle.label | target | | tst.js:2:16:2:39 | documen ... .search | semmle.label | documen ... .search | | tst.js:4:18:4:23 | target | semmle.label | target | | tst.js:6:18:6:126 | "" | semmle.label | "" | @@ -1180,8 +1180,8 @@ nodes | tst.js:6:37:6:114 | documen ... t=")+8) | semmle.label | documen ... t=")+8) | | tst.js:9:5:9:42 | '
    ' | semmle.label | '
    ' | | tst.js:9:28:9:33 | target | semmle.label | target | -| tst.js:14:7:14:56 | params | semmle.label | params | -| tst.js:14:7:14:56 | params [MapValue] | semmle.label | params [MapValue] | +| tst.js:14:7:14:12 | params | semmle.label | params | +| tst.js:14:7:14:12 | params [MapValue] | semmle.label | params [MapValue] | | tst.js:14:16:14:43 | (new UR ... ation)) [searchParams, MapValue] | semmle.label | (new UR ... ation)) [searchParams, MapValue] | | tst.js:14:16:14:43 | (new UR ... ation)) [searchParams] | semmle.label | (new UR ... ation)) [searchParams] | | tst.js:14:16:14:56 | (new UR ... hParams | semmle.label | (new UR ... hParams | @@ -1192,8 +1192,8 @@ nodes | tst.js:15:18:15:23 | params | semmle.label | params | | tst.js:15:18:15:23 | params [MapValue] | semmle.label | params [MapValue] | | tst.js:15:18:15:35 | params.get('name') | semmle.label | params.get('name') | -| tst.js:17:7:17:61 | searchParams | semmle.label | searchParams | -| tst.js:17:7:17:61 | searchParams [MapValue] | semmle.label | searchParams [MapValue] | +| tst.js:17:7:17:18 | searchParams | semmle.label | searchParams | +| tst.js:17:7:17:18 | searchParams [MapValue] | semmle.label | searchParams [MapValue] | | tst.js:17:22:17:61 | new URL ... ing(1)) | semmle.label | new URL ... ing(1)) | | tst.js:17:22:17:61 | new URL ... ing(1)) [MapValue] | semmle.label | new URL ... ing(1)) [MapValue] | | tst.js:17:42:17:47 | target | semmle.label | target | @@ -1249,7 +1249,7 @@ nodes | tst.js:76:39:76:62 | documen ... .search | semmle.label | documen ... .search | | tst.js:82:30:82:53 | documen ... .search | semmle.label | documen ... .search | | tst.js:88:25:88:48 | documen ... .search | semmle.label | documen ... .search | -| tst.js:93:7:93:44 | v | semmle.label | v | +| tst.js:93:7:93:7 | v | semmle.label | v | | tst.js:93:11:93:34 | documen ... .search | semmle.label | documen ... .search | | tst.js:93:11:93:44 | documen ... bstr(1) | semmle.label | documen ... bstr(1) | | tst.js:95:18:95:18 | v | semmle.label | v | @@ -1259,10 +1259,10 @@ nodes | tst.js:135:49:135:49 | v | semmle.label | v | | tst.js:139:29:139:46 | xssSourceService() | semmle.label | xssSourceService() | | tst.js:142:40:142:61 | window. ... .search | semmle.label | window. ... .search | -| tst.js:161:9:161:41 | target | semmle.label | target | +| tst.js:161:9:161:14 | target | semmle.label | target | | tst.js:161:18:161:41 | documen ... .search | semmle.label | documen ... .search | | tst.js:164:28:164:33 | target | semmle.label | target | -| tst.js:168:9:168:42 | tainted | semmle.label | tainted | +| tst.js:168:9:168:15 | tainted | semmle.label | tainted | | tst.js:168:19:168:42 | documen ... .search | semmle.label | documen ... .search | | tst.js:170:31:170:37 | tainted | semmle.label | tainted | | tst.js:172:42:172:48 | tainted | semmle.label | tainted | @@ -1270,7 +1270,7 @@ nodes | tst.js:175:54:175:60 | tainted | semmle.label | tainted | | tst.js:176:45:176:51 | tainted | semmle.label | tainted | | tst.js:177:49:177:55 | tainted | semmle.label | tainted | -| tst.js:181:9:181:42 | tainted | semmle.label | tainted | +| tst.js:181:9:181:15 | tainted | semmle.label | tainted | | tst.js:181:19:181:42 | documen ... .search | semmle.label | documen ... .search | | tst.js:183:67:183:73 | tainted | semmle.label | tainted | | tst.js:184:67:184:73 | tainted | semmle.label | tainted | @@ -1297,7 +1297,7 @@ nodes | tst.js:244:7:244:10 | name | semmle.label | name | | tst.js:248:11:248:21 | window.name | semmle.label | window.name | | tst.js:264:22:264:29 | location | semmle.label | location | -| tst.js:269:9:269:29 | tainted | semmle.label | tainted | +| tst.js:269:9:269:15 | tainted | semmle.label | tainted | | tst.js:269:19:269:29 | window.name | semmle.label | window.name | | tst.js:272:59:272:65 | tainted | semmle.label | tainted | | tst.js:285:9:285:16 | location | semmle.label | location | @@ -1310,8 +1310,8 @@ nodes | tst.js:311:10:311:35 | new URL ... cation) [searchParams, MapValue] | semmle.label | new URL ... cation) [searchParams, MapValue] | | tst.js:311:10:311:35 | new URL ... cation) [searchParams] | semmle.label | new URL ... cation) [searchParams] | | tst.js:311:18:311:34 | document.location | semmle.label | document.location | -| tst.js:315:7:315:43 | params | semmle.label | params | -| tst.js:315:7:315:43 | params [MapValue] | semmle.label | params [MapValue] | +| tst.js:315:7:315:12 | params | semmle.label | params | +| tst.js:315:7:315:12 | params [MapValue] | semmle.label | params [MapValue] | | tst.js:315:16:315:30 | getTaintedUrl() [searchParams, MapValue] | semmle.label | getTaintedUrl() [searchParams, MapValue] | | tst.js:315:16:315:30 | getTaintedUrl() [searchParams] | semmle.label | getTaintedUrl() [searchParams] | | tst.js:315:16:315:43 | getTain ... hParams | semmle.label | getTain ... hParams | @@ -1324,19 +1324,19 @@ nodes | tst.js:327:5:327:12 | getUrl() [hash] | semmle.label | getUrl() [hash] | | tst.js:327:5:327:17 | getUrl().hash | semmle.label | getUrl().hash | | tst.js:327:5:327:30 | getUrl( ... ring(1) | semmle.label | getUrl( ... ring(1) | -| tst.js:332:7:332:39 | target | semmle.label | target | +| tst.js:332:7:332:12 | target | semmle.label | target | | tst.js:332:16:332:39 | documen ... .search | semmle.label | documen ... .search | | tst.js:333:12:333:17 | target | semmle.label | target | -| tst.js:339:10:339:42 | target | semmle.label | target | +| tst.js:339:10:339:15 | target | semmle.label | target | | tst.js:339:19:339:42 | documen ... .search | semmle.label | documen ... .search | | tst.js:340:16:340:21 | target | semmle.label | target | | tst.js:341:20:341:25 | target | semmle.label | target | | tst.js:344:21:344:26 | target | semmle.label | target | | tst.js:347:18:347:23 | target | semmle.label | target | -| tst.js:355:7:355:39 | target | semmle.label | target | +| tst.js:355:7:355:12 | target | semmle.label | target | | tst.js:355:16:355:39 | documen ... .search | semmle.label | documen ... .search | | tst.js:357:18:357:23 | target | semmle.label | target | -| tst.js:364:7:364:39 | target | semmle.label | target | +| tst.js:364:7:364:12 | target | semmle.label | target | | tst.js:364:16:364:39 | documen ... .search | semmle.label | documen ... .search | | tst.js:367:18:367:23 | target | semmle.label | target | | tst.js:369:18:369:23 | target | semmle.label | target | @@ -1355,11 +1355,11 @@ nodes | tst.js:391:19:391:31 | target.taint8 | semmle.label | target.taint8 | | tst.js:392:18:392:23 | target [taint8] | semmle.label | target [taint8] | | tst.js:392:18:392:30 | target.taint8 | semmle.label | target.taint8 | -| tst.js:399:7:399:46 | payload | semmle.label | payload | +| tst.js:399:7:399:13 | payload | semmle.label | payload | | tst.js:399:17:399:36 | window.location.hash | semmle.label | window.location.hash | | tst.js:399:17:399:46 | window. ... bstr(1) | semmle.label | window. ... bstr(1) | | tst.js:400:18:400:24 | payload | semmle.label | payload | -| tst.js:402:7:402:55 | match | semmle.label | match | +| tst.js:402:7:402:11 | match | semmle.label | match | | tst.js:402:15:402:34 | window.location.hash | semmle.label | window.location.hash | | tst.js:402:15:402:55 | window. ... (\\w+)/) | semmle.label | window. ... (\\w+)/) | | tst.js:404:20:404:24 | match | semmle.label | match | @@ -1367,11 +1367,11 @@ nodes | tst.js:407:18:407:37 | window.location.hash | semmle.label | window.location.hash | | tst.js:407:18:407:48 | window. ... it('#') [1] | semmle.label | window. ... it('#') [1] | | tst.js:407:18:407:51 | window. ... '#')[1] | semmle.label | window. ... '#')[1] | -| tst.js:411:7:411:39 | target | semmle.label | target | +| tst.js:411:7:411:12 | target | semmle.label | target | | tst.js:411:16:411:39 | documen ... .search | semmle.label | documen ... .search | | tst.js:413:18:413:23 | target | semmle.label | target | | tst.js:413:18:413:89 | target. ... data>') | semmle.label | target. ... data>') | -| tst.js:419:6:419:38 | source | semmle.label | source | +| tst.js:419:6:419:11 | source | semmle.label | source | | tst.js:419:15:419:38 | documen ... .search | semmle.label | documen ... .search | | tst.js:423:28:423:33 | source | semmle.label | source | | tst.js:424:33:424:38 | source | semmle.label | source | @@ -1379,17 +1379,17 @@ nodes | tst.js:426:41:426:46 | source | semmle.label | source | | tst.js:427:44:427:49 | source | semmle.label | source | | tst.js:428:32:428:37 | source | semmle.label | source | -| tst.js:436:7:436:39 | source | semmle.label | source | +| tst.js:436:7:436:12 | source | semmle.label | source | | tst.js:436:16:436:39 | documen ... .search | semmle.label | documen ... .search | | tst.js:438:18:438:23 | source | semmle.label | source | | tst.js:439:18:439:42 | ansiToH ... source) | semmle.label | ansiToH ... source) | | tst.js:439:36:439:41 | source | semmle.label | source | -| tst.js:443:6:443:38 | source | semmle.label | source | +| tst.js:443:6:443:11 | source | semmle.label | source | | tst.js:443:15:443:38 | documen ... .search | semmle.label | documen ... .search | | tst.js:446:21:446:26 | source | semmle.label | source | | tst.js:448:19:448:24 | source | semmle.label | source | | tst.js:450:20:450:25 | source | semmle.label | source | -| tst.js:454:7:454:46 | url | semmle.label | url | +| tst.js:454:7:454:9 | url | semmle.label | url | | tst.js:454:13:454:36 | documen ... .search | semmle.label | documen ... .search | | tst.js:454:13:454:46 | documen ... bstr(1) | semmle.label | documen ... bstr(1) | | tst.js:456:19:456:21 | url | semmle.label | url | @@ -1403,22 +1403,22 @@ nodes | tst.js:477:18:477:40 | locatio ... bstr(1) | semmle.label | locatio ... bstr(1) | | tst.js:484:33:484:63 | decodeU ... n.hash) | semmle.label | decodeU ... n.hash) | | tst.js:484:43:484:62 | window.location.hash | semmle.label | window.location.hash | -| tst.js:491:7:491:39 | target | semmle.label | target | +| tst.js:491:7:491:12 | target | semmle.label | target | | tst.js:491:16:491:39 | documen ... .search | semmle.label | documen ... .search | | tst.js:492:18:492:23 | target | semmle.label | target | | tst.js:492:18:492:54 | target. ... "), '') | semmle.label | target. ... "), '') | -| tst.js:498:7:498:26 | source | semmle.label | source | +| tst.js:498:7:498:12 | source | semmle.label | source | | tst.js:498:16:498:26 | window.name | semmle.label | window.name | | tst.js:499:18:499:33 | unescape(source) | semmle.label | unescape(source) | | tst.js:499:27:499:32 | source | semmle.label | source | -| typeahead.js:20:13:20:45 | target | semmle.label | target | +| typeahead.js:20:13:20:18 | target | semmle.label | target | | typeahead.js:20:22:20:45 | documen ... .search | semmle.label | documen ... .search | | typeahead.js:21:12:21:17 | target | semmle.label | target | | typeahead.js:24:30:24:32 | val | semmle.label | val | | typeahead.js:25:18:25:20 | val | semmle.label | val | | v-html.vue:2:8:2:23 | v-html=tainted | semmle.label | v-html=tainted | | v-html.vue:6:42:6:58 | document.location | semmle.label | document.location | -| various-concat-obfuscations.js:2:6:2:39 | tainted | semmle.label | tainted | +| various-concat-obfuscations.js:2:6:2:12 | tainted | semmle.label | tainted | | various-concat-obfuscations.js:2:16:2:39 | documen ... .search | semmle.label | documen ... .search | | various-concat-obfuscations.js:4:4:4:31 | "
    " ...
    " | semmle.label | "
    " ...
    " | | various-concat-obfuscations.js:4:14:4:20 | tainted | semmle.label | tainted | @@ -1458,7 +1458,7 @@ nodes | various-concat-obfuscations.js:21:4:21:47 | indirec ... .attrs) | semmle.label | indirec ... .attrs) | | various-concat-obfuscations.js:21:17:21:40 | documen ... .search | semmle.label | documen ... .search | | various-concat-obfuscations.js:21:17:21:46 | documen ... h.attrs | semmle.label | documen ... h.attrs | -| winjs.js:2:7:2:53 | tainted | semmle.label | tainted | +| winjs.js:2:7:2:13 | tainted | semmle.label | tainted | | winjs.js:2:17:2:40 | documen ... .search | semmle.label | documen ... .search | | winjs.js:2:17:2:53 | documen ... ring(1) | semmle.label | documen ... ring(1) | | winjs.js:3:43:3:49 | tainted | semmle.label | tainted | diff --git a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/XssWithAdditionalSources.expected b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/XssWithAdditionalSources.expected index c031b7c1810c..4f27cd94835c 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/XssWithAdditionalSources.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/XssWithAdditionalSources.expected @@ -2,8 +2,8 @@ nodes | addEventListener.js:1:43:1:47 | event | semmle.label | event | | addEventListener.js:2:20:2:24 | event | semmle.label | event | | addEventListener.js:2:20:2:29 | event.data | semmle.label | event.data | -| addEventListener.js:5:43:5:48 | data | semmle.label | data | | addEventListener.js:5:43:5:48 | {data} | semmle.label | {data} | +| addEventListener.js:5:44:5:47 | data | semmle.label | data | | addEventListener.js:6:20:6:23 | data | semmle.label | data | | addEventListener.js:10:21:10:25 | event | semmle.label | event | | addEventListener.js:12:24:12:28 | event | semmle.label | event | @@ -53,19 +53,19 @@ nodes | classnames.js:17:32:17:79 | `` | semmle.label | `` | | classnames.js:17:48:17:64 | clsx(window.name) | semmle.label | clsx(window.name) | | classnames.js:17:53:17:63 | window.name | semmle.label | window.name | -| clipboard.ts:8:11:8:51 | html | semmle.label | html | +| clipboard.ts:8:11:8:14 | html | semmle.label | html | | clipboard.ts:8:18:8:51 | clipboa ... /html') | semmle.label | clipboa ... /html') | | clipboard.ts:15:25:15:28 | html | semmle.label | html | | clipboard.ts:24:23:24:58 | e.clipb ... /html') | semmle.label | e.clipb ... /html') | | clipboard.ts:29:19:29:54 | e.clipb ... /html') | semmle.label | e.clipb ... /html') | | clipboard.ts:33:19:33:68 | e.origi ... /html') | semmle.label | e.origi ... /html') | -| clipboard.ts:43:15:43:55 | html | semmle.label | html | +| clipboard.ts:43:15:43:18 | html | semmle.label | html | | clipboard.ts:43:22:43:55 | clipboa ... /html') | semmle.label | clipboa ... /html') | | clipboard.ts:50:29:50:32 | html | semmle.label | html | -| clipboard.ts:71:13:71:62 | droppedHtml | semmle.label | droppedHtml | +| clipboard.ts:71:13:71:23 | droppedHtml | semmle.label | droppedHtml | | clipboard.ts:71:27:71:62 | e.clipb ... /html') | semmle.label | e.clipb ... /html') | | clipboard.ts:73:29:73:39 | droppedHtml | semmle.label | droppedHtml | -| clipboard.ts:98:15:98:54 | html | semmle.label | html | +| clipboard.ts:98:15:98:18 | html | semmle.label | html | | clipboard.ts:98:22:98:54 | dataTra ... /html') | semmle.label | dataTra ... /html') | | clipboard.ts:99:23:99:26 | html | semmle.label | html | | custom-element.js:5:26:5:36 | window.name | semmle.label | window.name | @@ -74,7 +74,7 @@ nodes | d3.js:12:20:12:29 | getTaint() | semmle.label | getTaint() | | d3.js:14:20:14:29 | getTaint() | semmle.label | getTaint() | | d3.js:21:15:21:24 | getTaint() | semmle.label | getTaint() | -| dates.js:9:9:9:69 | taint | semmle.label | taint | +| dates.js:9:9:9:13 | taint | semmle.label | taint | | dates.js:9:17:9:69 | decodeU ... ing(1)) | semmle.label | decodeU ... ing(1)) | | dates.js:9:36:9:55 | window.location.hash | semmle.label | window.location.hash | | dates.js:9:36:9:68 | window. ... ring(1) | semmle.label | window. ... ring(1) | @@ -96,7 +96,7 @@ nodes | dates.js:21:31:21:68 | `Time i ... aint)}` | semmle.label | `Time i ... aint)}` | | dates.js:21:42:21:66 | dayjs(t ... (taint) | semmle.label | dayjs(t ... (taint) | | dates.js:21:61:21:65 | taint | semmle.label | taint | -| dates.js:30:9:30:69 | taint | semmle.label | taint | +| dates.js:30:9:30:13 | taint | semmle.label | taint | | dates.js:30:17:30:69 | decodeU ... ing(1)) | semmle.label | decodeU ... ing(1)) | | dates.js:30:36:30:55 | window.location.hash | semmle.label | window.location.hash | | dates.js:30:36:30:68 | window. ... ring(1) | semmle.label | window. ... ring(1) | @@ -112,7 +112,7 @@ nodes | dates.js:40:31:40:84 | `Time i ... aint)}` | semmle.label | `Time i ... aint)}` | | dates.js:40:42:40:82 | dayjs.f ... taint) | semmle.label | dayjs.f ... taint) | | dates.js:40:77:40:81 | taint | semmle.label | taint | -| dates.js:46:9:46:69 | taint | semmle.label | taint | +| dates.js:46:9:46:13 | taint | semmle.label | taint | | dates.js:46:17:46:69 | decodeU ... ing(1)) | semmle.label | decodeU ... ing(1)) | | dates.js:46:36:46:55 | window.location.hash | semmle.label | window.location.hash | | dates.js:46:36:46:68 | window. ... ring(1) | semmle.label | window. ... ring(1) | @@ -125,7 +125,7 @@ nodes | dates.js:50:31:50:104 | `Time i ... aint)}` | semmle.label | `Time i ... aint)}` | | dates.js:50:42:50:102 | DateTim ... (taint) | semmle.label | DateTim ... (taint) | | dates.js:50:97:50:101 | taint | semmle.label | taint | -| dates.js:54:9:54:69 | taint | semmle.label | taint | +| dates.js:54:9:54:13 | taint | semmle.label | taint | | dates.js:54:17:54:69 | decodeU ... ing(1)) | semmle.label | decodeU ... ing(1)) | | dates.js:54:36:54:55 | window.location.hash | semmle.label | window.location.hash | | dates.js:54:36:54:68 | window. ... ring(1) | semmle.label | window. ... ring(1) | @@ -139,16 +139,16 @@ nodes | dates.js:61:42:61:86 | dayjs.s ... (taint) | semmle.label | dayjs.s ... (taint) | | dates.js:61:81:61:85 | taint | semmle.label | taint | | dom.js:4:20:4:30 | window.name | semmle.label | window.name | -| dragAndDrop.ts:8:11:8:50 | html | semmle.label | html | +| dragAndDrop.ts:8:11:8:14 | html | semmle.label | html | | dragAndDrop.ts:8:18:8:50 | dataTra ... /html') | semmle.label | dataTra ... /html') | | dragAndDrop.ts:15:25:15:28 | html | semmle.label | html | | dragAndDrop.ts:24:23:24:57 | e.dataT ... /html') | semmle.label | e.dataT ... /html') | | dragAndDrop.ts:29:19:29:53 | e.dataT ... /html') | semmle.label | e.dataT ... /html') | | dragAndDrop.ts:33:19:33:67 | e.origi ... /html') | semmle.label | e.origi ... /html') | -| dragAndDrop.ts:43:15:43:54 | html | semmle.label | html | +| dragAndDrop.ts:43:15:43:18 | html | semmle.label | html | | dragAndDrop.ts:43:22:43:54 | dataTra ... /html') | semmle.label | dataTra ... /html') | | dragAndDrop.ts:50:29:50:32 | html | semmle.label | html | -| dragAndDrop.ts:71:13:71:61 | droppedHtml | semmle.label | droppedHtml | +| dragAndDrop.ts:71:13:71:23 | droppedHtml | semmle.label | droppedHtml | | dragAndDrop.ts:71:27:71:61 | e.dataT ... /html') | semmle.label | e.dataT ... /html') | | dragAndDrop.ts:73:29:73:39 | droppedHtml | semmle.label | droppedHtml | | event-handler-receiver.js:2:31:2:83 | '

    ' | semmle.label | '

    ' | @@ -184,7 +184,7 @@ nodes | hana.js:90:33:90:45 | rs[0].comment | semmle.label | rs[0].comment | | jquery-declare-any.ts:6:7:6:17 | window.name | semmle.label | window.name | | jquery-declare-type.ts:6:7:6:17 | window.name | semmle.label | window.name | -| jquery.js:2:7:2:40 | tainted | semmle.label | tainted | +| jquery.js:2:7:2:13 | tainted | semmle.label | tainted | | jquery.js:2:17:2:40 | documen ... .search | semmle.label | documen ... .search | | jquery.js:4:5:4:11 | tainted | semmle.label | tainted | | jquery.js:5:13:5:19 | tainted | semmle.label | tainted | @@ -203,7 +203,7 @@ nodes | jquery.js:16:19:16:64 | decodeU ... ring()) | semmle.label | decodeU ... ring()) | | jquery.js:16:38:16:52 | window.location | semmle.label | window.location | | jquery.js:16:38:16:63 | window. ... tring() | semmle.label | window. ... tring() | -| jquery.js:18:7:18:33 | hash | semmle.label | hash | +| jquery.js:18:7:18:10 | hash | semmle.label | hash | | jquery.js:18:14:18:33 | window.location.hash | semmle.label | window.location.hash | | jquery.js:21:5:21:8 | hash | semmle.label | hash | | jquery.js:21:5:21:21 | hash.substring(1) | semmle.label | hash.substring(1) | @@ -222,50 +222,50 @@ nodes | jquery.js:36:25:36:31 | tainted | semmle.label | tainted | | jquery.js:37:25:37:37 | () => tainted | semmle.label | () => tainted | | jquery.js:37:31:37:37 | tainted | semmle.label | tainted | -| json-stringify.jsx:5:9:5:36 | locale | semmle.label | locale | +| json-stringify.jsx:5:9:5:14 | locale | semmle.label | locale | | json-stringify.jsx:5:18:5:36 | req.param("locale") | semmle.label | req.param("locale") | | json-stringify.jsx:11:51:11:56 | locale | semmle.label | locale | | json-stringify.jsx:19:56:19:61 | locale | semmle.label | locale | | json-stringify.jsx:31:40:31:61 | JSON.st ... locale) | semmle.label | JSON.st ... locale) | | json-stringify.jsx:31:55:31:60 | locale | semmle.label | locale | | json-stringify.jsx:35:40:35:61 | JSON.st ... jsonLD) | semmle.label | JSON.st ... jsonLD) | -| jwt-server.js:7:9:7:35 | taint | semmle.label | taint | +| jwt-server.js:7:9:7:13 | taint | semmle.label | taint | | jwt-server.js:7:17:7:35 | req.param("wobble") | semmle.label | req.param("wobble") | | jwt-server.js:9:16:9:20 | taint | semmle.label | taint | | jwt-server.js:9:55:9:61 | decoded | semmle.label | decoded | | jwt-server.js:10:19:10:25 | decoded | semmle.label | decoded | | jwt-server.js:10:19:10:29 | decoded.foo | semmle.label | decoded.foo | | jwt.js:4:36:4:39 | data | semmle.label | data | -| jwt.js:5:9:5:34 | decoded | semmle.label | decoded | +| jwt.js:5:9:5:15 | decoded | semmle.label | decoded | | jwt.js:5:19:5:34 | jwt_decode(data) | semmle.label | jwt_decode(data) | | jwt.js:5:30:5:33 | data | semmle.label | data | | jwt.js:6:14:6:20 | decoded | semmle.label | decoded | | nodemailer.js:13:11:13:69 | `Hi, yo ... sage}.` | semmle.label | `Hi, yo ... sage}.` | | nodemailer.js:13:50:13:66 | req.query.message | semmle.label | req.query.message | -| optionalSanitizer.js:2:7:2:39 | target | semmle.label | target | +| optionalSanitizer.js:2:7:2:12 | target | semmle.label | target | | optionalSanitizer.js:2:16:2:39 | documen ... .search | semmle.label | documen ... .search | | optionalSanitizer.js:6:18:6:23 | target | semmle.label | target | -| optionalSanitizer.js:8:7:8:22 | tainted | semmle.label | tainted | +| optionalSanitizer.js:8:7:8:13 | tainted | semmle.label | tainted | | optionalSanitizer.js:8:17:8:22 | target | semmle.label | target | | optionalSanitizer.js:9:18:9:24 | tainted | semmle.label | tainted | | optionalSanitizer.js:15:9:15:14 | target | semmle.label | target | | optionalSanitizer.js:16:18:16:18 | x | semmle.label | x | | optionalSanitizer.js:17:20:17:20 | x | semmle.label | x | -| optionalSanitizer.js:26:7:26:39 | target | semmle.label | target | +| optionalSanitizer.js:26:7:26:12 | target | semmle.label | target | | optionalSanitizer.js:26:16:26:39 | documen ... .search | semmle.label | documen ... .search | | optionalSanitizer.js:28:24:28:24 | x | semmle.label | x | | optionalSanitizer.js:29:12:29:12 | x | semmle.label | x | -| optionalSanitizer.js:31:7:31:23 | tainted2 | semmle.label | tainted2 | +| optionalSanitizer.js:31:7:31:14 | tainted2 | semmle.label | tainted2 | | optionalSanitizer.js:31:18:31:23 | target | semmle.label | target | | optionalSanitizer.js:32:18:32:25 | tainted2 | semmle.label | tainted2 | -| optionalSanitizer.js:34:5:34:36 | tainted2 | semmle.label | tainted2 | +| optionalSanitizer.js:34:5:34:12 | tainted2 | semmle.label | tainted2 | | optionalSanitizer.js:34:16:34:36 | sanitiz ... inted2) | semmle.label | sanitiz ... inted2) | | optionalSanitizer.js:34:28:34:35 | tainted2 | semmle.label | tainted2 | | optionalSanitizer.js:36:18:36:25 | tainted2 | semmle.label | tainted2 | -| optionalSanitizer.js:38:7:38:23 | tainted3 | semmle.label | tainted3 | +| optionalSanitizer.js:38:7:38:14 | tainted3 | semmle.label | tainted3 | | optionalSanitizer.js:38:18:38:23 | target | semmle.label | target | | optionalSanitizer.js:39:18:39:25 | tainted3 | semmle.label | tainted3 | -| optionalSanitizer.js:41:5:41:36 | tainted3 | semmle.label | tainted3 | +| optionalSanitizer.js:41:5:41:12 | tainted3 | semmle.label | tainted3 | | optionalSanitizer.js:41:16:41:36 | sanitiz ... inted3) | semmle.label | sanitiz ... inted3) | | optionalSanitizer.js:41:28:41:35 | tainted3 | semmle.label | tainted3 | | optionalSanitizer.js:43:18:43:25 | tainted3 | semmle.label | tainted3 | @@ -276,7 +276,7 @@ nodes | pages/[id].jsx:3:30:3:35 | params [id] | semmle.label | params [id] | | pages/[id].jsx:3:30:3:35 | params [q] | semmle.label | params [q] | | pages/[id].jsx:5:9:5:14 | { id } | semmle.label | { id } | -| pages/[id].jsx:5:9:5:29 | id | semmle.label | id | +| pages/[id].jsx:5:11:5:12 | id | semmle.label | id | | pages/[id].jsx:5:18:5:29 | router.query | semmle.label | router.query | | pages/[id].jsx:10:44:10:45 | id | semmle.label | id | | pages/[id].jsx:13:44:13:49 | params [id] | semmle.label | params [id] | @@ -289,7 +289,7 @@ nodes | pages/[id].jsx:25:11:25:33 | context ... d \|\| "" | semmle.label | context ... d \|\| "" | | pages/[id].jsx:26:10:26:22 | context.query | semmle.label | context.query | | pages/[id].jsx:26:10:26:36 | context ... r \|\| "" | semmle.label | context ... r \|\| "" | -| react-native.js:7:7:7:33 | tainted | semmle.label | tainted | +| react-native.js:7:7:7:13 | tainted | semmle.label | tainted | | react-native.js:7:17:7:33 | req.param("code") | semmle.label | req.param("code") | | react-native.js:8:18:8:24 | tainted | semmle.label | tainted | | react-native.js:9:27:9:33 | tainted | semmle.label | tainted | @@ -303,13 +303,13 @@ nodes | react-use-router.js:23:43:23:61 | router.query.foobar | semmle.label | router.query.foobar | | react-use-router.js:33:21:33:32 | router.query | semmle.label | router.query | | react-use-router.js:33:21:33:39 | router.query.foobar | semmle.label | router.query.foobar | -| react-use-state.js:4:9:4:49 | state | semmle.label | state | +| react-use-state.js:4:10:4:14 | state | semmle.label | state | | react-use-state.js:4:38:4:48 | window.name | semmle.label | window.name | | react-use-state.js:5:51:5:55 | state | semmle.label | state | -| react-use-state.js:9:9:9:43 | state | semmle.label | state | +| react-use-state.js:9:10:9:14 | state | semmle.label | state | | react-use-state.js:10:14:10:24 | window.name | semmle.label | window.name | | react-use-state.js:11:51:11:55 | state | semmle.label | state | -| react-use-state.js:15:9:15:43 | state | semmle.label | state | +| react-use-state.js:15:10:15:14 | state | semmle.label | state | | react-use-state.js:15:10:15:14 | state | semmle.label | state | | react-use-state.js:16:20:16:30 | window.name | semmle.label | window.name | | react-use-state.js:17:51:17:55 | state | semmle.label | state | @@ -317,7 +317,7 @@ nodes | react-use-state.js:22:14:22:17 | prev | semmle.label | prev | | react-use-state.js:23:35:23:38 | prev | semmle.label | prev | | react-use-state.js:25:20:25:30 | window.name | semmle.label | window.name | -| sanitiser.js:16:7:16:27 | tainted | semmle.label | tainted | +| sanitiser.js:16:7:16:13 | tainted | semmle.label | tainted | | sanitiser.js:16:17:16:27 | window.name | semmle.label | window.name | | sanitiser.js:23:21:23:44 | '' + ... '' | semmle.label | '' + ... '' | | sanitiser.js:23:29:23:35 | tainted | semmle.label | tainted | @@ -335,7 +335,7 @@ nodes | stored-xss.js:3:35:3:58 | documen ... .search | semmle.label | documen ... .search | | stored-xss.js:5:20:5:52 | session ... ssion') | semmle.label | session ... ssion') | | stored-xss.js:8:20:8:48 | localSt ... local') | semmle.label | localSt ... local') | -| stored-xss.js:10:9:10:44 | href | semmle.label | href | +| stored-xss.js:10:9:10:12 | href | semmle.label | href | | stored-xss.js:10:16:10:44 | localSt ... local') | semmle.label | localSt ... local') | | stored-xss.js:12:20:12:54 | "" | semmle.label | "" | | stored-xss.js:12:35:12:38 | href | semmle.label | href | @@ -355,24 +355,24 @@ nodes | string-manipulations.js:10:23:10:44 | documen ... on.href | semmle.label | documen ... on.href | | tainted-url-suffix-arguments.js:3:17:3:17 | y | semmle.label | y | | tainted-url-suffix-arguments.js:6:22:6:22 | y | semmle.label | y | -| tainted-url-suffix-arguments.js:11:11:11:36 | url | semmle.label | url | +| tainted-url-suffix-arguments.js:11:11:11:13 | url | semmle.label | url | | tainted-url-suffix-arguments.js:11:17:11:36 | window.location.href | semmle.label | window.location.href | | tainted-url-suffix-arguments.js:12:17:12:19 | url | semmle.label | url | -| tooltip.jsx:6:11:6:30 | source | semmle.label | source | +| tooltip.jsx:6:11:6:16 | source | semmle.label | source | | tooltip.jsx:6:20:6:30 | window.name | semmle.label | window.name | | tooltip.jsx:10:25:10:30 | source | semmle.label | source | | tooltip.jsx:11:25:11:30 | source | semmle.label | source | -| tooltip.jsx:17:11:17:33 | provide [source] | semmle.label | provide [source] | +| tooltip.jsx:17:11:17:17 | provide [source] | semmle.label | provide [source] | | tooltip.jsx:17:21:17:33 | props.provide [source] | semmle.label | props.provide [source] | | tooltip.jsx:18:51:18:57 | provide [source] | semmle.label | provide [source] | | tooltip.jsx:18:51:18:59 | provide() | semmle.label | provide() | -| tooltip.jsx:22:11:22:30 | source | semmle.label | source | +| tooltip.jsx:22:11:22:16 | source | semmle.label | source | | tooltip.jsx:22:20:22:30 | window.name | semmle.label | window.name | | tooltip.jsx:23:38:23:43 | source | semmle.label | source | -| translate.js:6:7:6:39 | target | semmle.label | target | +| translate.js:6:7:6:12 | target | semmle.label | target | | translate.js:6:16:6:39 | documen ... .search | semmle.label | documen ... .search | -| translate.js:7:7:7:61 | searchParams | semmle.label | searchParams | -| translate.js:7:7:7:61 | searchParams [MapValue] | semmle.label | searchParams [MapValue] | +| translate.js:7:7:7:18 | searchParams | semmle.label | searchParams | +| translate.js:7:7:7:18 | searchParams [MapValue] | semmle.label | searchParams [MapValue] | | translate.js:7:22:7:61 | new URL ... ing(1)) | semmle.label | new URL ... ing(1)) | | translate.js:7:22:7:61 | new URL ... ing(1)) [MapValue] | semmle.label | new URL ... ing(1)) [MapValue] | | translate.js:7:42:7:47 | target | semmle.label | target | @@ -402,7 +402,7 @@ nodes | tst3.js:9:37:9:42 | data.p | semmle.label | data.p | | tst3.js:10:38:10:41 | data | semmle.label | data | | tst3.js:10:38:10:43 | data.p | semmle.label | data.p | -| tst.js:2:7:2:39 | target | semmle.label | target | +| tst.js:2:7:2:12 | target | semmle.label | target | | tst.js:2:16:2:39 | documen ... .search | semmle.label | documen ... .search | | tst.js:4:18:4:23 | target | semmle.label | target | | tst.js:6:18:6:126 | "" | semmle.label | "" | @@ -411,8 +411,8 @@ nodes | tst.js:6:37:6:114 | documen ... t=")+8) | semmle.label | documen ... t=")+8) | | tst.js:9:5:9:42 | '
    ' | semmle.label | '
    ' | | tst.js:9:28:9:33 | target | semmle.label | target | -| tst.js:14:7:14:56 | params | semmle.label | params | -| tst.js:14:7:14:56 | params [MapValue] | semmle.label | params [MapValue] | +| tst.js:14:7:14:12 | params | semmle.label | params | +| tst.js:14:7:14:12 | params [MapValue] | semmle.label | params [MapValue] | | tst.js:14:16:14:43 | (new UR ... ation)) [searchParams, MapValue] | semmle.label | (new UR ... ation)) [searchParams, MapValue] | | tst.js:14:16:14:43 | (new UR ... ation)) [searchParams] | semmle.label | (new UR ... ation)) [searchParams] | | tst.js:14:16:14:56 | (new UR ... hParams | semmle.label | (new UR ... hParams | @@ -423,8 +423,8 @@ nodes | tst.js:15:18:15:23 | params | semmle.label | params | | tst.js:15:18:15:23 | params [MapValue] | semmle.label | params [MapValue] | | tst.js:15:18:15:35 | params.get('name') | semmle.label | params.get('name') | -| tst.js:17:7:17:61 | searchParams | semmle.label | searchParams | -| tst.js:17:7:17:61 | searchParams [MapValue] | semmle.label | searchParams [MapValue] | +| tst.js:17:7:17:18 | searchParams | semmle.label | searchParams | +| tst.js:17:7:17:18 | searchParams [MapValue] | semmle.label | searchParams [MapValue] | | tst.js:17:22:17:61 | new URL ... ing(1)) | semmle.label | new URL ... ing(1)) | | tst.js:17:22:17:61 | new URL ... ing(1)) [MapValue] | semmle.label | new URL ... ing(1)) [MapValue] | | tst.js:17:42:17:47 | target | semmle.label | target | @@ -480,7 +480,7 @@ nodes | tst.js:76:39:76:62 | documen ... .search | semmle.label | documen ... .search | | tst.js:82:30:82:53 | documen ... .search | semmle.label | documen ... .search | | tst.js:88:25:88:48 | documen ... .search | semmle.label | documen ... .search | -| tst.js:93:7:93:44 | v | semmle.label | v | +| tst.js:93:7:93:7 | v | semmle.label | v | | tst.js:93:11:93:34 | documen ... .search | semmle.label | documen ... .search | | tst.js:93:11:93:44 | documen ... bstr(1) | semmle.label | documen ... bstr(1) | | tst.js:95:18:95:18 | v | semmle.label | v | @@ -490,10 +490,10 @@ nodes | tst.js:135:49:135:49 | v | semmle.label | v | | tst.js:139:29:139:46 | xssSourceService() | semmle.label | xssSourceService() | | tst.js:142:40:142:61 | window. ... .search | semmle.label | window. ... .search | -| tst.js:161:9:161:41 | target | semmle.label | target | +| tst.js:161:9:161:14 | target | semmle.label | target | | tst.js:161:18:161:41 | documen ... .search | semmle.label | documen ... .search | | tst.js:164:28:164:33 | target | semmle.label | target | -| tst.js:168:9:168:42 | tainted | semmle.label | tainted | +| tst.js:168:9:168:15 | tainted | semmle.label | tainted | | tst.js:168:19:168:42 | documen ... .search | semmle.label | documen ... .search | | tst.js:170:31:170:37 | tainted | semmle.label | tainted | | tst.js:172:42:172:48 | tainted | semmle.label | tainted | @@ -501,7 +501,7 @@ nodes | tst.js:175:54:175:60 | tainted | semmle.label | tainted | | tst.js:176:45:176:51 | tainted | semmle.label | tainted | | tst.js:177:49:177:55 | tainted | semmle.label | tainted | -| tst.js:181:9:181:42 | tainted | semmle.label | tainted | +| tst.js:181:9:181:15 | tainted | semmle.label | tainted | | tst.js:181:19:181:42 | documen ... .search | semmle.label | documen ... .search | | tst.js:183:67:183:73 | tainted | semmle.label | tainted | | tst.js:184:67:184:73 | tainted | semmle.label | tainted | @@ -528,7 +528,7 @@ nodes | tst.js:244:7:244:10 | name | semmle.label | name | | tst.js:248:11:248:21 | window.name | semmle.label | window.name | | tst.js:264:22:264:29 | location | semmle.label | location | -| tst.js:269:9:269:29 | tainted | semmle.label | tainted | +| tst.js:269:9:269:15 | tainted | semmle.label | tainted | | tst.js:269:19:269:29 | window.name | semmle.label | window.name | | tst.js:272:59:272:65 | tainted | semmle.label | tainted | | tst.js:285:9:285:16 | location | semmle.label | location | @@ -541,8 +541,8 @@ nodes | tst.js:311:10:311:35 | new URL ... cation) [searchParams, MapValue] | semmle.label | new URL ... cation) [searchParams, MapValue] | | tst.js:311:10:311:35 | new URL ... cation) [searchParams] | semmle.label | new URL ... cation) [searchParams] | | tst.js:311:18:311:34 | document.location | semmle.label | document.location | -| tst.js:315:7:315:43 | params | semmle.label | params | -| tst.js:315:7:315:43 | params [MapValue] | semmle.label | params [MapValue] | +| tst.js:315:7:315:12 | params | semmle.label | params | +| tst.js:315:7:315:12 | params [MapValue] | semmle.label | params [MapValue] | | tst.js:315:16:315:30 | getTaintedUrl() [searchParams, MapValue] | semmle.label | getTaintedUrl() [searchParams, MapValue] | | tst.js:315:16:315:30 | getTaintedUrl() [searchParams] | semmle.label | getTaintedUrl() [searchParams] | | tst.js:315:16:315:43 | getTain ... hParams | semmle.label | getTain ... hParams | @@ -555,19 +555,19 @@ nodes | tst.js:327:5:327:12 | getUrl() [hash] | semmle.label | getUrl() [hash] | | tst.js:327:5:327:17 | getUrl().hash | semmle.label | getUrl().hash | | tst.js:327:5:327:30 | getUrl( ... ring(1) | semmle.label | getUrl( ... ring(1) | -| tst.js:332:7:332:39 | target | semmle.label | target | +| tst.js:332:7:332:12 | target | semmle.label | target | | tst.js:332:16:332:39 | documen ... .search | semmle.label | documen ... .search | | tst.js:333:12:333:17 | target | semmle.label | target | -| tst.js:339:10:339:42 | target | semmle.label | target | +| tst.js:339:10:339:15 | target | semmle.label | target | | tst.js:339:19:339:42 | documen ... .search | semmle.label | documen ... .search | | tst.js:340:16:340:21 | target | semmle.label | target | | tst.js:341:20:341:25 | target | semmle.label | target | | tst.js:344:21:344:26 | target | semmle.label | target | | tst.js:347:18:347:23 | target | semmle.label | target | -| tst.js:355:7:355:39 | target | semmle.label | target | +| tst.js:355:7:355:12 | target | semmle.label | target | | tst.js:355:16:355:39 | documen ... .search | semmle.label | documen ... .search | | tst.js:357:18:357:23 | target | semmle.label | target | -| tst.js:364:7:364:39 | target | semmle.label | target | +| tst.js:364:7:364:12 | target | semmle.label | target | | tst.js:364:16:364:39 | documen ... .search | semmle.label | documen ... .search | | tst.js:367:18:367:23 | target | semmle.label | target | | tst.js:369:18:369:23 | target | semmle.label | target | @@ -586,11 +586,11 @@ nodes | tst.js:391:19:391:31 | target.taint8 | semmle.label | target.taint8 | | tst.js:392:18:392:23 | target [taint8] | semmle.label | target [taint8] | | tst.js:392:18:392:30 | target.taint8 | semmle.label | target.taint8 | -| tst.js:399:7:399:46 | payload | semmle.label | payload | +| tst.js:399:7:399:13 | payload | semmle.label | payload | | tst.js:399:17:399:36 | window.location.hash | semmle.label | window.location.hash | | tst.js:399:17:399:46 | window. ... bstr(1) | semmle.label | window. ... bstr(1) | | tst.js:400:18:400:24 | payload | semmle.label | payload | -| tst.js:402:7:402:55 | match | semmle.label | match | +| tst.js:402:7:402:11 | match | semmle.label | match | | tst.js:402:15:402:34 | window.location.hash | semmle.label | window.location.hash | | tst.js:402:15:402:55 | window. ... (\\w+)/) | semmle.label | window. ... (\\w+)/) | | tst.js:404:20:404:24 | match | semmle.label | match | @@ -598,11 +598,11 @@ nodes | tst.js:407:18:407:37 | window.location.hash | semmle.label | window.location.hash | | tst.js:407:18:407:48 | window. ... it('#') [1] | semmle.label | window. ... it('#') [1] | | tst.js:407:18:407:51 | window. ... '#')[1] | semmle.label | window. ... '#')[1] | -| tst.js:411:7:411:39 | target | semmle.label | target | +| tst.js:411:7:411:12 | target | semmle.label | target | | tst.js:411:16:411:39 | documen ... .search | semmle.label | documen ... .search | | tst.js:413:18:413:23 | target | semmle.label | target | | tst.js:413:18:413:89 | target. ... data>') | semmle.label | target. ... data>') | -| tst.js:419:6:419:38 | source | semmle.label | source | +| tst.js:419:6:419:11 | source | semmle.label | source | | tst.js:419:15:419:38 | documen ... .search | semmle.label | documen ... .search | | tst.js:423:28:423:33 | source | semmle.label | source | | tst.js:424:33:424:38 | source | semmle.label | source | @@ -610,17 +610,17 @@ nodes | tst.js:426:41:426:46 | source | semmle.label | source | | tst.js:427:44:427:49 | source | semmle.label | source | | tst.js:428:32:428:37 | source | semmle.label | source | -| tst.js:436:7:436:39 | source | semmle.label | source | +| tst.js:436:7:436:12 | source | semmle.label | source | | tst.js:436:16:436:39 | documen ... .search | semmle.label | documen ... .search | | tst.js:438:18:438:23 | source | semmle.label | source | | tst.js:439:18:439:42 | ansiToH ... source) | semmle.label | ansiToH ... source) | | tst.js:439:36:439:41 | source | semmle.label | source | -| tst.js:443:6:443:38 | source | semmle.label | source | +| tst.js:443:6:443:11 | source | semmle.label | source | | tst.js:443:15:443:38 | documen ... .search | semmle.label | documen ... .search | | tst.js:446:21:446:26 | source | semmle.label | source | | tst.js:448:19:448:24 | source | semmle.label | source | | tst.js:450:20:450:25 | source | semmle.label | source | -| tst.js:454:7:454:46 | url | semmle.label | url | +| tst.js:454:7:454:9 | url | semmle.label | url | | tst.js:454:13:454:36 | documen ... .search | semmle.label | documen ... .search | | tst.js:454:13:454:46 | documen ... bstr(1) | semmle.label | documen ... bstr(1) | | tst.js:456:19:456:21 | url | semmle.label | url | @@ -634,24 +634,24 @@ nodes | tst.js:477:18:477:40 | locatio ... bstr(1) | semmle.label | locatio ... bstr(1) | | tst.js:484:33:484:63 | decodeU ... n.hash) | semmle.label | decodeU ... n.hash) | | tst.js:484:43:484:62 | window.location.hash | semmle.label | window.location.hash | -| tst.js:491:7:491:39 | target | semmle.label | target | +| tst.js:491:7:491:12 | target | semmle.label | target | | tst.js:491:16:491:39 | documen ... .search | semmle.label | documen ... .search | | tst.js:492:18:492:23 | target | semmle.label | target | | tst.js:492:18:492:54 | target. ... "), '') | semmle.label | target. ... "), '') | -| tst.js:498:7:498:26 | source | semmle.label | source | +| tst.js:498:7:498:12 | source | semmle.label | source | | tst.js:498:16:498:26 | window.name | semmle.label | window.name | | tst.js:499:18:499:33 | unescape(source) | semmle.label | unescape(source) | | tst.js:499:27:499:32 | source | semmle.label | source | | typeahead.js:9:28:9:30 | loc | semmle.label | loc | | typeahead.js:10:16:10:18 | loc | semmle.label | loc | -| typeahead.js:20:13:20:45 | target | semmle.label | target | +| typeahead.js:20:13:20:18 | target | semmle.label | target | | typeahead.js:20:22:20:45 | documen ... .search | semmle.label | documen ... .search | | typeahead.js:21:12:21:17 | target | semmle.label | target | | typeahead.js:24:30:24:32 | val | semmle.label | val | | typeahead.js:25:18:25:20 | val | semmle.label | val | | v-html.vue:2:8:2:23 | v-html=tainted | semmle.label | v-html=tainted | | v-html.vue:6:42:6:58 | document.location | semmle.label | document.location | -| various-concat-obfuscations.js:2:6:2:39 | tainted | semmle.label | tainted | +| various-concat-obfuscations.js:2:6:2:12 | tainted | semmle.label | tainted | | various-concat-obfuscations.js:2:16:2:39 | documen ... .search | semmle.label | documen ... .search | | various-concat-obfuscations.js:4:4:4:31 | "
    " ...
    " | semmle.label | "
    " ...
    " | | various-concat-obfuscations.js:4:14:4:20 | tainted | semmle.label | tainted | @@ -691,20 +691,20 @@ nodes | various-concat-obfuscations.js:21:4:21:47 | indirec ... .attrs) | semmle.label | indirec ... .attrs) | | various-concat-obfuscations.js:21:17:21:40 | documen ... .search | semmle.label | documen ... .search | | various-concat-obfuscations.js:21:17:21:46 | documen ... h.attrs | semmle.label | documen ... h.attrs | -| winjs.js:2:7:2:53 | tainted | semmle.label | tainted | +| winjs.js:2:7:2:13 | tainted | semmle.label | tainted | | winjs.js:2:17:2:40 | documen ... .search | semmle.label | documen ... .search | | winjs.js:2:17:2:53 | documen ... ring(1) | semmle.label | documen ... ring(1) | | winjs.js:3:43:3:49 | tainted | semmle.label | tainted | | winjs.js:4:43:4:49 | tainted | semmle.label | tainted | -| xmlRequest.js:8:13:8:47 | json | semmle.label | json | +| xmlRequest.js:8:13:8:16 | json | semmle.label | json | | xmlRequest.js:8:20:8:47 | JSON.pa ... seText) | semmle.label | JSON.pa ... seText) | | xmlRequest.js:8:31:8:46 | xhr.responseText | semmle.label | xhr.responseText | | xmlRequest.js:9:28:9:31 | json | semmle.label | json | | xmlRequest.js:9:28:9:39 | json.message | semmle.label | json.message | -| xmlRequest.js:20:11:20:48 | resp | semmle.label | resp | +| xmlRequest.js:20:11:20:14 | resp | semmle.label | resp | | xmlRequest.js:20:18:20:48 | await g ... rl }}") | semmle.label | await g ... rl }}") | | xmlRequest.js:20:24:20:48 | got.get ... rl }}") | semmle.label | got.get ... rl }}") | -| xmlRequest.js:21:11:21:38 | json | semmle.label | json | +| xmlRequest.js:21:11:21:14 | json | semmle.label | json | | xmlRequest.js:21:18:21:38 | JSON.pa ... p.body) | semmle.label | JSON.pa ... p.body) | | xmlRequest.js:21:29:21:32 | resp | semmle.label | resp | | xmlRequest.js:22:24:22:27 | json | semmle.label | json | @@ -712,8 +712,8 @@ nodes edges | addEventListener.js:1:43:1:47 | event | addEventListener.js:2:20:2:24 | event | provenance | | | addEventListener.js:2:20:2:24 | event | addEventListener.js:2:20:2:29 | event.data | provenance | | -| addEventListener.js:5:43:5:48 | data | addEventListener.js:6:20:6:23 | data | provenance | | -| addEventListener.js:5:43:5:48 | {data} | addEventListener.js:5:43:5:48 | data | provenance | | +| addEventListener.js:5:43:5:48 | {data} | addEventListener.js:5:44:5:47 | data | provenance | | +| addEventListener.js:5:44:5:47 | data | addEventListener.js:6:20:6:23 | data | provenance | | | addEventListener.js:10:21:10:25 | event | addEventListener.js:12:24:12:28 | event | provenance | | | addEventListener.js:12:24:12:28 | event | addEventListener.js:12:24:12:33 | event.data | provenance | | | angular2-client.ts:26:44:26:69 | this.ro ... .params | angular2-client.ts:26:44:26:73 | this.ro ... ams.foo | provenance | | @@ -738,25 +738,25 @@ edges | classnames.js:15:52:15:62 | window.name | classnames.js:15:47:15:63 | clsx(window.name) | provenance | | | classnames.js:17:48:17:64 | clsx(window.name) | classnames.js:17:32:17:79 | `` | provenance | | | classnames.js:17:53:17:63 | window.name | classnames.js:17:48:17:64 | clsx(window.name) | provenance | | -| clipboard.ts:8:11:8:51 | html | clipboard.ts:15:25:15:28 | html | provenance | | -| clipboard.ts:8:18:8:51 | clipboa ... /html') | clipboard.ts:8:11:8:51 | html | provenance | | -| clipboard.ts:43:15:43:55 | html | clipboard.ts:50:29:50:32 | html | provenance | | -| clipboard.ts:43:22:43:55 | clipboa ... /html') | clipboard.ts:43:15:43:55 | html | provenance | | -| clipboard.ts:71:13:71:62 | droppedHtml | clipboard.ts:73:29:73:39 | droppedHtml | provenance | | -| clipboard.ts:71:27:71:62 | e.clipb ... /html') | clipboard.ts:71:13:71:62 | droppedHtml | provenance | | -| clipboard.ts:98:15:98:54 | html | clipboard.ts:99:23:99:26 | html | provenance | | -| clipboard.ts:98:22:98:54 | dataTra ... /html') | clipboard.ts:98:15:98:54 | html | provenance | | +| clipboard.ts:8:11:8:14 | html | clipboard.ts:15:25:15:28 | html | provenance | | +| clipboard.ts:8:18:8:51 | clipboa ... /html') | clipboard.ts:8:11:8:14 | html | provenance | | +| clipboard.ts:43:15:43:18 | html | clipboard.ts:50:29:50:32 | html | provenance | | +| clipboard.ts:43:22:43:55 | clipboa ... /html') | clipboard.ts:43:15:43:18 | html | provenance | | +| clipboard.ts:71:13:71:23 | droppedHtml | clipboard.ts:73:29:73:39 | droppedHtml | provenance | | +| clipboard.ts:71:27:71:62 | e.clipb ... /html') | clipboard.ts:71:13:71:23 | droppedHtml | provenance | | +| clipboard.ts:98:15:98:18 | html | clipboard.ts:99:23:99:26 | html | provenance | | +| clipboard.ts:98:22:98:54 | dataTra ... /html') | clipboard.ts:98:15:98:18 | html | provenance | | | d3.js:4:12:4:22 | window.name | d3.js:11:15:11:24 | getTaint() | provenance | | | d3.js:4:12:4:22 | window.name | d3.js:12:20:12:29 | getTaint() | provenance | | | d3.js:4:12:4:22 | window.name | d3.js:14:20:14:29 | getTaint() | provenance | | | d3.js:4:12:4:22 | window.name | d3.js:21:15:21:24 | getTaint() | provenance | | -| dates.js:9:9:9:69 | taint | dates.js:11:63:11:67 | taint | provenance | | -| dates.js:9:9:9:69 | taint | dates.js:12:66:12:70 | taint | provenance | | -| dates.js:9:9:9:69 | taint | dates.js:13:59:13:63 | taint | provenance | | -| dates.js:9:9:9:69 | taint | dates.js:16:62:16:66 | taint | provenance | | -| dates.js:9:9:9:69 | taint | dates.js:18:59:18:63 | taint | provenance | | -| dates.js:9:9:9:69 | taint | dates.js:21:61:21:65 | taint | provenance | | -| dates.js:9:17:9:69 | decodeU ... ing(1)) | dates.js:9:9:9:69 | taint | provenance | | +| dates.js:9:9:9:13 | taint | dates.js:11:63:11:67 | taint | provenance | | +| dates.js:9:9:9:13 | taint | dates.js:12:66:12:70 | taint | provenance | | +| dates.js:9:9:9:13 | taint | dates.js:13:59:13:63 | taint | provenance | | +| dates.js:9:9:9:13 | taint | dates.js:16:62:16:66 | taint | provenance | | +| dates.js:9:9:9:13 | taint | dates.js:18:59:18:63 | taint | provenance | | +| dates.js:9:9:9:13 | taint | dates.js:21:61:21:65 | taint | provenance | | +| dates.js:9:17:9:69 | decodeU ... ing(1)) | dates.js:9:9:9:13 | taint | provenance | | | dates.js:9:36:9:55 | window.location.hash | dates.js:9:36:9:68 | window. ... ring(1) | provenance | | | dates.js:9:36:9:55 | window.location.hash | dates.js:9:36:9:68 | window. ... ring(1) | provenance | Config | | dates.js:9:36:9:68 | window. ... ring(1) | dates.js:9:17:9:69 | decodeU ... ing(1)) | provenance | | @@ -772,11 +772,11 @@ edges | dates.js:18:59:18:63 | taint | dates.js:18:42:18:64 | datefor ... taint) | provenance | | | dates.js:21:42:21:66 | dayjs(t ... (taint) | dates.js:21:31:21:68 | `Time i ... aint)}` | provenance | | | dates.js:21:61:21:65 | taint | dates.js:21:42:21:66 | dayjs(t ... (taint) | provenance | | -| dates.js:30:9:30:69 | taint | dates.js:37:77:37:81 | taint | provenance | | -| dates.js:30:9:30:69 | taint | dates.js:38:77:38:81 | taint | provenance | | -| dates.js:30:9:30:69 | taint | dates.js:39:79:39:83 | taint | provenance | | -| dates.js:30:9:30:69 | taint | dates.js:40:77:40:81 | taint | provenance | | -| dates.js:30:17:30:69 | decodeU ... ing(1)) | dates.js:30:9:30:69 | taint | provenance | | +| dates.js:30:9:30:13 | taint | dates.js:37:77:37:81 | taint | provenance | | +| dates.js:30:9:30:13 | taint | dates.js:38:77:38:81 | taint | provenance | | +| dates.js:30:9:30:13 | taint | dates.js:39:79:39:83 | taint | provenance | | +| dates.js:30:9:30:13 | taint | dates.js:40:77:40:81 | taint | provenance | | +| dates.js:30:17:30:69 | decodeU ... ing(1)) | dates.js:30:9:30:13 | taint | provenance | | | dates.js:30:36:30:55 | window.location.hash | dates.js:30:36:30:68 | window. ... ring(1) | provenance | | | dates.js:30:36:30:55 | window.location.hash | dates.js:30:36:30:68 | window. ... ring(1) | provenance | Config | | dates.js:30:36:30:68 | window. ... ring(1) | dates.js:30:17:30:69 | decodeU ... ing(1)) | provenance | | @@ -788,10 +788,10 @@ edges | dates.js:39:79:39:83 | taint | dates.js:39:42:39:84 | moment. ... taint) | provenance | | | dates.js:40:42:40:82 | dayjs.f ... taint) | dates.js:40:31:40:84 | `Time i ... aint)}` | provenance | | | dates.js:40:77:40:81 | taint | dates.js:40:42:40:82 | dayjs.f ... taint) | provenance | | -| dates.js:46:9:46:69 | taint | dates.js:48:83:48:87 | taint | provenance | | -| dates.js:46:9:46:69 | taint | dates.js:49:82:49:86 | taint | provenance | | -| dates.js:46:9:46:69 | taint | dates.js:50:97:50:101 | taint | provenance | | -| dates.js:46:17:46:69 | decodeU ... ing(1)) | dates.js:46:9:46:69 | taint | provenance | | +| dates.js:46:9:46:13 | taint | dates.js:48:83:48:87 | taint | provenance | | +| dates.js:46:9:46:13 | taint | dates.js:49:82:49:86 | taint | provenance | | +| dates.js:46:9:46:13 | taint | dates.js:50:97:50:101 | taint | provenance | | +| dates.js:46:17:46:69 | decodeU ... ing(1)) | dates.js:46:9:46:13 | taint | provenance | | | dates.js:46:36:46:55 | window.location.hash | dates.js:46:36:46:68 | window. ... ring(1) | provenance | | | dates.js:46:36:46:55 | window.location.hash | dates.js:46:36:46:68 | window. ... ring(1) | provenance | Config | | dates.js:46:36:46:68 | window. ... ring(1) | dates.js:46:17:46:69 | decodeU ... ing(1)) | provenance | | @@ -801,10 +801,10 @@ edges | dates.js:49:82:49:86 | taint | dates.js:49:42:49:87 | new Dat ... (taint) | provenance | | | dates.js:50:42:50:102 | DateTim ... (taint) | dates.js:50:31:50:104 | `Time i ... aint)}` | provenance | | | dates.js:50:97:50:101 | taint | dates.js:50:42:50:102 | DateTim ... (taint) | provenance | | -| dates.js:54:9:54:69 | taint | dates.js:57:94:57:98 | taint | provenance | | -| dates.js:54:9:54:69 | taint | dates.js:59:80:59:84 | taint | provenance | | -| dates.js:54:9:54:69 | taint | dates.js:61:81:61:85 | taint | provenance | | -| dates.js:54:17:54:69 | decodeU ... ing(1)) | dates.js:54:9:54:69 | taint | provenance | | +| dates.js:54:9:54:13 | taint | dates.js:57:94:57:98 | taint | provenance | | +| dates.js:54:9:54:13 | taint | dates.js:59:80:59:84 | taint | provenance | | +| dates.js:54:9:54:13 | taint | dates.js:61:81:61:85 | taint | provenance | | +| dates.js:54:17:54:69 | decodeU ... ing(1)) | dates.js:54:9:54:13 | taint | provenance | | | dates.js:54:36:54:55 | window.location.hash | dates.js:54:36:54:68 | window. ... ring(1) | provenance | | | dates.js:54:36:54:55 | window.location.hash | dates.js:54:36:54:68 | window. ... ring(1) | provenance | Config | | dates.js:54:36:54:68 | window. ... ring(1) | dates.js:54:17:54:69 | decodeU ... ing(1)) | provenance | | @@ -814,12 +814,12 @@ edges | dates.js:59:80:59:84 | taint | dates.js:59:42:59:85 | luxon.e ... (taint) | provenance | | | dates.js:61:42:61:86 | dayjs.s ... (taint) | dates.js:61:31:61:88 | `Time i ... aint)}` | provenance | | | dates.js:61:81:61:85 | taint | dates.js:61:42:61:86 | dayjs.s ... (taint) | provenance | | -| dragAndDrop.ts:8:11:8:50 | html | dragAndDrop.ts:15:25:15:28 | html | provenance | | -| dragAndDrop.ts:8:18:8:50 | dataTra ... /html') | dragAndDrop.ts:8:11:8:50 | html | provenance | | -| dragAndDrop.ts:43:15:43:54 | html | dragAndDrop.ts:50:29:50:32 | html | provenance | | -| dragAndDrop.ts:43:22:43:54 | dataTra ... /html') | dragAndDrop.ts:43:15:43:54 | html | provenance | | -| dragAndDrop.ts:71:13:71:61 | droppedHtml | dragAndDrop.ts:73:29:73:39 | droppedHtml | provenance | | -| dragAndDrop.ts:71:27:71:61 | e.dataT ... /html') | dragAndDrop.ts:71:13:71:61 | droppedHtml | provenance | | +| dragAndDrop.ts:8:11:8:14 | html | dragAndDrop.ts:15:25:15:28 | html | provenance | | +| dragAndDrop.ts:8:18:8:50 | dataTra ... /html') | dragAndDrop.ts:8:11:8:14 | html | provenance | | +| dragAndDrop.ts:43:15:43:18 | html | dragAndDrop.ts:50:29:50:32 | html | provenance | | +| dragAndDrop.ts:43:22:43:54 | dataTra ... /html') | dragAndDrop.ts:43:15:43:18 | html | provenance | | +| dragAndDrop.ts:71:13:71:23 | droppedHtml | dragAndDrop.ts:73:29:73:39 | droppedHtml | provenance | | +| dragAndDrop.ts:71:27:71:61 | e.dataT ... /html') | dragAndDrop.ts:71:13:71:23 | droppedHtml | provenance | | | event-handler-receiver.js:2:49:2:61 | location.href | event-handler-receiver.js:2:31:2:83 | '

    ' | provenance | | | event-handler-receiver.js:2:49:2:61 | location.href | event-handler-receiver.js:2:31:2:83 | '

    ' | provenance | Config | | hana.js:11:37:11:40 | rows | hana.js:11:37:11:51 | rows[0].comment | provenance | | @@ -836,13 +836,13 @@ edges | hana.js:84:35:84:43 | dummyRows | hana.js:84:35:84:54 | dummyRows[0].comment | provenance | | | hana.js:85:35:85:43 | tableRows | hana.js:85:35:85:54 | tableRows[0].comment | provenance | | | hana.js:90:33:90:34 | rs | hana.js:90:33:90:45 | rs[0].comment | provenance | | -| jquery.js:2:7:2:40 | tainted | jquery.js:4:5:4:11 | tainted | provenance | | -| jquery.js:2:7:2:40 | tainted | jquery.js:5:13:5:19 | tainted | provenance | | -| jquery.js:2:7:2:40 | tainted | jquery.js:6:11:6:17 | tainted | provenance | | -| jquery.js:2:7:2:40 | tainted | jquery.js:7:20:7:26 | tainted | provenance | | -| jquery.js:2:7:2:40 | tainted | jquery.js:8:28:8:34 | tainted | provenance | | -| jquery.js:2:7:2:40 | tainted | jquery.js:36:25:36:31 | tainted | provenance | | -| jquery.js:2:17:2:40 | documen ... .search | jquery.js:2:7:2:40 | tainted | provenance | | +| jquery.js:2:7:2:13 | tainted | jquery.js:4:5:4:11 | tainted | provenance | | +| jquery.js:2:7:2:13 | tainted | jquery.js:5:13:5:19 | tainted | provenance | | +| jquery.js:2:7:2:13 | tainted | jquery.js:6:11:6:17 | tainted | provenance | | +| jquery.js:2:7:2:13 | tainted | jquery.js:7:20:7:26 | tainted | provenance | | +| jquery.js:2:7:2:13 | tainted | jquery.js:8:28:8:34 | tainted | provenance | | +| jquery.js:2:7:2:13 | tainted | jquery.js:36:25:36:31 | tainted | provenance | | +| jquery.js:2:17:2:40 | documen ... .search | jquery.js:2:7:2:13 | tainted | provenance | | | jquery.js:4:5:4:11 | tainted | jquery.js:5:13:5:19 | tainted | provenance | | | jquery.js:5:13:5:19 | tainted | jquery.js:6:11:6:17 | tainted | provenance | | | jquery.js:6:11:6:17 | tainted | jquery.js:7:20:7:26 | tainted | provenance | | @@ -856,13 +856,13 @@ edges | jquery.js:15:38:15:59 | window. ... .search | jquery.js:15:19:15:60 | decodeU ... search) | provenance | | | jquery.js:16:38:16:52 | window.location | jquery.js:16:38:16:63 | window. ... tring() | provenance | | | jquery.js:16:38:16:63 | window. ... tring() | jquery.js:16:19:16:64 | decodeU ... ring()) | provenance | | -| jquery.js:18:7:18:33 | hash | jquery.js:21:5:21:8 | hash | provenance | | -| jquery.js:18:7:18:33 | hash | jquery.js:22:5:22:8 | hash | provenance | | -| jquery.js:18:7:18:33 | hash | jquery.js:23:5:23:8 | hash | provenance | | -| jquery.js:18:7:18:33 | hash | jquery.js:24:5:24:8 | hash | provenance | | -| jquery.js:18:7:18:33 | hash | jquery.js:27:5:27:8 | hash | provenance | | -| jquery.js:18:7:18:33 | hash | jquery.js:34:13:34:16 | hash | provenance | | -| jquery.js:18:14:18:33 | window.location.hash | jquery.js:18:7:18:33 | hash | provenance | | +| jquery.js:18:7:18:10 | hash | jquery.js:21:5:21:8 | hash | provenance | | +| jquery.js:18:7:18:10 | hash | jquery.js:22:5:22:8 | hash | provenance | | +| jquery.js:18:7:18:10 | hash | jquery.js:23:5:23:8 | hash | provenance | | +| jquery.js:18:7:18:10 | hash | jquery.js:24:5:24:8 | hash | provenance | | +| jquery.js:18:7:18:10 | hash | jquery.js:27:5:27:8 | hash | provenance | | +| jquery.js:18:7:18:10 | hash | jquery.js:34:13:34:16 | hash | provenance | | +| jquery.js:18:14:18:33 | window.location.hash | jquery.js:18:7:18:10 | hash | provenance | | | jquery.js:21:5:21:8 | hash | jquery.js:21:5:21:21 | hash.substring(1) | provenance | Config | | jquery.js:22:5:22:8 | hash | jquery.js:22:5:22:25 | hash.su ... (1, 10) | provenance | Config | | jquery.js:23:5:23:8 | hash | jquery.js:23:5:23:18 | hash.substr(1) | provenance | Config | @@ -872,51 +872,51 @@ edges | jquery.js:34:13:34:16 | hash | jquery.js:34:5:34:25 | '' + ... '' | provenance | Config | | jquery.js:36:25:36:31 | tainted | jquery.js:37:31:37:37 | tainted | provenance | | | jquery.js:37:31:37:37 | tainted | jquery.js:37:25:37:37 | () => tainted | provenance | Config | -| json-stringify.jsx:5:9:5:36 | locale | json-stringify.jsx:11:51:11:56 | locale | provenance | | -| json-stringify.jsx:5:9:5:36 | locale | json-stringify.jsx:19:56:19:61 | locale | provenance | | -| json-stringify.jsx:5:9:5:36 | locale | json-stringify.jsx:31:55:31:60 | locale | provenance | | -| json-stringify.jsx:5:18:5:36 | req.param("locale") | json-stringify.jsx:5:9:5:36 | locale | provenance | | +| json-stringify.jsx:5:9:5:14 | locale | json-stringify.jsx:11:51:11:56 | locale | provenance | | +| json-stringify.jsx:5:9:5:14 | locale | json-stringify.jsx:19:56:19:61 | locale | provenance | | +| json-stringify.jsx:5:9:5:14 | locale | json-stringify.jsx:31:55:31:60 | locale | provenance | | +| json-stringify.jsx:5:18:5:36 | req.param("locale") | json-stringify.jsx:5:9:5:14 | locale | provenance | | | json-stringify.jsx:11:51:11:56 | locale | json-stringify.jsx:35:40:35:61 | JSON.st ... jsonLD) | provenance | | | json-stringify.jsx:19:56:19:61 | locale | json-stringify.jsx:35:40:35:61 | JSON.st ... jsonLD) | provenance | | | json-stringify.jsx:31:55:31:60 | locale | json-stringify.jsx:31:40:31:61 | JSON.st ... locale) | provenance | | -| jwt-server.js:7:9:7:35 | taint | jwt-server.js:9:16:9:20 | taint | provenance | | -| jwt-server.js:7:17:7:35 | req.param("wobble") | jwt-server.js:7:9:7:35 | taint | provenance | | +| jwt-server.js:7:9:7:13 | taint | jwt-server.js:9:16:9:20 | taint | provenance | | +| jwt-server.js:7:17:7:35 | req.param("wobble") | jwt-server.js:7:9:7:13 | taint | provenance | | | jwt-server.js:9:16:9:20 | taint | jwt-server.js:9:55:9:61 | decoded | provenance | | | jwt-server.js:9:55:9:61 | decoded | jwt-server.js:10:19:10:25 | decoded | provenance | | | jwt-server.js:10:19:10:25 | decoded | jwt-server.js:10:19:10:29 | decoded.foo | provenance | | | jwt.js:4:36:4:39 | data | jwt.js:5:30:5:33 | data | provenance | | -| jwt.js:5:9:5:34 | decoded | jwt.js:6:14:6:20 | decoded | provenance | | -| jwt.js:5:19:5:34 | jwt_decode(data) | jwt.js:5:9:5:34 | decoded | provenance | | +| jwt.js:5:9:5:15 | decoded | jwt.js:6:14:6:20 | decoded | provenance | | +| jwt.js:5:19:5:34 | jwt_decode(data) | jwt.js:5:9:5:15 | decoded | provenance | | | jwt.js:5:30:5:33 | data | jwt.js:5:19:5:34 | jwt_decode(data) | provenance | | | nodemailer.js:13:50:13:66 | req.query.message | nodemailer.js:13:11:13:69 | `Hi, yo ... sage}.` | provenance | | -| optionalSanitizer.js:2:7:2:39 | target | optionalSanitizer.js:6:18:6:23 | target | provenance | | -| optionalSanitizer.js:2:7:2:39 | target | optionalSanitizer.js:8:17:8:22 | target | provenance | | -| optionalSanitizer.js:2:7:2:39 | target | optionalSanitizer.js:15:9:15:14 | target | provenance | | -| optionalSanitizer.js:2:16:2:39 | documen ... .search | optionalSanitizer.js:2:7:2:39 | target | provenance | | -| optionalSanitizer.js:8:7:8:22 | tainted | optionalSanitizer.js:9:18:9:24 | tainted | provenance | | -| optionalSanitizer.js:8:17:8:22 | target | optionalSanitizer.js:8:7:8:22 | tainted | provenance | | +| optionalSanitizer.js:2:7:2:12 | target | optionalSanitizer.js:6:18:6:23 | target | provenance | | +| optionalSanitizer.js:2:7:2:12 | target | optionalSanitizer.js:8:17:8:22 | target | provenance | | +| optionalSanitizer.js:2:7:2:12 | target | optionalSanitizer.js:15:9:15:14 | target | provenance | | +| optionalSanitizer.js:2:16:2:39 | documen ... .search | optionalSanitizer.js:2:7:2:12 | target | provenance | | +| optionalSanitizer.js:8:7:8:13 | tainted | optionalSanitizer.js:9:18:9:24 | tainted | provenance | | +| optionalSanitizer.js:8:17:8:22 | target | optionalSanitizer.js:8:7:8:13 | tainted | provenance | | | optionalSanitizer.js:15:9:15:14 | target | optionalSanitizer.js:16:18:16:18 | x | provenance | | | optionalSanitizer.js:16:18:16:18 | x | optionalSanitizer.js:17:20:17:20 | x | provenance | | -| optionalSanitizer.js:26:7:26:39 | target | optionalSanitizer.js:31:18:31:23 | target | provenance | | -| optionalSanitizer.js:26:7:26:39 | target | optionalSanitizer.js:38:18:38:23 | target | provenance | | -| optionalSanitizer.js:26:7:26:39 | target | optionalSanitizer.js:45:41:45:46 | target | provenance | | -| optionalSanitizer.js:26:7:26:39 | target | optionalSanitizer.js:45:51:45:56 | target | provenance | | -| optionalSanitizer.js:26:16:26:39 | documen ... .search | optionalSanitizer.js:26:7:26:39 | target | provenance | | +| optionalSanitizer.js:26:7:26:12 | target | optionalSanitizer.js:31:18:31:23 | target | provenance | | +| optionalSanitizer.js:26:7:26:12 | target | optionalSanitizer.js:38:18:38:23 | target | provenance | | +| optionalSanitizer.js:26:7:26:12 | target | optionalSanitizer.js:45:41:45:46 | target | provenance | | +| optionalSanitizer.js:26:7:26:12 | target | optionalSanitizer.js:45:51:45:56 | target | provenance | | +| optionalSanitizer.js:26:16:26:39 | documen ... .search | optionalSanitizer.js:26:7:26:12 | target | provenance | | | optionalSanitizer.js:28:24:28:24 | x | optionalSanitizer.js:29:12:29:12 | x | provenance | | -| optionalSanitizer.js:31:7:31:23 | tainted2 | optionalSanitizer.js:32:18:32:25 | tainted2 | provenance | | -| optionalSanitizer.js:31:7:31:23 | tainted2 | optionalSanitizer.js:34:28:34:35 | tainted2 | provenance | | -| optionalSanitizer.js:31:7:31:23 | tainted2 | optionalSanitizer.js:36:18:36:25 | tainted2 | provenance | | -| optionalSanitizer.js:31:18:31:23 | target | optionalSanitizer.js:31:7:31:23 | tainted2 | provenance | | -| optionalSanitizer.js:34:5:34:36 | tainted2 | optionalSanitizer.js:36:18:36:25 | tainted2 | provenance | | -| optionalSanitizer.js:34:16:34:36 | sanitiz ... inted2) | optionalSanitizer.js:34:5:34:36 | tainted2 | provenance | | +| optionalSanitizer.js:31:7:31:14 | tainted2 | optionalSanitizer.js:32:18:32:25 | tainted2 | provenance | | +| optionalSanitizer.js:31:7:31:14 | tainted2 | optionalSanitizer.js:34:28:34:35 | tainted2 | provenance | | +| optionalSanitizer.js:31:7:31:14 | tainted2 | optionalSanitizer.js:36:18:36:25 | tainted2 | provenance | | +| optionalSanitizer.js:31:18:31:23 | target | optionalSanitizer.js:31:7:31:14 | tainted2 | provenance | | +| optionalSanitizer.js:34:5:34:12 | tainted2 | optionalSanitizer.js:36:18:36:25 | tainted2 | provenance | | +| optionalSanitizer.js:34:16:34:36 | sanitiz ... inted2) | optionalSanitizer.js:34:5:34:12 | tainted2 | provenance | | | optionalSanitizer.js:34:28:34:35 | tainted2 | optionalSanitizer.js:28:24:28:24 | x | provenance | | | optionalSanitizer.js:34:28:34:35 | tainted2 | optionalSanitizer.js:34:16:34:36 | sanitiz ... inted2) | provenance | | -| optionalSanitizer.js:38:7:38:23 | tainted3 | optionalSanitizer.js:39:18:39:25 | tainted3 | provenance | | -| optionalSanitizer.js:38:7:38:23 | tainted3 | optionalSanitizer.js:41:28:41:35 | tainted3 | provenance | | -| optionalSanitizer.js:38:7:38:23 | tainted3 | optionalSanitizer.js:43:18:43:25 | tainted3 | provenance | | -| optionalSanitizer.js:38:18:38:23 | target | optionalSanitizer.js:38:7:38:23 | tainted3 | provenance | | -| optionalSanitizer.js:41:5:41:36 | tainted3 | optionalSanitizer.js:43:18:43:25 | tainted3 | provenance | | -| optionalSanitizer.js:41:16:41:36 | sanitiz ... inted3) | optionalSanitizer.js:41:5:41:36 | tainted3 | provenance | | +| optionalSanitizer.js:38:7:38:14 | tainted3 | optionalSanitizer.js:39:18:39:25 | tainted3 | provenance | | +| optionalSanitizer.js:38:7:38:14 | tainted3 | optionalSanitizer.js:41:28:41:35 | tainted3 | provenance | | +| optionalSanitizer.js:38:7:38:14 | tainted3 | optionalSanitizer.js:43:18:43:25 | tainted3 | provenance | | +| optionalSanitizer.js:38:18:38:23 | target | optionalSanitizer.js:38:7:38:14 | tainted3 | provenance | | +| optionalSanitizer.js:41:5:41:12 | tainted3 | optionalSanitizer.js:43:18:43:25 | tainted3 | provenance | | +| optionalSanitizer.js:41:16:41:36 | sanitiz ... inted3) | optionalSanitizer.js:41:5:41:12 | tainted3 | provenance | | | optionalSanitizer.js:41:28:41:35 | tainted3 | optionalSanitizer.js:28:24:28:24 | x | provenance | | | optionalSanitizer.js:41:28:41:35 | tainted3 | optionalSanitizer.js:41:16:41:36 | sanitiz ... inted3) | provenance | | | optionalSanitizer.js:45:29:45:47 | sanitizeBad(target) | optionalSanitizer.js:45:18:45:56 | sanitiz ... target | provenance | | @@ -925,8 +925,8 @@ edges | optionalSanitizer.js:45:51:45:56 | target | optionalSanitizer.js:45:18:45:56 | sanitiz ... target | provenance | | | pages/[id].jsx:3:30:3:35 | params [id] | pages/[id].jsx:13:44:13:49 | params [id] | provenance | | | pages/[id].jsx:3:30:3:35 | params [q] | pages/[id].jsx:16:44:16:49 | params [q] | provenance | | -| pages/[id].jsx:5:9:5:14 | { id } | pages/[id].jsx:5:9:5:29 | id | provenance | | -| pages/[id].jsx:5:9:5:29 | id | pages/[id].jsx:10:44:10:45 | id | provenance | | +| pages/[id].jsx:5:9:5:14 | { id } | pages/[id].jsx:5:11:5:12 | id | provenance | | +| pages/[id].jsx:5:11:5:12 | id | pages/[id].jsx:10:44:10:45 | id | provenance | | | pages/[id].jsx:5:18:5:29 | router.query | pages/[id].jsx:5:9:5:14 | { id } | provenance | | | pages/[id].jsx:13:44:13:49 | params [id] | pages/[id].jsx:13:44:13:52 | params.id | provenance | | | pages/[id].jsx:16:44:16:49 | params [q] | pages/[id].jsx:16:44:16:51 | params.q | provenance | | @@ -936,30 +936,30 @@ edges | pages/[id].jsx:25:11:25:33 | context ... d \|\| "" | pages/[id].jsx:24:12:27:5 | {\\n ... e\\n } [id] | provenance | | | pages/[id].jsx:26:10:26:22 | context.query | pages/[id].jsx:26:10:26:36 | context ... r \|\| "" | provenance | | | pages/[id].jsx:26:10:26:36 | context ... r \|\| "" | pages/[id].jsx:24:12:27:5 | {\\n ... e\\n } [q] | provenance | | -| react-native.js:7:7:7:33 | tainted | react-native.js:8:18:8:24 | tainted | provenance | | -| react-native.js:7:7:7:33 | tainted | react-native.js:9:27:9:33 | tainted | provenance | | -| react-native.js:7:17:7:33 | req.param("code") | react-native.js:7:7:7:33 | tainted | provenance | | +| react-native.js:7:7:7:13 | tainted | react-native.js:8:18:8:24 | tainted | provenance | | +| react-native.js:7:7:7:13 | tainted | react-native.js:9:27:9:33 | tainted | provenance | | +| react-native.js:7:17:7:33 | req.param("code") | react-native.js:7:7:7:13 | tainted | provenance | | | react-use-router.js:8:21:8:32 | router.query | react-use-router.js:8:21:8:39 | router.query.foobar | provenance | | | react-use-router.js:11:24:11:35 | router.query | react-use-router.js:11:24:11:42 | router.query.foobar | provenance | | | react-use-router.js:23:43:23:54 | router.query | react-use-router.js:23:43:23:61 | router.query.foobar | provenance | | | react-use-router.js:33:21:33:32 | router.query | react-use-router.js:33:21:33:39 | router.query.foobar | provenance | | -| react-use-state.js:4:9:4:49 | state | react-use-state.js:5:51:5:55 | state | provenance | | -| react-use-state.js:4:38:4:48 | window.name | react-use-state.js:4:9:4:49 | state | provenance | | -| react-use-state.js:9:9:9:43 | state | react-use-state.js:11:51:11:55 | state | provenance | | -| react-use-state.js:10:14:10:24 | window.name | react-use-state.js:9:9:9:43 | state | provenance | | -| react-use-state.js:15:9:15:43 | state | react-use-state.js:17:51:17:55 | state | provenance | | -| react-use-state.js:15:10:15:14 | state | react-use-state.js:15:9:15:43 | state | provenance | | +| react-use-state.js:4:10:4:14 | state | react-use-state.js:5:51:5:55 | state | provenance | | +| react-use-state.js:4:38:4:48 | window.name | react-use-state.js:4:10:4:14 | state | provenance | | +| react-use-state.js:9:10:9:14 | state | react-use-state.js:11:51:11:55 | state | provenance | | +| react-use-state.js:10:14:10:24 | window.name | react-use-state.js:9:10:9:14 | state | provenance | | +| react-use-state.js:15:10:15:14 | state | react-use-state.js:15:10:15:14 | state | provenance | | +| react-use-state.js:15:10:15:14 | state | react-use-state.js:17:51:17:55 | state | provenance | | | react-use-state.js:16:20:16:30 | window.name | react-use-state.js:15:10:15:14 | state | provenance | | | react-use-state.js:21:10:21:14 | state | react-use-state.js:22:14:22:17 | prev | provenance | | | react-use-state.js:22:14:22:17 | prev | react-use-state.js:23:35:23:38 | prev | provenance | | | react-use-state.js:25:20:25:30 | window.name | react-use-state.js:21:10:21:14 | state | provenance | | -| sanitiser.js:16:7:16:27 | tainted | sanitiser.js:23:29:23:35 | tainted | provenance | | -| sanitiser.js:16:7:16:27 | tainted | sanitiser.js:30:29:30:35 | tainted | provenance | | -| sanitiser.js:16:7:16:27 | tainted | sanitiser.js:33:29:33:35 | tainted | provenance | | -| sanitiser.js:16:7:16:27 | tainted | sanitiser.js:38:29:38:35 | tainted | provenance | | -| sanitiser.js:16:7:16:27 | tainted | sanitiser.js:45:29:45:35 | tainted | provenance | | -| sanitiser.js:16:7:16:27 | tainted | sanitiser.js:48:19:48:25 | tainted | provenance | | -| sanitiser.js:16:17:16:27 | window.name | sanitiser.js:16:7:16:27 | tainted | provenance | | +| sanitiser.js:16:7:16:13 | tainted | sanitiser.js:23:29:23:35 | tainted | provenance | | +| sanitiser.js:16:7:16:13 | tainted | sanitiser.js:30:29:30:35 | tainted | provenance | | +| sanitiser.js:16:7:16:13 | tainted | sanitiser.js:33:29:33:35 | tainted | provenance | | +| sanitiser.js:16:7:16:13 | tainted | sanitiser.js:38:29:38:35 | tainted | provenance | | +| sanitiser.js:16:7:16:13 | tainted | sanitiser.js:45:29:45:35 | tainted | provenance | | +| sanitiser.js:16:7:16:13 | tainted | sanitiser.js:48:19:48:25 | tainted | provenance | | +| sanitiser.js:16:17:16:27 | window.name | sanitiser.js:16:7:16:13 | tainted | provenance | | | sanitiser.js:23:29:23:35 | tainted | sanitiser.js:23:21:23:44 | '' + ... '' | provenance | | | sanitiser.js:30:29:30:35 | tainted | sanitiser.js:30:21:30:44 | '' + ... '' | provenance | | | sanitiser.js:33:29:33:35 | tainted | sanitiser.js:33:21:33:44 | '' + ... '' | provenance | | @@ -969,8 +969,8 @@ edges | stored-xss.js:2:39:2:62 | documen ... .search | stored-xss.js:5:20:5:52 | session ... ssion') | provenance | | | stored-xss.js:3:35:3:58 | documen ... .search | stored-xss.js:8:20:8:48 | localSt ... local') | provenance | | | stored-xss.js:3:35:3:58 | documen ... .search | stored-xss.js:10:16:10:44 | localSt ... local') | provenance | | -| stored-xss.js:10:9:10:44 | href | stored-xss.js:12:35:12:38 | href | provenance | | -| stored-xss.js:10:16:10:44 | localSt ... local') | stored-xss.js:10:9:10:44 | href | provenance | | +| stored-xss.js:10:9:10:12 | href | stored-xss.js:12:35:12:38 | href | provenance | | +| stored-xss.js:10:16:10:44 | localSt ... local') | stored-xss.js:10:9:10:12 | href | provenance | | | stored-xss.js:12:35:12:38 | href | stored-xss.js:12:20:12:54 | "" | provenance | | | stored-xss.js:12:35:12:38 | href | stored-xss.js:12:20:12:54 | "" | provenance | Config | | string-manipulations.js:5:16:5:37 | documen ... on.href | string-manipulations.js:5:16:5:47 | documen ... lueOf() | provenance | | @@ -980,24 +980,24 @@ edges | string-manipulations.js:9:36:9:57 | documen ... on.href | string-manipulations.js:9:16:9:58 | String. ... n.href) | provenance | | | string-manipulations.js:10:23:10:44 | documen ... on.href | string-manipulations.js:10:16:10:45 | String( ... n.href) | provenance | | | tainted-url-suffix-arguments.js:3:17:3:17 | y | tainted-url-suffix-arguments.js:6:22:6:22 | y | provenance | | -| tainted-url-suffix-arguments.js:11:11:11:36 | url | tainted-url-suffix-arguments.js:12:17:12:19 | url | provenance | | -| tainted-url-suffix-arguments.js:11:17:11:36 | window.location.href | tainted-url-suffix-arguments.js:11:11:11:36 | url | provenance | | +| tainted-url-suffix-arguments.js:11:11:11:13 | url | tainted-url-suffix-arguments.js:12:17:12:19 | url | provenance | | +| tainted-url-suffix-arguments.js:11:17:11:36 | window.location.href | tainted-url-suffix-arguments.js:11:11:11:13 | url | provenance | | | tainted-url-suffix-arguments.js:12:17:12:19 | url | tainted-url-suffix-arguments.js:3:17:3:17 | y | provenance | | -| tooltip.jsx:6:11:6:30 | source | tooltip.jsx:10:25:10:30 | source | provenance | | -| tooltip.jsx:6:11:6:30 | source | tooltip.jsx:11:25:11:30 | source | provenance | | -| tooltip.jsx:6:20:6:30 | window.name | tooltip.jsx:6:11:6:30 | source | provenance | | -| tooltip.jsx:17:11:17:33 | provide [source] | tooltip.jsx:18:51:18:57 | provide [source] | provenance | | -| tooltip.jsx:17:21:17:33 | props.provide [source] | tooltip.jsx:17:11:17:33 | provide [source] | provenance | | +| tooltip.jsx:6:11:6:16 | source | tooltip.jsx:10:25:10:30 | source | provenance | | +| tooltip.jsx:6:11:6:16 | source | tooltip.jsx:11:25:11:30 | source | provenance | | +| tooltip.jsx:6:20:6:30 | window.name | tooltip.jsx:6:11:6:16 | source | provenance | | +| tooltip.jsx:17:11:17:17 | provide [source] | tooltip.jsx:18:51:18:57 | provide [source] | provenance | | +| tooltip.jsx:17:21:17:33 | props.provide [source] | tooltip.jsx:17:11:17:17 | provide [source] | provenance | | | tooltip.jsx:18:51:18:57 | provide [source] | tooltip.jsx:18:51:18:59 | provide() | provenance | | | tooltip.jsx:18:51:18:57 | provide [source] | tooltip.jsx:23:38:23:43 | source | provenance | | -| tooltip.jsx:22:11:22:30 | source | tooltip.jsx:17:21:17:33 | props.provide [source] | provenance | | -| tooltip.jsx:22:20:22:30 | window.name | tooltip.jsx:22:11:22:30 | source | provenance | | -| translate.js:6:7:6:39 | target | translate.js:7:42:7:47 | target | provenance | | -| translate.js:6:16:6:39 | documen ... .search | translate.js:6:7:6:39 | target | provenance | | -| translate.js:7:7:7:61 | searchParams | translate.js:8:27:8:38 | searchParams | provenance | | -| translate.js:7:7:7:61 | searchParams [MapValue] | translate.js:8:27:8:38 | searchParams [MapValue] | provenance | | -| translate.js:7:22:7:61 | new URL ... ing(1)) | translate.js:7:7:7:61 | searchParams | provenance | | -| translate.js:7:22:7:61 | new URL ... ing(1)) [MapValue] | translate.js:7:7:7:61 | searchParams [MapValue] | provenance | | +| tooltip.jsx:22:11:22:16 | source | tooltip.jsx:17:21:17:33 | props.provide [source] | provenance | | +| tooltip.jsx:22:20:22:30 | window.name | tooltip.jsx:22:11:22:16 | source | provenance | | +| translate.js:6:7:6:12 | target | translate.js:7:42:7:47 | target | provenance | | +| translate.js:6:16:6:39 | documen ... .search | translate.js:6:7:6:12 | target | provenance | | +| translate.js:7:7:7:18 | searchParams | translate.js:8:27:8:38 | searchParams | provenance | | +| translate.js:7:7:7:18 | searchParams [MapValue] | translate.js:8:27:8:38 | searchParams [MapValue] | provenance | | +| translate.js:7:22:7:61 | new URL ... ing(1)) | translate.js:7:7:7:18 | searchParams | provenance | | +| translate.js:7:22:7:61 | new URL ... ing(1)) [MapValue] | translate.js:7:7:7:18 | searchParams [MapValue] | provenance | | | translate.js:7:42:7:47 | target | translate.js:7:42:7:60 | target.substring(1) | provenance | | | translate.js:7:42:7:47 | target | translate.js:7:42:7:60 | target.substring(1) | provenance | Config | | translate.js:7:42:7:47 | target | translate.js:7:42:7:60 | target.substring(1) | provenance | Config | @@ -1024,32 +1024,32 @@ edges | tst3.js:7:32:7:35 | data | tst3.js:7:32:7:37 | data.p | provenance | | | tst3.js:9:37:9:40 | data | tst3.js:9:37:9:42 | data.p | provenance | | | tst3.js:10:38:10:41 | data | tst3.js:10:38:10:43 | data.p | provenance | | -| tst.js:2:7:2:39 | target | tst.js:4:18:4:23 | target | provenance | | -| tst.js:2:7:2:39 | target | tst.js:9:28:9:33 | target | provenance | | -| tst.js:2:7:2:39 | target | tst.js:17:42:17:47 | target | provenance | | -| tst.js:2:16:2:39 | documen ... .search | tst.js:2:7:2:39 | target | provenance | | +| tst.js:2:7:2:12 | target | tst.js:4:18:4:23 | target | provenance | | +| tst.js:2:7:2:12 | target | tst.js:9:28:9:33 | target | provenance | | +| tst.js:2:7:2:12 | target | tst.js:17:42:17:47 | target | provenance | | +| tst.js:2:16:2:39 | documen ... .search | tst.js:2:7:2:12 | target | provenance | | | tst.js:6:37:6:58 | documen ... on.href | tst.js:6:37:6:114 | documen ... t=")+8) | provenance | | | tst.js:6:37:6:58 | documen ... on.href | tst.js:6:37:6:114 | documen ... t=")+8) | provenance | Config | | tst.js:6:37:6:114 | documen ... t=")+8) | tst.js:6:18:6:126 | "" | provenance | | | tst.js:6:37:6:114 | documen ... t=")+8) | tst.js:6:18:6:126 | "" | provenance | | | tst.js:6:37:6:114 | documen ... t=")+8) | tst.js:6:18:6:126 | "" | provenance | Config | | tst.js:9:28:9:33 | target | tst.js:9:5:9:42 | '
    ' | provenance | Config | -| tst.js:14:7:14:56 | params | tst.js:15:18:15:23 | params | provenance | | -| tst.js:14:7:14:56 | params [MapValue] | tst.js:15:18:15:23 | params [MapValue] | provenance | | +| tst.js:14:7:14:12 | params | tst.js:15:18:15:23 | params | provenance | | +| tst.js:14:7:14:12 | params [MapValue] | tst.js:15:18:15:23 | params [MapValue] | provenance | | | tst.js:14:16:14:43 | (new UR ... ation)) [searchParams, MapValue] | tst.js:14:16:14:56 | (new UR ... hParams [MapValue] | provenance | | | tst.js:14:16:14:43 | (new UR ... ation)) [searchParams] | tst.js:14:16:14:56 | (new UR ... hParams | provenance | | -| tst.js:14:16:14:56 | (new UR ... hParams | tst.js:14:7:14:56 | params | provenance | | -| tst.js:14:16:14:56 | (new UR ... hParams [MapValue] | tst.js:14:7:14:56 | params [MapValue] | provenance | | +| tst.js:14:16:14:56 | (new UR ... hParams | tst.js:14:7:14:12 | params | provenance | | +| tst.js:14:16:14:56 | (new UR ... hParams [MapValue] | tst.js:14:7:14:12 | params [MapValue] | provenance | | | tst.js:14:17:14:42 | new URL ... cation) [searchParams, MapValue] | tst.js:14:16:14:43 | (new UR ... ation)) [searchParams, MapValue] | provenance | | | tst.js:14:17:14:42 | new URL ... cation) [searchParams] | tst.js:14:16:14:43 | (new UR ... ation)) [searchParams] | provenance | | | tst.js:14:25:14:41 | document.location | tst.js:14:17:14:42 | new URL ... cation) [searchParams, MapValue] | provenance | | | tst.js:14:25:14:41 | document.location | tst.js:14:17:14:42 | new URL ... cation) [searchParams] | provenance | | | tst.js:15:18:15:23 | params | tst.js:15:18:15:35 | params.get('name') | provenance | Config | | tst.js:15:18:15:23 | params [MapValue] | tst.js:15:18:15:35 | params.get('name') | provenance | | -| tst.js:17:7:17:61 | searchParams | tst.js:18:18:18:29 | searchParams | provenance | | -| tst.js:17:7:17:61 | searchParams [MapValue] | tst.js:18:18:18:29 | searchParams [MapValue] | provenance | | -| tst.js:17:22:17:61 | new URL ... ing(1)) | tst.js:17:7:17:61 | searchParams | provenance | | -| tst.js:17:22:17:61 | new URL ... ing(1)) [MapValue] | tst.js:17:7:17:61 | searchParams [MapValue] | provenance | | +| tst.js:17:7:17:18 | searchParams | tst.js:18:18:18:29 | searchParams | provenance | | +| tst.js:17:7:17:18 | searchParams [MapValue] | tst.js:18:18:18:29 | searchParams [MapValue] | provenance | | +| tst.js:17:22:17:61 | new URL ... ing(1)) | tst.js:17:7:17:18 | searchParams | provenance | | +| tst.js:17:22:17:61 | new URL ... ing(1)) [MapValue] | tst.js:17:7:17:18 | searchParams [MapValue] | provenance | | | tst.js:17:42:17:47 | target | tst.js:17:42:17:60 | target.substring(1) | provenance | | | tst.js:17:42:17:47 | target | tst.js:17:42:17:60 | target.substring(1) | provenance | Config | | tst.js:17:42:17:47 | target | tst.js:17:42:17:60 | target.substring(1) | provenance | Config | @@ -1099,31 +1099,31 @@ edges | tst.js:58:1:58:27 | [,docum ... search] [1] | tst.js:58:46:58:46 | x | provenance | | | tst.js:58:3:58:26 | documen ... .search | tst.js:58:1:58:27 | [,docum ... search] [1] | provenance | | | tst.js:58:46:58:46 | x | tst.js:60:20:60:20 | x | provenance | | -| tst.js:93:7:93:44 | v | tst.js:95:18:95:18 | v | provenance | | -| tst.js:93:7:93:44 | v | tst.js:120:18:120:18 | v | provenance | | +| tst.js:93:7:93:7 | v | tst.js:95:18:95:18 | v | provenance | | +| tst.js:93:7:93:7 | v | tst.js:120:18:120:18 | v | provenance | | | tst.js:93:11:93:34 | documen ... .search | tst.js:93:11:93:44 | documen ... bstr(1) | provenance | | | tst.js:93:11:93:34 | documen ... .search | tst.js:93:11:93:44 | documen ... bstr(1) | provenance | Config | -| tst.js:93:11:93:44 | documen ... bstr(1) | tst.js:93:7:93:44 | v | provenance | | +| tst.js:93:11:93:44 | documen ... bstr(1) | tst.js:93:7:93:7 | v | provenance | | | tst.js:132:29:132:50 | window. ... .search | tst.js:135:29:135:29 | v | provenance | | | tst.js:135:29:135:29 | v | tst.js:135:49:135:49 | v | provenance | | | tst.js:142:40:142:61 | window. ... .search | tst.js:139:29:139:46 | xssSourceService() | provenance | | -| tst.js:161:9:161:41 | target | tst.js:164:28:164:33 | target | provenance | | -| tst.js:161:18:161:41 | documen ... .search | tst.js:161:9:161:41 | target | provenance | | -| tst.js:168:9:168:42 | tainted | tst.js:170:31:170:37 | tainted | provenance | | -| tst.js:168:9:168:42 | tainted | tst.js:172:42:172:48 | tainted | provenance | | -| tst.js:168:9:168:42 | tainted | tst.js:173:33:173:39 | tainted | provenance | | -| tst.js:168:9:168:42 | tainted | tst.js:175:54:175:60 | tainted | provenance | | -| tst.js:168:9:168:42 | tainted | tst.js:176:45:176:51 | tainted | provenance | | -| tst.js:168:9:168:42 | tainted | tst.js:177:49:177:55 | tainted | provenance | | -| tst.js:168:19:168:42 | documen ... .search | tst.js:168:9:168:42 | tainted | provenance | | -| tst.js:181:9:181:42 | tainted | tst.js:183:67:183:73 | tainted | provenance | | -| tst.js:181:9:181:42 | tainted | tst.js:184:67:184:73 | tainted | provenance | | -| tst.js:181:9:181:42 | tainted | tst.js:220:35:220:41 | tainted | provenance | | -| tst.js:181:9:181:42 | tainted | tst.js:222:20:222:26 | tainted | provenance | | -| tst.js:181:9:181:42 | tainted | tst.js:224:23:224:29 | tainted | provenance | | -| tst.js:181:9:181:42 | tainted | tst.js:225:23:225:29 | tainted | provenance | | -| tst.js:181:9:181:42 | tainted | tst.js:239:23:239:29 | tainted | provenance | | -| tst.js:181:19:181:42 | documen ... .search | tst.js:181:9:181:42 | tainted | provenance | | +| tst.js:161:9:161:14 | target | tst.js:164:28:164:33 | target | provenance | | +| tst.js:161:18:161:41 | documen ... .search | tst.js:161:9:161:14 | target | provenance | | +| tst.js:168:9:168:15 | tainted | tst.js:170:31:170:37 | tainted | provenance | | +| tst.js:168:9:168:15 | tainted | tst.js:172:42:172:48 | tainted | provenance | | +| tst.js:168:9:168:15 | tainted | tst.js:173:33:173:39 | tainted | provenance | | +| tst.js:168:9:168:15 | tainted | tst.js:175:54:175:60 | tainted | provenance | | +| tst.js:168:9:168:15 | tainted | tst.js:176:45:176:51 | tainted | provenance | | +| tst.js:168:9:168:15 | tainted | tst.js:177:49:177:55 | tainted | provenance | | +| tst.js:168:19:168:42 | documen ... .search | tst.js:168:9:168:15 | tainted | provenance | | +| tst.js:181:9:181:15 | tainted | tst.js:183:67:183:73 | tainted | provenance | | +| tst.js:181:9:181:15 | tainted | tst.js:184:67:184:73 | tainted | provenance | | +| tst.js:181:9:181:15 | tainted | tst.js:220:35:220:41 | tainted | provenance | | +| tst.js:181:9:181:15 | tainted | tst.js:222:20:222:26 | tainted | provenance | | +| tst.js:181:9:181:15 | tainted | tst.js:224:23:224:29 | tainted | provenance | | +| tst.js:181:9:181:15 | tainted | tst.js:225:23:225:29 | tainted | provenance | | +| tst.js:181:9:181:15 | tainted | tst.js:239:23:239:29 | tainted | provenance | | +| tst.js:181:19:181:42 | documen ... .search | tst.js:181:9:181:15 | tainted | provenance | | | tst.js:183:67:183:73 | tainted | tst.js:184:67:184:73 | tainted | provenance | | | tst.js:184:67:184:73 | tainted | tst.js:188:35:188:41 | tainted | provenance | | | tst.js:184:67:184:73 | tainted | tst.js:190:46:190:52 | tainted | provenance | | @@ -1144,8 +1144,8 @@ edges | tst.js:225:23:225:29 | tainted | tst.js:239:23:239:29 | tainted | provenance | | | tst.js:231:39:231:55 | props.propTainted | tst.js:235:60:235:82 | this.st ... Tainted | provenance | | | tst.js:239:23:239:29 | tainted | tst.js:231:39:231:55 | props.propTainted | provenance | | -| tst.js:269:9:269:29 | tainted | tst.js:272:59:272:65 | tainted | provenance | | -| tst.js:269:19:269:29 | window.name | tst.js:269:9:269:29 | tainted | provenance | | +| tst.js:269:9:269:15 | tainted | tst.js:272:59:272:65 | tainted | provenance | | +| tst.js:269:19:269:29 | window.name | tst.js:269:9:269:15 | tainted | provenance | | | tst.js:285:9:285:16 | location | tst.js:286:10:286:10 | e | provenance | | | tst.js:286:10:286:10 | e | tst.js:287:20:287:20 | e | provenance | | | tst.js:292:10:292:17 | location | tst.js:294:10:294:10 | e | provenance | | @@ -1154,34 +1154,34 @@ edges | tst.js:311:10:311:35 | new URL ... cation) [searchParams] | tst.js:315:16:315:30 | getTaintedUrl() [searchParams] | provenance | | | tst.js:311:18:311:34 | document.location | tst.js:311:10:311:35 | new URL ... cation) [searchParams, MapValue] | provenance | | | tst.js:311:18:311:34 | document.location | tst.js:311:10:311:35 | new URL ... cation) [searchParams] | provenance | | -| tst.js:315:7:315:43 | params | tst.js:316:18:316:23 | params | provenance | | -| tst.js:315:7:315:43 | params [MapValue] | tst.js:316:18:316:23 | params [MapValue] | provenance | | +| tst.js:315:7:315:12 | params | tst.js:316:18:316:23 | params | provenance | | +| tst.js:315:7:315:12 | params [MapValue] | tst.js:316:18:316:23 | params [MapValue] | provenance | | | tst.js:315:16:315:30 | getTaintedUrl() [searchParams, MapValue] | tst.js:315:16:315:43 | getTain ... hParams [MapValue] | provenance | | | tst.js:315:16:315:30 | getTaintedUrl() [searchParams] | tst.js:315:16:315:43 | getTain ... hParams | provenance | | -| tst.js:315:16:315:43 | getTain ... hParams | tst.js:315:7:315:43 | params | provenance | | -| tst.js:315:16:315:43 | getTain ... hParams [MapValue] | tst.js:315:7:315:43 | params [MapValue] | provenance | | +| tst.js:315:16:315:43 | getTain ... hParams | tst.js:315:7:315:12 | params | provenance | | +| tst.js:315:16:315:43 | getTain ... hParams [MapValue] | tst.js:315:7:315:12 | params [MapValue] | provenance | | | tst.js:316:18:316:23 | params | tst.js:316:18:316:35 | params.get('name') | provenance | Config | | tst.js:316:18:316:23 | params [MapValue] | tst.js:316:18:316:35 | params.get('name') | provenance | | | tst.js:325:12:325:37 | new URL ... cation) [hash] | tst.js:327:5:327:12 | getUrl() [hash] | provenance | | | tst.js:325:20:325:36 | document.location | tst.js:325:12:325:37 | new URL ... cation) [hash] | provenance | | | tst.js:327:5:327:12 | getUrl() [hash] | tst.js:327:5:327:17 | getUrl().hash | provenance | | | tst.js:327:5:327:17 | getUrl().hash | tst.js:327:5:327:30 | getUrl( ... ring(1) | provenance | Config | -| tst.js:332:7:332:39 | target | tst.js:333:12:333:17 | target | provenance | | -| tst.js:332:16:332:39 | documen ... .search | tst.js:332:7:332:39 | target | provenance | | -| tst.js:339:10:339:42 | target | tst.js:340:16:340:21 | target | provenance | | -| tst.js:339:10:339:42 | target | tst.js:341:20:341:25 | target | provenance | | -| tst.js:339:19:339:42 | documen ... .search | tst.js:339:10:339:42 | target | provenance | | +| tst.js:332:7:332:12 | target | tst.js:333:12:333:17 | target | provenance | | +| tst.js:332:16:332:39 | documen ... .search | tst.js:332:7:332:12 | target | provenance | | +| tst.js:339:10:339:15 | target | tst.js:340:16:340:21 | target | provenance | | +| tst.js:339:10:339:15 | target | tst.js:341:20:341:25 | target | provenance | | +| tst.js:339:19:339:42 | documen ... .search | tst.js:339:10:339:15 | target | provenance | | | tst.js:340:16:340:21 | target | tst.js:341:20:341:25 | target | provenance | | | tst.js:341:20:341:25 | target | tst.js:344:21:344:26 | target | provenance | | | tst.js:341:20:341:25 | target | tst.js:347:18:347:23 | target | provenance | | -| tst.js:355:7:355:39 | target | tst.js:357:18:357:23 | target | provenance | | -| tst.js:355:16:355:39 | documen ... .search | tst.js:355:7:355:39 | target | provenance | | -| tst.js:364:7:364:39 | target | tst.js:367:18:367:23 | target | provenance | | -| tst.js:364:7:364:39 | target | tst.js:369:18:369:23 | target | provenance | | -| tst.js:364:7:364:39 | target | tst.js:380:18:380:23 | target | provenance | | -| tst.js:364:7:364:39 | target | tst.js:389:18:389:23 | target | provenance | | -| tst.js:364:7:364:39 | target | tst.js:391:19:391:24 | target | provenance | | -| tst.js:364:16:364:39 | documen ... .search | tst.js:364:7:364:39 | target | provenance | | +| tst.js:355:7:355:12 | target | tst.js:357:18:357:23 | target | provenance | | +| tst.js:355:16:355:39 | documen ... .search | tst.js:355:7:355:12 | target | provenance | | +| tst.js:364:7:364:12 | target | tst.js:367:18:367:23 | target | provenance | | +| tst.js:364:7:364:12 | target | tst.js:369:18:369:23 | target | provenance | | +| tst.js:364:7:364:12 | target | tst.js:380:18:380:23 | target | provenance | | +| tst.js:364:7:364:12 | target | tst.js:389:18:389:23 | target | provenance | | +| tst.js:364:7:364:12 | target | tst.js:391:19:391:24 | target | provenance | | +| tst.js:364:16:364:39 | documen ... .search | tst.js:364:7:364:12 | target | provenance | | | tst.js:369:18:369:23 | target | tst.js:369:18:369:29 | target.taint | provenance | | | tst.js:374:3:374:8 | [post update] target [taint3] | tst.js:375:18:375:23 | target [taint3] | provenance | | | tst.js:374:19:374:42 | documen ... .search | tst.js:374:3:374:8 | [post update] target [taint3] | provenance | | @@ -1194,65 +1194,65 @@ edges | tst.js:391:19:391:24 | target [taint8] | tst.js:391:19:391:31 | target.taint8 | provenance | | | tst.js:391:19:391:31 | target.taint8 | tst.js:391:3:391:8 | [post update] target [taint8] | provenance | | | tst.js:392:18:392:23 | target [taint8] | tst.js:392:18:392:30 | target.taint8 | provenance | | -| tst.js:399:7:399:46 | payload | tst.js:400:18:400:24 | payload | provenance | | +| tst.js:399:7:399:13 | payload | tst.js:400:18:400:24 | payload | provenance | | | tst.js:399:17:399:36 | window.location.hash | tst.js:399:17:399:46 | window. ... bstr(1) | provenance | | | tst.js:399:17:399:36 | window.location.hash | tst.js:399:17:399:46 | window. ... bstr(1) | provenance | Config | -| tst.js:399:17:399:46 | window. ... bstr(1) | tst.js:399:7:399:46 | payload | provenance | | -| tst.js:402:7:402:55 | match | tst.js:404:20:404:24 | match | provenance | | +| tst.js:399:17:399:46 | window. ... bstr(1) | tst.js:399:7:399:13 | payload | provenance | | +| tst.js:402:7:402:11 | match | tst.js:404:20:404:24 | match | provenance | | | tst.js:402:15:402:34 | window.location.hash | tst.js:402:15:402:55 | window. ... (\\w+)/) | provenance | | -| tst.js:402:15:402:55 | window. ... (\\w+)/) | tst.js:402:7:402:55 | match | provenance | | +| tst.js:402:15:402:55 | window. ... (\\w+)/) | tst.js:402:7:402:11 | match | provenance | | | tst.js:404:20:404:24 | match | tst.js:404:20:404:27 | match[1] | provenance | | | tst.js:407:18:407:37 | window.location.hash | tst.js:407:18:407:48 | window. ... it('#') [1] | provenance | Config | | tst.js:407:18:407:48 | window. ... it('#') [1] | tst.js:407:18:407:51 | window. ... '#')[1] | provenance | | -| tst.js:411:7:411:39 | target | tst.js:413:18:413:23 | target | provenance | | -| tst.js:411:16:411:39 | documen ... .search | tst.js:411:7:411:39 | target | provenance | | +| tst.js:411:7:411:12 | target | tst.js:413:18:413:23 | target | provenance | | +| tst.js:411:16:411:39 | documen ... .search | tst.js:411:7:411:12 | target | provenance | | | tst.js:413:18:413:23 | target | tst.js:413:18:413:89 | target. ... data>') | provenance | | -| tst.js:419:6:419:38 | source | tst.js:423:28:423:33 | source | provenance | | -| tst.js:419:6:419:38 | source | tst.js:424:33:424:38 | source | provenance | | -| tst.js:419:6:419:38 | source | tst.js:425:34:425:39 | source | provenance | | -| tst.js:419:6:419:38 | source | tst.js:426:41:426:46 | source | provenance | | -| tst.js:419:6:419:38 | source | tst.js:427:44:427:49 | source | provenance | | -| tst.js:419:6:419:38 | source | tst.js:428:32:428:37 | source | provenance | | -| tst.js:419:15:419:38 | documen ... .search | tst.js:419:6:419:38 | source | provenance | | -| tst.js:436:7:436:39 | source | tst.js:438:18:438:23 | source | provenance | | -| tst.js:436:7:436:39 | source | tst.js:439:36:439:41 | source | provenance | | -| tst.js:436:16:436:39 | documen ... .search | tst.js:436:7:436:39 | source | provenance | | +| tst.js:419:6:419:11 | source | tst.js:423:28:423:33 | source | provenance | | +| tst.js:419:6:419:11 | source | tst.js:424:33:424:38 | source | provenance | | +| tst.js:419:6:419:11 | source | tst.js:425:34:425:39 | source | provenance | | +| tst.js:419:6:419:11 | source | tst.js:426:41:426:46 | source | provenance | | +| tst.js:419:6:419:11 | source | tst.js:427:44:427:49 | source | provenance | | +| tst.js:419:6:419:11 | source | tst.js:428:32:428:37 | source | provenance | | +| tst.js:419:15:419:38 | documen ... .search | tst.js:419:6:419:11 | source | provenance | | +| tst.js:436:7:436:12 | source | tst.js:438:18:438:23 | source | provenance | | +| tst.js:436:7:436:12 | source | tst.js:439:36:439:41 | source | provenance | | +| tst.js:436:16:436:39 | documen ... .search | tst.js:436:7:436:12 | source | provenance | | | tst.js:439:36:439:41 | source | tst.js:439:18:439:42 | ansiToH ... source) | provenance | | -| tst.js:443:6:443:38 | source | tst.js:446:21:446:26 | source | provenance | | -| tst.js:443:6:443:38 | source | tst.js:448:19:448:24 | source | provenance | | -| tst.js:443:6:443:38 | source | tst.js:450:20:450:25 | source | provenance | | -| tst.js:443:15:443:38 | documen ... .search | tst.js:443:6:443:38 | source | provenance | | -| tst.js:454:7:454:46 | url | tst.js:456:19:456:21 | url | provenance | | -| tst.js:454:7:454:46 | url | tst.js:457:26:457:28 | url | provenance | | -| tst.js:454:7:454:46 | url | tst.js:458:25:458:27 | url | provenance | | -| tst.js:454:7:454:46 | url | tst.js:459:20:459:22 | url | provenance | | -| tst.js:454:7:454:46 | url | tst.js:469:22:469:24 | url | provenance | | +| tst.js:443:6:443:11 | source | tst.js:446:21:446:26 | source | provenance | | +| tst.js:443:6:443:11 | source | tst.js:448:19:448:24 | source | provenance | | +| tst.js:443:6:443:11 | source | tst.js:450:20:450:25 | source | provenance | | +| tst.js:443:15:443:38 | documen ... .search | tst.js:443:6:443:11 | source | provenance | | +| tst.js:454:7:454:9 | url | tst.js:456:19:456:21 | url | provenance | | +| tst.js:454:7:454:9 | url | tst.js:457:26:457:28 | url | provenance | | +| tst.js:454:7:454:9 | url | tst.js:458:25:458:27 | url | provenance | | +| tst.js:454:7:454:9 | url | tst.js:459:20:459:22 | url | provenance | | +| tst.js:454:7:454:9 | url | tst.js:469:22:469:24 | url | provenance | | | tst.js:454:13:454:36 | documen ... .search | tst.js:454:13:454:46 | documen ... bstr(1) | provenance | Config | -| tst.js:454:13:454:46 | documen ... bstr(1) | tst.js:454:7:454:46 | url | provenance | | +| tst.js:454:13:454:46 | documen ... bstr(1) | tst.js:454:7:454:9 | url | provenance | | | tst.js:474:23:474:35 | location.hash | tst.js:474:23:474:45 | locatio ... bstr(1) | provenance | Config | | tst.js:477:18:477:30 | location.hash | tst.js:477:18:477:40 | locatio ... bstr(1) | provenance | Config | | tst.js:484:43:484:62 | window.location.hash | tst.js:484:33:484:63 | decodeU ... n.hash) | provenance | | -| tst.js:491:7:491:39 | target | tst.js:492:18:492:23 | target | provenance | | -| tst.js:491:16:491:39 | documen ... .search | tst.js:491:7:491:39 | target | provenance | | +| tst.js:491:7:491:12 | target | tst.js:492:18:492:23 | target | provenance | | +| tst.js:491:16:491:39 | documen ... .search | tst.js:491:7:491:12 | target | provenance | | | tst.js:492:18:492:23 | target | tst.js:492:18:492:54 | target. ... "), '') | provenance | | -| tst.js:498:7:498:26 | source | tst.js:499:27:499:32 | source | provenance | | -| tst.js:498:16:498:26 | window.name | tst.js:498:7:498:26 | source | provenance | | +| tst.js:498:7:498:12 | source | tst.js:499:27:499:32 | source | provenance | | +| tst.js:498:16:498:26 | window.name | tst.js:498:7:498:12 | source | provenance | | | tst.js:499:27:499:32 | source | tst.js:499:18:499:33 | unescape(source) | provenance | | | typeahead.js:9:28:9:30 | loc | typeahead.js:10:16:10:18 | loc | provenance | | -| typeahead.js:20:13:20:45 | target | typeahead.js:21:12:21:17 | target | provenance | | -| typeahead.js:20:22:20:45 | documen ... .search | typeahead.js:20:13:20:45 | target | provenance | | +| typeahead.js:20:13:20:18 | target | typeahead.js:21:12:21:17 | target | provenance | | +| typeahead.js:20:22:20:45 | documen ... .search | typeahead.js:20:13:20:18 | target | provenance | | | typeahead.js:21:12:21:17 | target | typeahead.js:24:30:24:32 | val | provenance | | | typeahead.js:24:30:24:32 | val | typeahead.js:25:18:25:20 | val | provenance | | | v-html.vue:6:42:6:58 | document.location | v-html.vue:2:8:2:23 | v-html=tainted | provenance | | -| various-concat-obfuscations.js:2:6:2:39 | tainted | various-concat-obfuscations.js:4:14:4:20 | tainted | provenance | | -| various-concat-obfuscations.js:2:6:2:39 | tainted | various-concat-obfuscations.js:5:12:5:18 | tainted | provenance | | -| various-concat-obfuscations.js:2:6:2:39 | tainted | various-concat-obfuscations.js:6:19:6:25 | tainted | provenance | | -| various-concat-obfuscations.js:2:6:2:39 | tainted | various-concat-obfuscations.js:7:14:7:20 | tainted | provenance | | -| various-concat-obfuscations.js:2:6:2:39 | tainted | various-concat-obfuscations.js:9:19:9:25 | tainted | provenance | | -| various-concat-obfuscations.js:2:6:2:39 | tainted | various-concat-obfuscations.js:10:16:10:22 | tainted | provenance | | -| various-concat-obfuscations.js:2:6:2:39 | tainted | various-concat-obfuscations.js:11:24:11:30 | tainted | provenance | | -| various-concat-obfuscations.js:2:6:2:39 | tainted | various-concat-obfuscations.js:12:19:12:25 | tainted | provenance | | -| various-concat-obfuscations.js:2:16:2:39 | documen ... .search | various-concat-obfuscations.js:2:6:2:39 | tainted | provenance | | +| various-concat-obfuscations.js:2:6:2:12 | tainted | various-concat-obfuscations.js:4:14:4:20 | tainted | provenance | | +| various-concat-obfuscations.js:2:6:2:12 | tainted | various-concat-obfuscations.js:5:12:5:18 | tainted | provenance | | +| various-concat-obfuscations.js:2:6:2:12 | tainted | various-concat-obfuscations.js:6:19:6:25 | tainted | provenance | | +| various-concat-obfuscations.js:2:6:2:12 | tainted | various-concat-obfuscations.js:7:14:7:20 | tainted | provenance | | +| various-concat-obfuscations.js:2:6:2:12 | tainted | various-concat-obfuscations.js:9:19:9:25 | tainted | provenance | | +| various-concat-obfuscations.js:2:6:2:12 | tainted | various-concat-obfuscations.js:10:16:10:22 | tainted | provenance | | +| various-concat-obfuscations.js:2:6:2:12 | tainted | various-concat-obfuscations.js:11:24:11:30 | tainted | provenance | | +| various-concat-obfuscations.js:2:6:2:12 | tainted | various-concat-obfuscations.js:12:19:12:25 | tainted | provenance | | +| various-concat-obfuscations.js:2:16:2:39 | documen ... .search | various-concat-obfuscations.js:2:6:2:12 | tainted | provenance | | | various-concat-obfuscations.js:4:14:4:20 | tainted | various-concat-obfuscations.js:4:4:4:31 | "
    " ...
    " | provenance | Config | | various-concat-obfuscations.js:5:12:5:18 | tainted | various-concat-obfuscations.js:5:4:5:26 | `
    $ ...
    ` | provenance | Config | | various-concat-obfuscations.js:6:4:6:26 | "
    " ... ainted) | various-concat-obfuscations.js:6:4:6:43 | "
    " ... /div>") | provenance | | @@ -1282,20 +1282,20 @@ edges | various-concat-obfuscations.js:21:17:21:40 | documen ... .search | various-concat-obfuscations.js:21:17:21:46 | documen ... h.attrs | provenance | | | various-concat-obfuscations.js:21:17:21:46 | documen ... h.attrs | various-concat-obfuscations.js:17:24:17:28 | attrs | provenance | | | various-concat-obfuscations.js:21:17:21:46 | documen ... h.attrs | various-concat-obfuscations.js:21:4:21:47 | indirec ... .attrs) | provenance | Config | -| winjs.js:2:7:2:53 | tainted | winjs.js:3:43:3:49 | tainted | provenance | | -| winjs.js:2:7:2:53 | tainted | winjs.js:4:43:4:49 | tainted | provenance | | +| winjs.js:2:7:2:13 | tainted | winjs.js:3:43:3:49 | tainted | provenance | | +| winjs.js:2:7:2:13 | tainted | winjs.js:4:43:4:49 | tainted | provenance | | | winjs.js:2:17:2:40 | documen ... .search | winjs.js:2:17:2:53 | documen ... ring(1) | provenance | | | winjs.js:2:17:2:40 | documen ... .search | winjs.js:2:17:2:53 | documen ... ring(1) | provenance | Config | -| winjs.js:2:17:2:53 | documen ... ring(1) | winjs.js:2:7:2:53 | tainted | provenance | | -| xmlRequest.js:8:13:8:47 | json | xmlRequest.js:9:28:9:31 | json | provenance | | -| xmlRequest.js:8:20:8:47 | JSON.pa ... seText) | xmlRequest.js:8:13:8:47 | json | provenance | | +| winjs.js:2:17:2:53 | documen ... ring(1) | winjs.js:2:7:2:13 | tainted | provenance | | +| xmlRequest.js:8:13:8:16 | json | xmlRequest.js:9:28:9:31 | json | provenance | | +| xmlRequest.js:8:20:8:47 | JSON.pa ... seText) | xmlRequest.js:8:13:8:16 | json | provenance | | | xmlRequest.js:8:31:8:46 | xhr.responseText | xmlRequest.js:8:20:8:47 | JSON.pa ... seText) | provenance | | | xmlRequest.js:9:28:9:31 | json | xmlRequest.js:9:28:9:39 | json.message | provenance | | -| xmlRequest.js:20:11:20:48 | resp | xmlRequest.js:21:29:21:32 | resp | provenance | | -| xmlRequest.js:20:18:20:48 | await g ... rl }}") | xmlRequest.js:20:11:20:48 | resp | provenance | | +| xmlRequest.js:20:11:20:14 | resp | xmlRequest.js:21:29:21:32 | resp | provenance | | +| xmlRequest.js:20:18:20:48 | await g ... rl }}") | xmlRequest.js:20:11:20:14 | resp | provenance | | | xmlRequest.js:20:24:20:48 | got.get ... rl }}") | xmlRequest.js:20:18:20:48 | await g ... rl }}") | provenance | | -| xmlRequest.js:21:11:21:38 | json | xmlRequest.js:22:24:22:27 | json | provenance | | -| xmlRequest.js:21:18:21:38 | JSON.pa ... p.body) | xmlRequest.js:21:11:21:38 | json | provenance | | +| xmlRequest.js:21:11:21:14 | json | xmlRequest.js:22:24:22:27 | json | provenance | | +| xmlRequest.js:21:18:21:38 | JSON.pa ... p.body) | xmlRequest.js:21:11:21:14 | json | provenance | | | xmlRequest.js:21:29:21:32 | resp | xmlRequest.js:21:18:21:38 | JSON.pa ... p.body) | provenance | | | xmlRequest.js:22:24:22:27 | json | xmlRequest.js:22:24:22:35 | json.message | provenance | | subpaths diff --git a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXssWithResponseThreat/Xss.expected b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXssWithResponseThreat/Xss.expected index afc30e246085..99cafddc41d2 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXssWithResponseThreat/Xss.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXssWithResponseThreat/Xss.expected @@ -20,18 +20,18 @@ | testUseQueries.vue:25:10:25:23 | v-html=data2 | testUseQueries.vue:11:36:11:49 | fetch("${id}") | testUseQueries.vue:25:10:25:23 | v-html=data2 | Cross-site scripting vulnerability due to $@. | testUseQueries.vue:11:36:11:49 | fetch("${id}") | user-provided value | edges | interceptors.js:7:6:7:13 | response | interceptors.js:8:35:8:42 | response | provenance | | -| interceptors.js:8:15:8:47 | userGeneratedHtml | interceptors.js:9:56:9:72 | userGeneratedHtml | provenance | | -| interceptors.js:8:35:8:42 | response | interceptors.js:8:15:8:47 | userGeneratedHtml | provenance | | -| test.jsx:5:11:5:63 | response | test.jsx:6:24:6:31 | response | provenance | | -| test.jsx:5:22:5:63 | await f ... ntent") | test.jsx:5:11:5:63 | response | provenance | | +| interceptors.js:8:15:8:31 | userGeneratedHtml | interceptors.js:9:56:9:72 | userGeneratedHtml | provenance | | +| interceptors.js:8:35:8:42 | response | interceptors.js:8:15:8:31 | userGeneratedHtml | provenance | | +| test.jsx:5:11:5:18 | response | test.jsx:6:24:6:31 | response | provenance | | +| test.jsx:5:22:5:63 | await f ... ntent") | test.jsx:5:11:5:18 | response | provenance | | | test.jsx:5:28:5:63 | fetch(" ... ntent") | test.jsx:5:22:5:63 | await f ... ntent") | provenance | | -| test.jsx:6:11:6:38 | data | test.jsx:7:12:7:15 | data | provenance | | -| test.jsx:6:18:6:38 | await r ... .json() | test.jsx:6:11:6:38 | data | provenance | | +| test.jsx:6:11:6:14 | data | test.jsx:7:12:7:15 | data | provenance | | +| test.jsx:6:18:6:38 | await r ... .json() | test.jsx:6:11:6:14 | data | provenance | | | test.jsx:6:24:6:31 | response | test.jsx:6:24:6:38 | response.json() | provenance | | | test.jsx:6:24:6:38 | response.json() | test.jsx:6:18:6:38 | await r ... .json() | provenance | | | test.jsx:7:12:7:15 | data | test.jsx:15:13:15:16 | data | provenance | | -| test.jsx:15:11:17:5 | data | test.jsx:27:29:27:32 | data | provenance | | -| test.jsx:15:13:15:16 | data | test.jsx:15:11:17:5 | data | provenance | | +| test.jsx:15:13:15:16 | data | test.jsx:15:13:15:16 | data | provenance | | +| test.jsx:15:13:15:16 | data | test.jsx:27:29:27:32 | data | provenance | | | test.ts:8:9:8:79 | this.#h ... query') | test.ts:20:28:20:35 | response | provenance | | | test.ts:20:28:20:35 | response | test.ts:21:57:21:64 | response | provenance | | | test.ts:20:28:20:35 | response | test.ts:24:43:24:50 | response | provenance | | @@ -41,78 +41,78 @@ edges | test.ts:24:43:24:55 | response.name | test.ts:24:36:24:90 | `

    ${ ... o}

    ` | provenance | | | test.ts:24:67:24:74 | response | test.ts:24:67:24:84 | response.owner.bio | provenance | | | test.ts:24:67:24:84 | response.owner.bio | test.ts:24:36:24:90 | `

    ${ ... o}

    ` | provenance | | -| test.vue:7:11:13:6 | data | test.vue:15:21:15:24 | data | provenance | | -| test.vue:7:45:7:48 | data | test.vue:7:11:13:6 | data | provenance | | -| test.vue:10:15:10:84 | response | test.vue:11:16:11:23 | response | provenance | | -| test.vue:10:26:10:84 | await f ... sts/1") | test.vue:10:15:10:84 | response | provenance | | +| test.vue:7:45:7:48 | data | test.vue:7:45:7:48 | data | provenance | | +| test.vue:7:45:7:48 | data | test.vue:15:21:15:24 | data | provenance | | +| test.vue:10:15:10:22 | response | test.vue:11:16:11:23 | response | provenance | | +| test.vue:10:26:10:84 | await f ... sts/1") | test.vue:10:15:10:22 | response | provenance | | | test.vue:10:32:10:84 | fetch(" ... sts/1") | test.vue:10:26:10:84 | await f ... sts/1") | provenance | | | test.vue:11:16:11:23 | response | test.vue:11:16:11:30 | response.json() | provenance | | | test.vue:11:16:11:30 | response.json() | test.vue:7:45:7:48 | data | provenance | | | test.vue:15:21:15:24 | data | test.vue:22:10:22:22 | v-html=data | provenance | | -| testReactRelay.tsx:5:9:5:52 | commentData | testReactRelay.tsx:7:43:7:53 | commentData | provenance | | -| testReactRelay.tsx:5:23:5:52 | useFrag ... entRef) | testReactRelay.tsx:5:9:5:52 | commentData | provenance | | +| testReactRelay.tsx:5:9:5:19 | commentData | testReactRelay.tsx:7:43:7:53 | commentData | provenance | | +| testReactRelay.tsx:5:23:5:52 | useFrag ... entRef) | testReactRelay.tsx:5:9:5:19 | commentData | provenance | | | testReactRelay.tsx:7:43:7:53 | commentData | testReactRelay.tsx:7:43:7:58 | commentData.text | provenance | | -| testReactRelay.tsx:17:9:17:42 | data | testReactRelay.tsx:18:48:18:51 | data | provenance | | -| testReactRelay.tsx:17:16:17:42 | useLazy ... ry, {}) | testReactRelay.tsx:17:9:17:42 | data | provenance | | +| testReactRelay.tsx:17:9:17:12 | data | testReactRelay.tsx:18:48:18:51 | data | provenance | | +| testReactRelay.tsx:17:16:17:42 | useLazy ... ry, {}) | testReactRelay.tsx:17:9:17:12 | data | provenance | | | testReactRelay.tsx:18:48:18:51 | data | testReactRelay.tsx:18:48:18:68 | data.co ... 0].text | provenance | | | testReactRelay.tsx:28:17:28:56 | usePrel ... erence) | testReactRelay.tsx:28:17:28:67 | usePrel ... r?.name | provenance | | -| testReactRelay.tsx:37:9:37:40 | data | testReactRelay.tsx:38:49:38:52 | data | provenance | | -| testReactRelay.tsx:37:16:37:40 | useClie ... ry, {}) | testReactRelay.tsx:37:9:37:40 | data | provenance | | -| testReactRelay.tsx:44:9:44:70 | data | testReactRelay.tsx:47:46:47:49 | data | provenance | | -| testReactRelay.tsx:44:10:44:13 | data | testReactRelay.tsx:44:9:44:70 | data | provenance | | -| testReactRelay.tsx:61:9:70:38 | data | testReactRelay.tsx:71:49:71:52 | data | provenance | | -| testReactRelay.tsx:62:5:62:8 | data | testReactRelay.tsx:61:9:70:38 | data | provenance | | -| testReactRelay.tsx:80:9:80:54 | feedbackText | testReactRelay.tsx:88:50:88:61 | feedbackText | provenance | | -| testReactRelay.tsx:80:10:80:21 | feedbackText | testReactRelay.tsx:80:9:80:54 | feedbackText | provenance | | +| testReactRelay.tsx:37:9:37:12 | data | testReactRelay.tsx:38:49:38:52 | data | provenance | | +| testReactRelay.tsx:37:16:37:40 | useClie ... ry, {}) | testReactRelay.tsx:37:9:37:12 | data | provenance | | +| testReactRelay.tsx:44:10:44:13 | data | testReactRelay.tsx:44:10:44:13 | data | provenance | | +| testReactRelay.tsx:44:10:44:13 | data | testReactRelay.tsx:47:46:47:49 | data | provenance | | +| testReactRelay.tsx:62:5:62:8 | data | testReactRelay.tsx:62:5:62:8 | data | provenance | | +| testReactRelay.tsx:62:5:62:8 | data | testReactRelay.tsx:71:49:71:52 | data | provenance | | +| testReactRelay.tsx:80:10:80:21 | feedbackText | testReactRelay.tsx:80:10:80:21 | feedbackText | provenance | | +| testReactRelay.tsx:80:10:80:21 | feedbackText | testReactRelay.tsx:88:50:88:61 | feedbackText | provenance | | | testReactRelay.tsx:83:17:83:20 | data | testReactRelay.tsx:84:23:84:26 | data | provenance | | | testReactRelay.tsx:84:23:84:26 | data | testReactRelay.tsx:80:10:80:21 | feedbackText | provenance | | -| testReactRelay.tsx:95:9:95:50 | fragmentRef | testReactRelay.tsx:113:48:113:58 | fragmentRef | provenance | | -| testReactRelay.tsx:95:10:95:20 | fragmentRef | testReactRelay.tsx:95:9:95:50 | fragmentRef | provenance | | +| testReactRelay.tsx:95:10:95:20 | fragmentRef | testReactRelay.tsx:95:10:95:20 | fragmentRef | provenance | | +| testReactRelay.tsx:95:10:95:20 | fragmentRef | testReactRelay.tsx:113:48:113:58 | fragmentRef | provenance | | | testReactRelay.tsx:100:14:100:16 | res | testReactRelay.tsx:101:22:101:24 | res | provenance | | | testReactRelay.tsx:101:22:101:24 | res | testReactRelay.tsx:95:10:95:20 | fragmentRef | provenance | | | testReactRelay.tsx:124:12:124:15 | data | testReactRelay.tsx:127:35:127:38 | data | provenance | | | testReactRelay.tsx:127:35:127:38 | data | testReactRelay.tsx:127:35:127:43 | data.user | provenance | | -| testReactRelay.tsx:136:9:136:39 | data | testReactRelay.tsx:137:50:137:53 | data | provenance | | -| testReactRelay.tsx:136:16:136:39 | readFra ... y, key) | testReactRelay.tsx:136:9:136:39 | data | provenance | | -| testReactUseQueries.jsx:4:9:4:53 | response | testReactUseQueries.jsx:5:10:5:17 | response | provenance | | -| testReactUseQueries.jsx:4:20:4:53 | await f ... e.com') | testReactUseQueries.jsx:4:9:4:53 | response | provenance | | +| testReactRelay.tsx:136:9:136:12 | data | testReactRelay.tsx:137:50:137:53 | data | provenance | | +| testReactRelay.tsx:136:16:136:39 | readFra ... y, key) | testReactRelay.tsx:136:9:136:12 | data | provenance | | +| testReactUseQueries.jsx:4:9:4:16 | response | testReactUseQueries.jsx:5:10:5:17 | response | provenance | | +| testReactUseQueries.jsx:4:20:4:53 | await f ... e.com') | testReactUseQueries.jsx:4:9:4:16 | response | provenance | | | testReactUseQueries.jsx:4:26:4:53 | fetch(' ... e.com') | testReactUseQueries.jsx:4:20:4:53 | await f ... e.com') | provenance | | | testReactUseQueries.jsx:5:10:5:17 | response | testReactUseQueries.jsx:5:10:5:24 | response.json() | provenance | | | testReactUseQueries.jsx:5:10:5:24 | response.json() | testReactUseQueries.jsx:37:25:37:38 | repoQuery.data | provenance | | -| testUseQueries2.vue:6:11:6:63 | response | testUseQueries2.vue:7:24:7:31 | response | provenance | | -| testUseQueries2.vue:6:22:6:63 | await f ... ntent") | testUseQueries2.vue:6:11:6:63 | response | provenance | | +| testUseQueries2.vue:6:11:6:18 | response | testUseQueries2.vue:7:24:7:31 | response | provenance | | +| testUseQueries2.vue:6:22:6:63 | await f ... ntent") | testUseQueries2.vue:6:11:6:18 | response | provenance | | | testUseQueries2.vue:6:28:6:63 | fetch(" ... ntent") | testUseQueries2.vue:6:22:6:63 | await f ... ntent") | provenance | | -| testUseQueries2.vue:7:11:7:38 | data | testUseQueries2.vue:8:12:8:15 | data | provenance | | -| testUseQueries2.vue:7:18:7:38 | await r ... .json() | testUseQueries2.vue:7:11:7:38 | data | provenance | | +| testUseQueries2.vue:7:11:7:14 | data | testUseQueries2.vue:8:12:8:15 | data | provenance | | +| testUseQueries2.vue:7:18:7:38 | await r ... .json() | testUseQueries2.vue:7:11:7:14 | data | provenance | | | testUseQueries2.vue:7:24:7:31 | response | testUseQueries2.vue:7:24:7:38 | response.json() | provenance | | | testUseQueries2.vue:7:24:7:38 | response.json() | testUseQueries2.vue:7:18:7:38 | await r ... .json() | provenance | | | testUseQueries2.vue:8:12:8:15 | data | testUseQueries2.vue:33:22:33:36 | results[0].data | provenance | | -| testUseQueries2.vue:12:11:12:41 | response | testUseQueries2.vue:13:12:13:19 | response | provenance | | -| testUseQueries2.vue:12:22:12:41 | await fetch("${id}") | testUseQueries2.vue:12:11:12:41 | response | provenance | | +| testUseQueries2.vue:12:11:12:18 | response | testUseQueries2.vue:13:12:13:19 | response | provenance | | +| testUseQueries2.vue:12:22:12:41 | await fetch("${id}") | testUseQueries2.vue:12:11:12:18 | response | provenance | | | testUseQueries2.vue:12:28:12:41 | fetch("${id}") | testUseQueries2.vue:12:22:12:41 | await fetch("${id}") | provenance | | | testUseQueries2.vue:13:12:13:19 | response | testUseQueries2.vue:13:12:13:26 | response.json() | provenance | | | testUseQueries2.vue:13:12:13:26 | response.json() | testUseQueries2.vue:33:22:33:36 | results[0].data | provenance | | | testUseQueries2.vue:33:22:33:36 | results[0].data | testUseQueries2.vue:40:10:40:23 | v-html=data3 | provenance | | -| testUseQueries.vue:11:19:11:49 | response | testUseQueries.vue:12:20:12:27 | response | provenance | | -| testUseQueries.vue:11:30:11:49 | await fetch("${id}") | testUseQueries.vue:11:19:11:49 | response | provenance | | +| testUseQueries.vue:11:19:11:26 | response | testUseQueries.vue:12:20:12:27 | response | provenance | | +| testUseQueries.vue:11:30:11:49 | await fetch("${id}") | testUseQueries.vue:11:19:11:26 | response | provenance | | | testUseQueries.vue:11:36:11:49 | fetch("${id}") | testUseQueries.vue:11:30:11:49 | await fetch("${id}") | provenance | | | testUseQueries.vue:12:20:12:27 | response | testUseQueries.vue:12:20:12:34 | response.json() | provenance | | | testUseQueries.vue:12:20:12:34 | response.json() | testUseQueries.vue:18:22:18:36 | results[0].data | provenance | | | testUseQueries.vue:18:22:18:36 | results[0].data | testUseQueries.vue:25:10:25:23 | v-html=data2 | provenance | | nodes | interceptors.js:7:6:7:13 | response | semmle.label | response | -| interceptors.js:8:15:8:47 | userGeneratedHtml | semmle.label | userGeneratedHtml | +| interceptors.js:8:15:8:31 | userGeneratedHtml | semmle.label | userGeneratedHtml | | interceptors.js:8:35:8:42 | response | semmle.label | response | | interceptors.js:9:56:9:72 | userGeneratedHtml | semmle.label | userGeneratedHtml | -| test.jsx:5:11:5:63 | response | semmle.label | response | +| test.jsx:5:11:5:18 | response | semmle.label | response | | test.jsx:5:22:5:63 | await f ... ntent") | semmle.label | await f ... ntent") | | test.jsx:5:28:5:63 | fetch(" ... ntent") | semmle.label | fetch(" ... ntent") | -| test.jsx:6:11:6:38 | data | semmle.label | data | +| test.jsx:6:11:6:14 | data | semmle.label | data | | test.jsx:6:18:6:38 | await r ... .json() | semmle.label | await r ... .json() | | test.jsx:6:24:6:31 | response | semmle.label | response | | test.jsx:6:24:6:38 | response.json() | semmle.label | response.json() | | test.jsx:7:12:7:15 | data | semmle.label | data | -| test.jsx:15:11:17:5 | data | semmle.label | data | +| test.jsx:15:13:15:16 | data | semmle.label | data | | test.jsx:15:13:15:16 | data | semmle.label | data | | test.jsx:27:29:27:32 | data | semmle.label | data | | test.ts:8:9:8:79 | this.#h ... query') | semmle.label | this.#h ... query') | @@ -124,40 +124,40 @@ nodes | test.ts:24:43:24:55 | response.name | semmle.label | response.name | | test.ts:24:67:24:74 | response | semmle.label | response | | test.ts:24:67:24:84 | response.owner.bio | semmle.label | response.owner.bio | -| test.vue:7:11:13:6 | data | semmle.label | data | | test.vue:7:45:7:48 | data | semmle.label | data | -| test.vue:10:15:10:84 | response | semmle.label | response | +| test.vue:7:45:7:48 | data | semmle.label | data | +| test.vue:10:15:10:22 | response | semmle.label | response | | test.vue:10:26:10:84 | await f ... sts/1") | semmle.label | await f ... sts/1") | | test.vue:10:32:10:84 | fetch(" ... sts/1") | semmle.label | fetch(" ... sts/1") | | test.vue:11:16:11:23 | response | semmle.label | response | | test.vue:11:16:11:30 | response.json() | semmle.label | response.json() | | test.vue:15:21:15:24 | data | semmle.label | data | | test.vue:22:10:22:22 | v-html=data | semmle.label | v-html=data | -| testReactRelay.tsx:5:9:5:52 | commentData | semmle.label | commentData | +| testReactRelay.tsx:5:9:5:19 | commentData | semmle.label | commentData | | testReactRelay.tsx:5:23:5:52 | useFrag ... entRef) | semmle.label | useFrag ... entRef) | | testReactRelay.tsx:7:43:7:53 | commentData | semmle.label | commentData | | testReactRelay.tsx:7:43:7:58 | commentData.text | semmle.label | commentData.text | -| testReactRelay.tsx:17:9:17:42 | data | semmle.label | data | +| testReactRelay.tsx:17:9:17:12 | data | semmle.label | data | | testReactRelay.tsx:17:16:17:42 | useLazy ... ry, {}) | semmle.label | useLazy ... ry, {}) | | testReactRelay.tsx:18:48:18:51 | data | semmle.label | data | | testReactRelay.tsx:18:48:18:68 | data.co ... 0].text | semmle.label | data.co ... 0].text | | testReactRelay.tsx:28:17:28:56 | usePrel ... erence) | semmle.label | usePrel ... erence) | | testReactRelay.tsx:28:17:28:67 | usePrel ... r?.name | semmle.label | usePrel ... r?.name | -| testReactRelay.tsx:37:9:37:40 | data | semmle.label | data | +| testReactRelay.tsx:37:9:37:12 | data | semmle.label | data | | testReactRelay.tsx:37:16:37:40 | useClie ... ry, {}) | semmle.label | useClie ... ry, {}) | | testReactRelay.tsx:38:49:38:52 | data | semmle.label | data | -| testReactRelay.tsx:44:9:44:70 | data | semmle.label | data | +| testReactRelay.tsx:44:10:44:13 | data | semmle.label | data | | testReactRelay.tsx:44:10:44:13 | data | semmle.label | data | | testReactRelay.tsx:47:46:47:49 | data | semmle.label | data | -| testReactRelay.tsx:61:9:70:38 | data | semmle.label | data | +| testReactRelay.tsx:62:5:62:8 | data | semmle.label | data | | testReactRelay.tsx:62:5:62:8 | data | semmle.label | data | | testReactRelay.tsx:71:49:71:52 | data | semmle.label | data | -| testReactRelay.tsx:80:9:80:54 | feedbackText | semmle.label | feedbackText | +| testReactRelay.tsx:80:10:80:21 | feedbackText | semmle.label | feedbackText | | testReactRelay.tsx:80:10:80:21 | feedbackText | semmle.label | feedbackText | | testReactRelay.tsx:83:17:83:20 | data | semmle.label | data | | testReactRelay.tsx:84:23:84:26 | data | semmle.label | data | | testReactRelay.tsx:88:50:88:61 | feedbackText | semmle.label | feedbackText | -| testReactRelay.tsx:95:9:95:50 | fragmentRef | semmle.label | fragmentRef | +| testReactRelay.tsx:95:10:95:20 | fragmentRef | semmle.label | fragmentRef | | testReactRelay.tsx:95:10:95:20 | fragmentRef | semmle.label | fragmentRef | | testReactRelay.tsx:100:14:100:16 | res | semmle.label | res | | testReactRelay.tsx:101:22:101:24 | res | semmle.label | res | @@ -165,31 +165,31 @@ nodes | testReactRelay.tsx:124:12:124:15 | data | semmle.label | data | | testReactRelay.tsx:127:35:127:38 | data | semmle.label | data | | testReactRelay.tsx:127:35:127:43 | data.user | semmle.label | data.user | -| testReactRelay.tsx:136:9:136:39 | data | semmle.label | data | +| testReactRelay.tsx:136:9:136:12 | data | semmle.label | data | | testReactRelay.tsx:136:16:136:39 | readFra ... y, key) | semmle.label | readFra ... y, key) | | testReactRelay.tsx:137:50:137:53 | data | semmle.label | data | -| testReactUseQueries.jsx:4:9:4:53 | response | semmle.label | response | +| testReactUseQueries.jsx:4:9:4:16 | response | semmle.label | response | | testReactUseQueries.jsx:4:20:4:53 | await f ... e.com') | semmle.label | await f ... e.com') | | testReactUseQueries.jsx:4:26:4:53 | fetch(' ... e.com') | semmle.label | fetch(' ... e.com') | | testReactUseQueries.jsx:5:10:5:17 | response | semmle.label | response | | testReactUseQueries.jsx:5:10:5:24 | response.json() | semmle.label | response.json() | | testReactUseQueries.jsx:37:25:37:38 | repoQuery.data | semmle.label | repoQuery.data | -| testUseQueries2.vue:6:11:6:63 | response | semmle.label | response | +| testUseQueries2.vue:6:11:6:18 | response | semmle.label | response | | testUseQueries2.vue:6:22:6:63 | await f ... ntent") | semmle.label | await f ... ntent") | | testUseQueries2.vue:6:28:6:63 | fetch(" ... ntent") | semmle.label | fetch(" ... ntent") | -| testUseQueries2.vue:7:11:7:38 | data | semmle.label | data | +| testUseQueries2.vue:7:11:7:14 | data | semmle.label | data | | testUseQueries2.vue:7:18:7:38 | await r ... .json() | semmle.label | await r ... .json() | | testUseQueries2.vue:7:24:7:31 | response | semmle.label | response | | testUseQueries2.vue:7:24:7:38 | response.json() | semmle.label | response.json() | | testUseQueries2.vue:8:12:8:15 | data | semmle.label | data | -| testUseQueries2.vue:12:11:12:41 | response | semmle.label | response | +| testUseQueries2.vue:12:11:12:18 | response | semmle.label | response | | testUseQueries2.vue:12:22:12:41 | await fetch("${id}") | semmle.label | await fetch("${id}") | | testUseQueries2.vue:12:28:12:41 | fetch("${id}") | semmle.label | fetch("${id}") | | testUseQueries2.vue:13:12:13:19 | response | semmle.label | response | | testUseQueries2.vue:13:12:13:26 | response.json() | semmle.label | response.json() | | testUseQueries2.vue:33:22:33:36 | results[0].data | semmle.label | results[0].data | | testUseQueries2.vue:40:10:40:23 | v-html=data3 | semmle.label | v-html=data3 | -| testUseQueries.vue:11:19:11:49 | response | semmle.label | response | +| testUseQueries.vue:11:19:11:26 | response | semmle.label | response | | testUseQueries.vue:11:30:11:49 | await fetch("${id}") | semmle.label | await fetch("${id}") | | testUseQueries.vue:11:36:11:49 | fetch("${id}") | semmle.label | fetch("${id}") | | testUseQueries.vue:12:20:12:27 | response | semmle.label | response | diff --git a/javascript/ql/test/query-tests/Security/CWE-079/ExceptionXss/ExceptionXss.expected b/javascript/ql/test/query-tests/Security/CWE-079/ExceptionXss/ExceptionXss.expected index 350f7bf5431c..595187bdf6ff 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/ExceptionXss/ExceptionXss.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/ExceptionXss/ExceptionXss.expected @@ -18,16 +18,16 @@ | exception-xss.js:175:18:175:18 | e | exception-xss.js:146:12:146:35 | documen ... .search | exception-xss.js:175:18:175:18 | e | $@ is reinterpreted as HTML without escaping meta-characters. | exception-xss.js:146:12:146:35 | documen ... .search | Exception text | | exception-xss.js:182:19:182:23 | error | exception-xss.js:180:10:180:22 | req.params.id | exception-xss.js:182:19:182:23 | error | $@ is reinterpreted as HTML without escaping meta-characters. | exception-xss.js:180:10:180:22 | req.params.id | Exception text | edges -| exception-xss.js:2:6:2:28 | foo | exception-xss.js:9:11:9:13 | foo | provenance | | -| exception-xss.js:2:6:2:28 | foo | exception-xss.js:15:9:15:11 | foo | provenance | | -| exception-xss.js:2:6:2:28 | foo | exception-xss.js:21:11:21:13 | foo | provenance | | -| exception-xss.js:2:6:2:28 | foo | exception-xss.js:33:19:33:21 | foo | provenance | | -| exception-xss.js:2:6:2:28 | foo | exception-xss.js:46:16:46:18 | foo | provenance | | -| exception-xss.js:2:6:2:28 | foo | exception-xss.js:81:16:81:18 | foo | provenance | | -| exception-xss.js:2:6:2:28 | foo | exception-xss.js:89:11:89:13 | foo | provenance | | -| exception-xss.js:2:6:2:28 | foo | exception-xss.js:95:12:95:14 | foo | provenance | | -| exception-xss.js:2:6:2:28 | foo | exception-xss.js:102:12:102:14 | foo | provenance | | -| exception-xss.js:2:12:2:28 | document.location | exception-xss.js:2:6:2:28 | foo | provenance | | +| exception-xss.js:2:6:2:8 | foo | exception-xss.js:9:11:9:13 | foo | provenance | | +| exception-xss.js:2:6:2:8 | foo | exception-xss.js:15:9:15:11 | foo | provenance | | +| exception-xss.js:2:6:2:8 | foo | exception-xss.js:21:11:21:13 | foo | provenance | | +| exception-xss.js:2:6:2:8 | foo | exception-xss.js:33:19:33:21 | foo | provenance | | +| exception-xss.js:2:6:2:8 | foo | exception-xss.js:46:16:46:18 | foo | provenance | | +| exception-xss.js:2:6:2:8 | foo | exception-xss.js:81:16:81:18 | foo | provenance | | +| exception-xss.js:2:6:2:8 | foo | exception-xss.js:89:11:89:13 | foo | provenance | | +| exception-xss.js:2:6:2:8 | foo | exception-xss.js:95:12:95:14 | foo | provenance | | +| exception-xss.js:2:6:2:8 | foo | exception-xss.js:102:12:102:14 | foo | provenance | | +| exception-xss.js:2:12:2:28 | document.location | exception-xss.js:2:6:2:8 | foo | provenance | | | exception-xss.js:4:17:4:17 | x | exception-xss.js:5:11:5:11 | x | provenance | | | exception-xss.js:9:11:9:13 | foo | exception-xss.js:10:11:10:11 | e | provenance | Config | | exception-xss.js:10:11:10:11 | e | exception-xss.js:11:18:11:18 | e | provenance | | @@ -75,10 +75,10 @@ edges | exception-xss.js:129:11:129:11 | e | exception-xss.js:130:18:130:18 | e | provenance | | | exception-xss.js:136:10:136:22 | req.params.id | exception-xss.js:136:26:136:30 | error | provenance | Config | | exception-xss.js:136:26:136:30 | error | exception-xss.js:138:19:138:23 | error | provenance | | -| exception-xss.js:146:6:146:35 | foo | exception-xss.js:148:33:148:35 | foo | provenance | | -| exception-xss.js:146:6:146:35 | foo | exception-xss.js:153:8:153:10 | foo | provenance | | -| exception-xss.js:146:6:146:35 | foo | exception-xss.js:174:31:174:33 | foo | provenance | | -| exception-xss.js:146:12:146:35 | documen ... .search | exception-xss.js:146:6:146:35 | foo | provenance | | +| exception-xss.js:146:6:146:8 | foo | exception-xss.js:148:33:148:35 | foo | provenance | | +| exception-xss.js:146:6:146:8 | foo | exception-xss.js:153:8:153:10 | foo | provenance | | +| exception-xss.js:146:6:146:8 | foo | exception-xss.js:174:31:174:33 | foo | provenance | | +| exception-xss.js:146:12:146:35 | documen ... .search | exception-xss.js:146:6:146:8 | foo | provenance | | | exception-xss.js:148:2:148:46 | new Pro ... solve)) [PromiseError] | exception-xss.js:148:55:148:55 | e | provenance | | | exception-xss.js:148:33:148:35 | foo | exception-xss.js:148:2:148:46 | new Pro ... solve)) [PromiseError] | provenance | Config | | exception-xss.js:148:55:148:55 | e | exception-xss.js:149:18:149:18 | e | provenance | | @@ -95,7 +95,7 @@ edges nodes | ajv.js:11:18:11:33 | ajv.errorsText() | semmle.label | ajv.errorsText() | | ajv.js:24:18:24:26 | val.error | semmle.label | val.error | -| exception-xss.js:2:6:2:28 | foo | semmle.label | foo | +| exception-xss.js:2:6:2:8 | foo | semmle.label | foo | | exception-xss.js:2:12:2:28 | document.location | semmle.label | document.location | | exception-xss.js:4:17:4:17 | x | semmle.label | x | | exception-xss.js:5:11:5:11 | x | semmle.label | x | @@ -154,7 +154,7 @@ nodes | exception-xss.js:136:10:136:22 | req.params.id | semmle.label | req.params.id | | exception-xss.js:136:26:136:30 | error | semmle.label | error | | exception-xss.js:138:19:138:23 | error | semmle.label | error | -| exception-xss.js:146:6:146:35 | foo | semmle.label | foo | +| exception-xss.js:146:6:146:8 | foo | semmle.label | foo | | exception-xss.js:146:12:146:35 | documen ... .search | semmle.label | documen ... .search | | exception-xss.js:148:2:148:46 | new Pro ... solve)) [PromiseError] | semmle.label | new Pro ... solve)) [PromiseError] | | exception-xss.js:148:33:148:35 | foo | semmle.label | foo | diff --git a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected index c1e626a688a9..e536364f805d 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected @@ -78,8 +78,8 @@ edges | ReflectedXss.js:7:33:7:45 | req.params.id | ReflectedXss.js:7:14:7:45 | "Unknow ... rams.id | provenance | | | ReflectedXss.js:16:31:16:39 | params.id | ReflectedXss.js:16:12:16:39 | "Unknow ... rams.id | provenance | | | ReflectedXss.js:22:19:22:26 | req.body | ReflectedXss.js:22:12:22:27 | marked(req.body) | provenance | | -| ReflectedXss.js:29:7:32:4 | mytable | ReflectedXss.js:33:12:33:18 | mytable | provenance | | -| ReflectedXss.js:29:17:32:4 | table([ ... ce\\n ]) | ReflectedXss.js:29:7:32:4 | mytable | provenance | | +| ReflectedXss.js:29:7:29:13 | mytable | ReflectedXss.js:33:12:33:18 | mytable | provenance | | +| ReflectedXss.js:29:17:32:4 | table([ ... ce\\n ]) | ReflectedXss.js:29:7:29:13 | mytable | provenance | | | ReflectedXss.js:29:23:32:3 | [\\n [ ... rce\\n ] [1, 1] | ReflectedXss.js:29:17:32:4 | table([ ... ce\\n ]) | provenance | | | ReflectedXss.js:31:5:31:22 | ['body', req.body] [1] | ReflectedXss.js:29:23:32:3 | [\\n [ ... rce\\n ] [1, 1] | provenance | | | ReflectedXss.js:31:14:31:21 | req.body | ReflectedXss.js:31:5:31:22 | ['body', req.body] [1] | provenance | | @@ -97,23 +97,23 @@ edges | ReflectedXss.js:97:30:97:37 | req.body | ReflectedXss.js:97:12:97:38 | markdow ... q.body) | provenance | | | ReflectedXss.js:99:31:99:38 | req.body | ReflectedXss.js:99:12:99:39 | markdow ... q.body) | provenance | | | ReflectedXss.js:102:76:102:83 | req.body | ReflectedXss.js:102:12:102:84 | markdow ... q.body) | provenance | | -| ReflectedXss.js:113:11:113:41 | queryKeys | ReflectedXss.js:115:18:115:26 | queryKeys | provenance | | -| ReflectedXss.js:113:13:113:27 | keys: queryKeys | ReflectedXss.js:113:11:113:41 | queryKeys | provenance | | -| ReflectedXss.js:115:11:115:45 | keys | ReflectedXss.js:117:50:117:53 | keys | provenance | | -| ReflectedXss.js:115:11:115:45 | keys | ReflectedXss.js:117:58:117:61 | keys | provenance | | -| ReflectedXss.js:115:18:115:26 | queryKeys | ReflectedXss.js:115:11:115:45 | keys | provenance | | -| ReflectedXss.js:115:31:115:45 | paramKeys?.keys | ReflectedXss.js:115:11:115:45 | keys | provenance | | -| ReflectedXss.js:117:11:117:61 | keyArray | ReflectedXss.js:118:25:118:32 | keyArray | provenance | | -| ReflectedXss.js:117:11:117:61 | keyArray [0] | ReflectedXss.js:118:25:118:32 | keyArray [0] | provenance | | -| ReflectedXss.js:117:49:117:54 | [keys] [0] | ReflectedXss.js:117:11:117:61 | keyArray [0] | provenance | | +| ReflectedXss.js:113:13:113:27 | keys: queryKeys | ReflectedXss.js:113:19:113:27 | queryKeys | provenance | | +| ReflectedXss.js:113:19:113:27 | queryKeys | ReflectedXss.js:115:18:115:26 | queryKeys | provenance | | +| ReflectedXss.js:115:11:115:14 | keys | ReflectedXss.js:117:50:117:53 | keys | provenance | | +| ReflectedXss.js:115:11:115:14 | keys | ReflectedXss.js:117:58:117:61 | keys | provenance | | +| ReflectedXss.js:115:18:115:26 | queryKeys | ReflectedXss.js:115:11:115:14 | keys | provenance | | +| ReflectedXss.js:115:31:115:45 | paramKeys?.keys | ReflectedXss.js:115:11:115:14 | keys | provenance | | +| ReflectedXss.js:117:11:117:18 | keyArray | ReflectedXss.js:118:25:118:32 | keyArray | provenance | | +| ReflectedXss.js:117:11:117:18 | keyArray [0] | ReflectedXss.js:118:25:118:32 | keyArray [0] | provenance | | +| ReflectedXss.js:117:49:117:54 | [keys] [0] | ReflectedXss.js:117:11:117:18 | keyArray [0] | provenance | | | ReflectedXss.js:117:50:117:53 | keys | ReflectedXss.js:117:49:117:54 | [keys] [0] | provenance | | -| ReflectedXss.js:117:58:117:61 | keys | ReflectedXss.js:117:11:117:61 | keyArray | provenance | | -| ReflectedXss.js:118:11:118:72 | invalidKeys | ReflectedXss.js:121:33:121:43 | invalidKeys | provenance | | -| ReflectedXss.js:118:11:118:72 | invalidKeys [0] | ReflectedXss.js:121:33:121:43 | invalidKeys [0] | provenance | | +| ReflectedXss.js:117:58:117:61 | keys | ReflectedXss.js:117:11:117:18 | keyArray | provenance | | +| ReflectedXss.js:118:11:118:21 | invalidKeys | ReflectedXss.js:121:33:121:43 | invalidKeys | provenance | | +| ReflectedXss.js:118:11:118:21 | invalidKeys [0] | ReflectedXss.js:121:33:121:43 | invalidKeys [0] | provenance | | | ReflectedXss.js:118:25:118:32 | keyArray | ReflectedXss.js:118:25:118:72 | keyArra ... s(key)) | provenance | | | ReflectedXss.js:118:25:118:32 | keyArray [0] | ReflectedXss.js:118:25:118:72 | keyArra ... s(key)) [0] | provenance | | -| ReflectedXss.js:118:25:118:72 | keyArra ... s(key)) | ReflectedXss.js:118:11:118:72 | invalidKeys | provenance | | -| ReflectedXss.js:118:25:118:72 | keyArra ... s(key)) [0] | ReflectedXss.js:118:11:118:72 | invalidKeys [0] | provenance | | +| ReflectedXss.js:118:25:118:72 | keyArra ... s(key)) | ReflectedXss.js:118:11:118:21 | invalidKeys | provenance | | +| ReflectedXss.js:118:25:118:72 | keyArra ... s(key)) [0] | ReflectedXss.js:118:11:118:21 | invalidKeys [0] | provenance | | | ReflectedXss.js:121:33:121:43 | invalidKeys | ReflectedXss.js:121:33:121:54 | invalid ... n(', ') | provenance | | | ReflectedXss.js:121:33:121:43 | invalidKeys [0] | ReflectedXss.js:121:33:121:54 | invalid ... n(', ') | provenance | | | ReflectedXss.js:121:33:121:54 | invalid ... n(', ') | ReflectedXss.js:121:30:121:73 | `${inva ... telist` | provenance | | @@ -123,11 +123,11 @@ edges | ReflectedXssContentTypes.js:70:22:70:34 | req.params.id | ReflectedXssContentTypes.js:70:12:70:34 | "FOO: " ... rams.id | provenance | | | ReflectedXssGood3.js:68:22:68:26 | value | ReflectedXssGood3.js:77:16:77:20 | value | provenance | | | ReflectedXssGood3.js:68:22:68:26 | value | ReflectedXssGood3.js:105:18:105:22 | value | provenance | | -| ReflectedXssGood3.js:77:7:77:37 | parts | ReflectedXssGood3.js:108:10:108:14 | parts | provenance | | -| ReflectedXssGood3.js:77:7:77:37 | parts [0] | ReflectedXssGood3.js:108:10:108:14 | parts [0] | provenance | | -| ReflectedXssGood3.js:77:15:77:37 | [value. ... (0, i)] [0] | ReflectedXssGood3.js:77:7:77:37 | parts [0] | provenance | | +| ReflectedXssGood3.js:77:7:77:11 | parts | ReflectedXssGood3.js:108:10:108:14 | parts | provenance | | +| ReflectedXssGood3.js:77:7:77:11 | parts [0] | ReflectedXssGood3.js:108:10:108:14 | parts [0] | provenance | | +| ReflectedXssGood3.js:77:15:77:37 | [value. ... (0, i)] [0] | ReflectedXssGood3.js:77:7:77:11 | parts [0] | provenance | | | ReflectedXssGood3.js:77:16:77:20 | value | ReflectedXssGood3.js:77:16:77:36 | value.s ... g(0, i) | provenance | | -| ReflectedXssGood3.js:77:16:77:36 | value.s ... g(0, i) | ReflectedXssGood3.js:77:7:77:37 | parts | provenance | | +| ReflectedXssGood3.js:77:16:77:36 | value.s ... g(0, i) | ReflectedXssGood3.js:77:7:77:11 | parts | provenance | | | ReflectedXssGood3.js:77:16:77:36 | value.s ... g(0, i) | ReflectedXssGood3.js:77:15:77:37 | [value. ... (0, i)] [0] | provenance | | | ReflectedXssGood3.js:77:16:77:36 | value.s ... g(0, i) | ReflectedXssGood3.js:108:10:108:23 | parts.join('') | provenance | | | ReflectedXssGood3.js:105:7:105:11 | [post update] parts [ArrayElement] | ReflectedXssGood3.js:108:10:108:14 | parts [ArrayElement] | provenance | | @@ -136,34 +136,34 @@ edges | ReflectedXssGood3.js:108:10:108:14 | parts | ReflectedXssGood3.js:108:10:108:23 | parts.join('') | provenance | | | ReflectedXssGood3.js:108:10:108:14 | parts [0] | ReflectedXssGood3.js:108:10:108:23 | parts.join('') | provenance | | | ReflectedXssGood3.js:108:10:108:14 | parts [ArrayElement] | ReflectedXssGood3.js:108:10:108:23 | parts.join('') | provenance | | -| ReflectedXssGood3.js:135:9:135:27 | url | ReflectedXssGood3.js:139:24:139:26 | url | provenance | | -| ReflectedXssGood3.js:135:15:135:27 | req.params.id | ReflectedXssGood3.js:135:9:135:27 | url | provenance | | +| ReflectedXssGood3.js:135:9:135:11 | url | ReflectedXssGood3.js:139:24:139:26 | url | provenance | | +| ReflectedXssGood3.js:135:15:135:27 | req.params.id | ReflectedXssGood3.js:135:9:135:11 | url | provenance | | | ReflectedXssGood3.js:139:24:139:26 | url | ReflectedXssGood3.js:68:22:68:26 | value | provenance | | | ReflectedXssGood3.js:139:24:139:26 | url | ReflectedXssGood3.js:139:12:139:27 | escapeHtml3(url) | provenance | | -| app/api/route.ts:2:11:2:33 | body | app/api/route.ts:5:18:5:21 | body | provenance | | -| app/api/route.ts:2:11:2:33 | body | app/api/route.ts:13:18:13:21 | body | provenance | | -| app/api/route.ts:2:11:2:33 | body | app/api/route.ts:25:18:25:21 | body | provenance | | -| app/api/route.ts:2:11:2:33 | body | app/api/route.ts:29:25:29:28 | body | provenance | | -| app/api/route.ts:2:18:2:33 | await req.json() | app/api/route.ts:2:11:2:33 | body | provenance | | +| app/api/route.ts:2:11:2:14 | body | app/api/route.ts:5:18:5:21 | body | provenance | | +| app/api/route.ts:2:11:2:14 | body | app/api/route.ts:13:18:13:21 | body | provenance | | +| app/api/route.ts:2:11:2:14 | body | app/api/route.ts:25:18:25:21 | body | provenance | | +| app/api/route.ts:2:11:2:14 | body | app/api/route.ts:29:25:29:28 | body | provenance | | +| app/api/route.ts:2:18:2:33 | await req.json() | app/api/route.ts:2:11:2:14 | body | provenance | | | app/api/route.ts:2:24:2:33 | req.json() | app/api/route.ts:2:18:2:33 | await req.json() | provenance | | -| app/api/routeNextRequest.ts:4:9:4:31 | body | app/api/routeNextRequest.ts:7:20:7:23 | body | provenance | | -| app/api/routeNextRequest.ts:4:9:4:31 | body | app/api/routeNextRequest.ts:15:20:15:23 | body | provenance | | -| app/api/routeNextRequest.ts:4:9:4:31 | body | app/api/routeNextRequest.ts:27:20:27:23 | body | provenance | | -| app/api/routeNextRequest.ts:4:9:4:31 | body | app/api/routeNextRequest.ts:31:27:31:30 | body | provenance | | -| app/api/routeNextRequest.ts:4:16:4:31 | await req.json() | app/api/routeNextRequest.ts:4:9:4:31 | body | provenance | | +| app/api/routeNextRequest.ts:4:9:4:12 | body | app/api/routeNextRequest.ts:7:20:7:23 | body | provenance | | +| app/api/routeNextRequest.ts:4:9:4:12 | body | app/api/routeNextRequest.ts:15:20:15:23 | body | provenance | | +| app/api/routeNextRequest.ts:4:9:4:12 | body | app/api/routeNextRequest.ts:27:20:27:23 | body | provenance | | +| app/api/routeNextRequest.ts:4:9:4:12 | body | app/api/routeNextRequest.ts:31:27:31:30 | body | provenance | | +| app/api/routeNextRequest.ts:4:16:4:31 | await req.json() | app/api/routeNextRequest.ts:4:9:4:12 | body | provenance | | | app/api/routeNextRequest.ts:4:22:4:31 | req.json() | app/api/routeNextRequest.ts:4:16:4:31 | await req.json() | provenance | | -| etherpad.js:9:5:9:53 | response | etherpad.js:11:12:11:19 | response | provenance | | -| etherpad.js:9:16:9:30 | req.query.jsonp | etherpad.js:9:5:9:53 | response | provenance | | -| formatting.js:4:9:4:29 | evil | formatting.js:6:43:6:46 | evil | provenance | | -| formatting.js:4:9:4:29 | evil | formatting.js:7:49:7:52 | evil | provenance | | -| formatting.js:4:16:4:29 | req.query.evil | formatting.js:4:9:4:29 | evil | provenance | | +| etherpad.js:9:5:9:12 | response | etherpad.js:11:12:11:19 | response | provenance | | +| etherpad.js:9:16:9:30 | req.query.jsonp | etherpad.js:9:5:9:12 | response | provenance | | +| formatting.js:4:9:4:12 | evil | formatting.js:6:43:6:46 | evil | provenance | | +| formatting.js:4:9:4:12 | evil | formatting.js:7:49:7:52 | evil | provenance | | +| formatting.js:4:16:4:29 | req.query.evil | formatting.js:4:9:4:12 | evil | provenance | | | formatting.js:6:43:6:46 | evil | formatting.js:6:14:6:47 | util.fo ... , evil) | provenance | | | formatting.js:7:49:7:52 | evil | formatting.js:7:14:7:53 | require ... , evil) | provenance | | -| live-server.js:4:11:4:27 | tainted | live-server.js:6:28:6:34 | tainted | provenance | | -| live-server.js:4:21:4:27 | req.url | live-server.js:4:11:4:27 | tainted | provenance | | +| live-server.js:4:11:4:17 | tainted | live-server.js:6:28:6:34 | tainted | provenance | | +| live-server.js:4:21:4:27 | req.url | live-server.js:4:11:4:17 | tainted | provenance | | | live-server.js:6:28:6:34 | tainted | live-server.js:6:13:6:50 | ` ... /html>` | provenance | | -| live-server.js:10:11:10:27 | tainted | live-server.js:12:28:12:34 | tainted | provenance | | -| live-server.js:10:21:10:27 | req.url | live-server.js:10:11:10:27 | tainted | provenance | | +| live-server.js:10:11:10:17 | tainted | live-server.js:12:28:12:34 | tainted | provenance | | +| live-server.js:10:21:10:27 | req.url | live-server.js:10:11:10:17 | tainted | provenance | | | live-server.js:12:28:12:34 | tainted | live-server.js:12:13:12:50 | ` ... /html>` | provenance | | | partial.js:9:25:9:25 | x | partial.js:10:14:10:14 | x | provenance | | | partial.js:10:14:10:14 | x | partial.js:10:14:10:18 | x + y | provenance | | @@ -182,85 +182,85 @@ edges | promises.js:5:36:5:42 | [post update] resolve [resolve-value] | promises.js:5:16:5:22 | resolve [Return] [resolve-value] | provenance | | | promises.js:5:44:5:57 | req.query.data | promises.js:5:36:5:42 | [post update] resolve [resolve-value] | provenance | | | promises.js:6:11:6:11 | x | promises.js:6:25:6:25 | x | provenance | | -| response-object.js:7:11:7:25 | data | response-object.js:9:18:9:21 | data | provenance | | -| response-object.js:7:11:7:25 | data | response-object.js:10:18:10:21 | data | provenance | | -| response-object.js:7:11:7:25 | data | response-object.js:11:18:11:21 | data | provenance | | -| response-object.js:7:11:7:25 | data | response-object.js:14:18:14:21 | data | provenance | | -| response-object.js:7:11:7:25 | data | response-object.js:17:18:17:21 | data | provenance | | -| response-object.js:7:11:7:25 | data | response-object.js:23:18:23:21 | data | provenance | | -| response-object.js:7:11:7:25 | data | response-object.js:26:18:26:21 | data | provenance | | -| response-object.js:7:11:7:25 | data | response-object.js:34:18:34:21 | data | provenance | | -| response-object.js:7:11:7:25 | data | response-object.js:38:18:38:21 | data | provenance | | -| response-object.js:7:18:7:25 | req.body | response-object.js:7:11:7:25 | data | provenance | | -| tst2.js:6:7:6:30 | p | tst2.js:7:12:7:12 | p | provenance | | -| tst2.js:6:7:6:30 | r | tst2.js:8:12:8:12 | r | provenance | | -| tst2.js:6:9:6:9 | p | tst2.js:6:7:6:30 | p | provenance | | -| tst2.js:6:12:6:15 | q: r | tst2.js:6:7:6:30 | r | provenance | | -| tst2.js:14:7:14:24 | p | tst2.js:18:12:18:12 | p | provenance | | -| tst2.js:14:7:14:24 | p | tst2.js:21:14:21:14 | p | provenance | | -| tst2.js:14:9:14:9 | p | tst2.js:14:7:14:24 | p | provenance | | -| tst2.js:30:7:30:24 | p | tst2.js:33:11:33:11 | p | provenance | | -| tst2.js:30:7:30:24 | p | tst2.js:36:12:36:12 | p | provenance | | -| tst2.js:30:9:30:9 | p | tst2.js:30:7:30:24 | p | provenance | | +| response-object.js:7:11:7:14 | data | response-object.js:9:18:9:21 | data | provenance | | +| response-object.js:7:11:7:14 | data | response-object.js:10:18:10:21 | data | provenance | | +| response-object.js:7:11:7:14 | data | response-object.js:11:18:11:21 | data | provenance | | +| response-object.js:7:11:7:14 | data | response-object.js:14:18:14:21 | data | provenance | | +| response-object.js:7:11:7:14 | data | response-object.js:17:18:17:21 | data | provenance | | +| response-object.js:7:11:7:14 | data | response-object.js:23:18:23:21 | data | provenance | | +| response-object.js:7:11:7:14 | data | response-object.js:26:18:26:21 | data | provenance | | +| response-object.js:7:11:7:14 | data | response-object.js:34:18:34:21 | data | provenance | | +| response-object.js:7:11:7:14 | data | response-object.js:38:18:38:21 | data | provenance | | +| response-object.js:7:18:7:25 | req.body | response-object.js:7:11:7:14 | data | provenance | | +| tst2.js:6:9:6:9 | p | tst2.js:6:9:6:9 | p | provenance | | +| tst2.js:6:9:6:9 | p | tst2.js:7:12:7:12 | p | provenance | | +| tst2.js:6:12:6:15 | q: r | tst2.js:6:15:6:15 | r | provenance | | +| tst2.js:6:15:6:15 | r | tst2.js:8:12:8:12 | r | provenance | | +| tst2.js:14:9:14:9 | p | tst2.js:14:9:14:9 | p | provenance | | +| tst2.js:14:9:14:9 | p | tst2.js:18:12:18:12 | p | provenance | | +| tst2.js:14:9:14:9 | p | tst2.js:21:14:21:14 | p | provenance | | +| tst2.js:30:9:30:9 | p | tst2.js:30:9:30:9 | p | provenance | | +| tst2.js:30:9:30:9 | p | tst2.js:33:11:33:11 | p | provenance | | +| tst2.js:30:9:30:9 | p | tst2.js:36:12:36:12 | p | provenance | | | tst2.js:33:3:33:5 | [post update] obj [p] | tst2.js:34:21:34:23 | obj [p] | provenance | | | tst2.js:33:11:33:11 | p | tst2.js:33:3:33:5 | [post update] obj [p] | provenance | | -| tst2.js:34:7:34:24 | other [p] | tst2.js:37:12:37:16 | other [p] | provenance | | -| tst2.js:34:15:34:24 | clone(obj) [p] | tst2.js:34:7:34:24 | other [p] | provenance | | +| tst2.js:34:7:34:11 | other [p] | tst2.js:37:12:37:16 | other [p] | provenance | | +| tst2.js:34:15:34:24 | clone(obj) [p] | tst2.js:34:7:34:11 | other [p] | provenance | | | tst2.js:34:21:34:23 | obj [p] | tst2.js:34:15:34:24 | clone(obj) [p] | provenance | | | tst2.js:37:12:37:16 | other [p] | tst2.js:37:12:37:18 | other.p | provenance | | -| tst2.js:43:7:43:24 | p | tst2.js:49:36:49:36 | p | provenance | | -| tst2.js:43:9:43:9 | p | tst2.js:43:7:43:24 | p | provenance | | -| tst2.js:49:7:49:53 | unsafe | tst2.js:51:12:51:17 | unsafe | provenance | | -| tst2.js:49:16:49:53 | seriali ... true}) | tst2.js:49:7:49:53 | unsafe | provenance | | +| tst2.js:43:9:43:9 | p | tst2.js:43:9:43:9 | p | provenance | | +| tst2.js:43:9:43:9 | p | tst2.js:49:36:49:36 | p | provenance | | +| tst2.js:49:7:49:12 | unsafe | tst2.js:51:12:51:17 | unsafe | provenance | | +| tst2.js:49:16:49:53 | seriali ... true}) | tst2.js:49:7:49:12 | unsafe | provenance | | | tst2.js:49:36:49:36 | p | tst2.js:49:16:49:53 | seriali ... true}) | provenance | | -| tst2.js:57:7:57:24 | p | tst2.js:60:11:60:11 | p | provenance | | -| tst2.js:57:7:57:24 | p | tst2.js:63:12:63:12 | p | provenance | | -| tst2.js:57:9:57:9 | p | tst2.js:57:7:57:24 | p | provenance | | +| tst2.js:57:9:57:9 | p | tst2.js:57:9:57:9 | p | provenance | | +| tst2.js:57:9:57:9 | p | tst2.js:60:11:60:11 | p | provenance | | +| tst2.js:57:9:57:9 | p | tst2.js:63:12:63:12 | p | provenance | | | tst2.js:60:3:60:5 | [post update] obj [p] | tst2.js:61:22:61:24 | obj [p] | provenance | | | tst2.js:60:11:60:11 | p | tst2.js:60:3:60:5 | [post update] obj [p] | provenance | | -| tst2.js:61:7:61:25 | other [p] | tst2.js:64:12:64:16 | other [p] | provenance | | -| tst2.js:61:15:61:25 | fclone(obj) [p] | tst2.js:61:7:61:25 | other [p] | provenance | | +| tst2.js:61:7:61:11 | other [p] | tst2.js:64:12:64:16 | other [p] | provenance | | +| tst2.js:61:15:61:25 | fclone(obj) [p] | tst2.js:61:7:61:11 | other [p] | provenance | | | tst2.js:61:22:61:24 | obj [p] | tst2.js:61:15:61:25 | fclone(obj) [p] | provenance | | | tst2.js:64:12:64:16 | other [p] | tst2.js:64:12:64:18 | other.p | provenance | | -| tst2.js:69:7:69:24 | p | tst2.js:72:11:72:11 | p | provenance | | -| tst2.js:69:7:69:24 | p | tst2.js:75:12:75:12 | p | provenance | | -| tst2.js:69:9:69:9 | p | tst2.js:69:7:69:24 | p | provenance | | +| tst2.js:69:9:69:9 | p | tst2.js:69:9:69:9 | p | provenance | | +| tst2.js:69:9:69:9 | p | tst2.js:72:11:72:11 | p | provenance | | +| tst2.js:69:9:69:9 | p | tst2.js:75:12:75:12 | p | provenance | | | tst2.js:72:3:72:5 | [post update] obj [p] | tst2.js:73:40:73:42 | obj [p] | provenance | | | tst2.js:72:11:72:11 | p | tst2.js:72:3:72:5 | [post update] obj [p] | provenance | | -| tst2.js:73:7:73:44 | other [p] | tst2.js:76:12:76:16 | other [p] | provenance | | -| tst2.js:73:15:73:44 | jc.retr ... e(obj)) [p] | tst2.js:73:7:73:44 | other [p] | provenance | | +| tst2.js:73:7:73:11 | other [p] | tst2.js:76:12:76:16 | other [p] | provenance | | +| tst2.js:73:15:73:44 | jc.retr ... e(obj)) [p] | tst2.js:73:7:73:11 | other [p] | provenance | | | tst2.js:73:29:73:43 | jc.decycle(obj) [p] | tst2.js:73:15:73:44 | jc.retr ... e(obj)) [p] | provenance | | | tst2.js:73:40:73:42 | obj [p] | tst2.js:73:29:73:43 | jc.decycle(obj) [p] | provenance | | | tst2.js:76:12:76:16 | other [p] | tst2.js:76:12:76:18 | other.p | provenance | | -| tst2.js:82:7:82:24 | p | tst2.js:85:11:85:11 | p | provenance | | -| tst2.js:82:7:82:24 | p | tst2.js:88:12:88:12 | p | provenance | | -| tst2.js:82:9:82:9 | p | tst2.js:82:7:82:24 | p | provenance | | +| tst2.js:82:9:82:9 | p | tst2.js:82:9:82:9 | p | provenance | | +| tst2.js:82:9:82:9 | p | tst2.js:85:11:85:11 | p | provenance | | +| tst2.js:82:9:82:9 | p | tst2.js:88:12:88:12 | p | provenance | | | tst2.js:85:3:85:5 | [post update] obj [p] | tst2.js:86:24:86:26 | obj [p] | provenance | | | tst2.js:85:11:85:11 | p | tst2.js:85:3:85:5 | [post update] obj [p] | provenance | | -| tst2.js:86:7:86:27 | other [p] | tst2.js:89:12:89:16 | other [p] | provenance | | -| tst2.js:86:15:86:27 | sortKeys(obj) [p] | tst2.js:86:7:86:27 | other [p] | provenance | | +| tst2.js:86:7:86:11 | other [p] | tst2.js:89:12:89:16 | other [p] | provenance | | +| tst2.js:86:15:86:27 | sortKeys(obj) [p] | tst2.js:86:7:86:11 | other [p] | provenance | | | tst2.js:86:24:86:26 | obj [p] | tst2.js:86:15:86:27 | sortKeys(obj) [p] | provenance | | | tst2.js:89:12:89:16 | other [p] | tst2.js:89:12:89:18 | other.p | provenance | | -| tst2.js:93:7:93:24 | p | tst2.js:99:51:99:51 | p | provenance | | -| tst2.js:93:9:93:9 | p | tst2.js:93:7:93:24 | p | provenance | | -| tst2.js:99:7:99:69 | unsafe | tst2.js:101:12:101:17 | unsafe | provenance | | -| tst2.js:99:16:99:69 | seriali ... true}) | tst2.js:99:7:99:69 | unsafe | provenance | | +| tst2.js:93:9:93:9 | p | tst2.js:93:9:93:9 | p | provenance | | +| tst2.js:93:9:93:9 | p | tst2.js:99:51:99:51 | p | provenance | | +| tst2.js:99:7:99:12 | unsafe | tst2.js:101:12:101:17 | unsafe | provenance | | +| tst2.js:99:16:99:69 | seriali ... true}) | tst2.js:99:7:99:12 | unsafe | provenance | | | tst2.js:99:36:99:52 | {someProperty: p} [someProperty] | tst2.js:99:16:99:69 | seriali ... true}) | provenance | | | tst2.js:99:51:99:51 | p | tst2.js:99:16:99:69 | seriali ... true}) | provenance | | | tst2.js:99:51:99:51 | p | tst2.js:99:36:99:52 | {someProperty: p} [someProperty] | provenance | | -| tst2.js:105:7:105:24 | p | tst2.js:110:28:110:28 | p | provenance | | -| tst2.js:105:9:105:9 | p | tst2.js:105:7:105:24 | p | provenance | | -| tst2.js:110:7:110:29 | obj [someProperty] | tst2.js:111:36:111:38 | obj [someProperty] | provenance | | -| tst2.js:110:13:110:29 | {someProperty: p} [someProperty] | tst2.js:110:7:110:29 | obj [someProperty] | provenance | | +| tst2.js:105:9:105:9 | p | tst2.js:105:9:105:9 | p | provenance | | +| tst2.js:105:9:105:9 | p | tst2.js:110:28:110:28 | p | provenance | | +| tst2.js:110:7:110:9 | obj [someProperty] | tst2.js:111:36:111:38 | obj [someProperty] | provenance | | +| tst2.js:110:13:110:29 | {someProperty: p} [someProperty] | tst2.js:110:7:110:9 | obj [someProperty] | provenance | | | tst2.js:110:28:110:28 | p | tst2.js:110:13:110:29 | {someProperty: p} [someProperty] | provenance | | | tst2.js:110:28:110:28 | p | tst2.js:111:16:111:55 | seriali ... true}) | provenance | | -| tst2.js:111:7:111:55 | unsafe | tst2.js:113:12:113:17 | unsafe | provenance | | -| tst2.js:111:16:111:55 | seriali ... true}) | tst2.js:111:7:111:55 | unsafe | provenance | | +| tst2.js:111:7:111:12 | unsafe | tst2.js:113:12:113:17 | unsafe | provenance | | +| tst2.js:111:16:111:55 | seriali ... true}) | tst2.js:111:7:111:12 | unsafe | provenance | | | tst2.js:111:36:111:38 | obj [someProperty] | tst2.js:111:16:111:55 | seriali ... true}) | provenance | | -| tst3.js:5:7:5:24 | p | tst3.js:6:12:6:12 | p | provenance | | -| tst3.js:5:9:5:9 | p | tst3.js:5:7:5:24 | p | provenance | | -| tst3.js:11:9:11:74 | code | tst3.js:12:12:12:15 | code | provenance | | -| tst3.js:11:16:11:74 | prettie ... bel" }) | tst3.js:11:9:11:74 | code | provenance | | +| tst3.js:5:9:5:9 | p | tst3.js:5:9:5:9 | p | provenance | | +| tst3.js:5:9:5:9 | p | tst3.js:6:12:6:12 | p | provenance | | +| tst3.js:11:9:11:12 | code | tst3.js:12:12:12:15 | code | provenance | | +| tst3.js:11:16:11:74 | prettie ... bel" }) | tst3.js:11:9:11:12 | code | provenance | | | tst3.js:11:32:11:39 | reg.body | tst3.js:11:16:11:74 | prettie ... bel" }) | provenance | | nodes | ReflectedXss.js:7:14:7:45 | "Unknow ... rams.id | semmle.label | "Unknow ... rams.id | @@ -271,7 +271,7 @@ nodes | ReflectedXss.js:22:12:22:27 | marked(req.body) | semmle.label | marked(req.body) | | ReflectedXss.js:22:19:22:26 | req.body | semmle.label | req.body | | ReflectedXss.js:28:12:28:19 | req.body | semmle.label | req.body | -| ReflectedXss.js:29:7:32:4 | mytable | semmle.label | mytable | +| ReflectedXss.js:29:7:29:13 | mytable | semmle.label | mytable | | ReflectedXss.js:29:17:32:4 | table([ ... ce\\n ]) | semmle.label | table([ ... ce\\n ]) | | ReflectedXss.js:29:23:32:3 | [\\n [ ... rce\\n ] [1, 1] | semmle.label | [\\n [ ... rce\\n ] [1, 1] | | ReflectedXss.js:31:5:31:22 | ['body', req.body] [1] | semmle.label | ['body', req.body] [1] | @@ -306,18 +306,18 @@ nodes | ReflectedXss.js:102:12:102:84 | markdow ... q.body) | semmle.label | markdow ... q.body) | | ReflectedXss.js:102:76:102:83 | req.body | semmle.label | req.body | | ReflectedXss.js:109:16:109:30 | request.query.p | semmle.label | request.query.p | -| ReflectedXss.js:113:11:113:41 | queryKeys | semmle.label | queryKeys | | ReflectedXss.js:113:13:113:27 | keys: queryKeys | semmle.label | keys: queryKeys | -| ReflectedXss.js:115:11:115:45 | keys | semmle.label | keys | +| ReflectedXss.js:113:19:113:27 | queryKeys | semmle.label | queryKeys | +| ReflectedXss.js:115:11:115:14 | keys | semmle.label | keys | | ReflectedXss.js:115:18:115:26 | queryKeys | semmle.label | queryKeys | | ReflectedXss.js:115:31:115:45 | paramKeys?.keys | semmle.label | paramKeys?.keys | -| ReflectedXss.js:117:11:117:61 | keyArray | semmle.label | keyArray | -| ReflectedXss.js:117:11:117:61 | keyArray [0] | semmle.label | keyArray [0] | +| ReflectedXss.js:117:11:117:18 | keyArray | semmle.label | keyArray | +| ReflectedXss.js:117:11:117:18 | keyArray [0] | semmle.label | keyArray [0] | | ReflectedXss.js:117:49:117:54 | [keys] [0] | semmle.label | [keys] [0] | | ReflectedXss.js:117:50:117:53 | keys | semmle.label | keys | | ReflectedXss.js:117:58:117:61 | keys | semmle.label | keys | -| ReflectedXss.js:118:11:118:72 | invalidKeys | semmle.label | invalidKeys | -| ReflectedXss.js:118:11:118:72 | invalidKeys [0] | semmle.label | invalidKeys [0] | +| ReflectedXss.js:118:11:118:21 | invalidKeys | semmle.label | invalidKeys | +| ReflectedXss.js:118:11:118:21 | invalidKeys [0] | semmle.label | invalidKeys [0] | | ReflectedXss.js:118:25:118:32 | keyArray | semmle.label | keyArray | | ReflectedXss.js:118:25:118:32 | keyArray [0] | semmle.label | keyArray [0] | | ReflectedXss.js:118:25:118:72 | keyArra ... s(key)) | semmle.label | keyArra ... s(key)) | @@ -335,8 +335,8 @@ nodes | ReflectedXssContentTypes.js:70:12:70:34 | "FOO: " ... rams.id | semmle.label | "FOO: " ... rams.id | | ReflectedXssContentTypes.js:70:22:70:34 | req.params.id | semmle.label | req.params.id | | ReflectedXssGood3.js:68:22:68:26 | value | semmle.label | value | -| ReflectedXssGood3.js:77:7:77:37 | parts | semmle.label | parts | -| ReflectedXssGood3.js:77:7:77:37 | parts [0] | semmle.label | parts [0] | +| ReflectedXssGood3.js:77:7:77:11 | parts | semmle.label | parts | +| ReflectedXssGood3.js:77:7:77:11 | parts [0] | semmle.label | parts [0] | | ReflectedXssGood3.js:77:15:77:37 | [value. ... (0, i)] [0] | semmle.label | [value. ... (0, i)] [0] | | ReflectedXssGood3.js:77:16:77:20 | value | semmle.label | value | | ReflectedXssGood3.js:77:16:77:36 | value.s ... g(0, i) | semmle.label | value.s ... g(0, i) | @@ -347,38 +347,38 @@ nodes | ReflectedXssGood3.js:108:10:108:14 | parts [0] | semmle.label | parts [0] | | ReflectedXssGood3.js:108:10:108:14 | parts [ArrayElement] | semmle.label | parts [ArrayElement] | | ReflectedXssGood3.js:108:10:108:23 | parts.join('') | semmle.label | parts.join('') | -| ReflectedXssGood3.js:135:9:135:27 | url | semmle.label | url | +| ReflectedXssGood3.js:135:9:135:11 | url | semmle.label | url | | ReflectedXssGood3.js:135:15:135:27 | req.params.id | semmle.label | req.params.id | | ReflectedXssGood3.js:139:12:139:27 | escapeHtml3(url) | semmle.label | escapeHtml3(url) | | ReflectedXssGood3.js:139:24:139:26 | url | semmle.label | url | -| app/api/route.ts:2:11:2:33 | body | semmle.label | body | +| app/api/route.ts:2:11:2:14 | body | semmle.label | body | | app/api/route.ts:2:18:2:33 | await req.json() | semmle.label | await req.json() | | app/api/route.ts:2:24:2:33 | req.json() | semmle.label | req.json() | | app/api/route.ts:5:18:5:21 | body | semmle.label | body | | app/api/route.ts:13:18:13:21 | body | semmle.label | body | | app/api/route.ts:25:18:25:21 | body | semmle.label | body | | app/api/route.ts:29:25:29:28 | body | semmle.label | body | -| app/api/routeNextRequest.ts:4:9:4:31 | body | semmle.label | body | +| app/api/routeNextRequest.ts:4:9:4:12 | body | semmle.label | body | | app/api/routeNextRequest.ts:4:16:4:31 | await req.json() | semmle.label | await req.json() | | app/api/routeNextRequest.ts:4:22:4:31 | req.json() | semmle.label | req.json() | | app/api/routeNextRequest.ts:7:20:7:23 | body | semmle.label | body | | app/api/routeNextRequest.ts:15:20:15:23 | body | semmle.label | body | | app/api/routeNextRequest.ts:27:20:27:23 | body | semmle.label | body | | app/api/routeNextRequest.ts:31:27:31:30 | body | semmle.label | body | -| etherpad.js:9:5:9:53 | response | semmle.label | response | +| etherpad.js:9:5:9:12 | response | semmle.label | response | | etherpad.js:9:16:9:30 | req.query.jsonp | semmle.label | req.query.jsonp | | etherpad.js:11:12:11:19 | response | semmle.label | response | -| formatting.js:4:9:4:29 | evil | semmle.label | evil | +| formatting.js:4:9:4:12 | evil | semmle.label | evil | | formatting.js:4:16:4:29 | req.query.evil | semmle.label | req.query.evil | | formatting.js:6:14:6:47 | util.fo ... , evil) | semmle.label | util.fo ... , evil) | | formatting.js:6:43:6:46 | evil | semmle.label | evil | | formatting.js:7:14:7:53 | require ... , evil) | semmle.label | require ... , evil) | | formatting.js:7:49:7:52 | evil | semmle.label | evil | -| live-server.js:4:11:4:27 | tainted | semmle.label | tainted | +| live-server.js:4:11:4:17 | tainted | semmle.label | tainted | | live-server.js:4:21:4:27 | req.url | semmle.label | req.url | | live-server.js:6:13:6:50 | ` ... /html>` | semmle.label | ` ... /html>` | | live-server.js:6:28:6:34 | tainted | semmle.label | tainted | -| live-server.js:10:11:10:27 | tainted | semmle.label | tainted | +| live-server.js:10:11:10:17 | tainted | semmle.label | tainted | | live-server.js:10:21:10:27 | req.url | semmle.label | req.url | | live-server.js:12:13:12:50 | ` ... /html>` | semmle.label | ` ... /html>` | | live-server.js:12:28:12:34 | tainted | semmle.label | tainted | @@ -407,7 +407,7 @@ nodes | promises.js:5:44:5:57 | req.query.data | semmle.label | req.query.data | | promises.js:6:11:6:11 | x | semmle.label | x | | promises.js:6:25:6:25 | x | semmle.label | x | -| response-object.js:7:11:7:25 | data | semmle.label | data | +| response-object.js:7:11:7:14 | data | semmle.label | data | | response-object.js:7:18:7:25 | req.body | semmle.label | req.body | | response-object.js:9:18:9:21 | data | semmle.label | data | | response-object.js:10:18:10:21 | data | semmle.label | data | @@ -418,83 +418,83 @@ nodes | response-object.js:26:18:26:21 | data | semmle.label | data | | response-object.js:34:18:34:21 | data | semmle.label | data | | response-object.js:38:18:38:21 | data | semmle.label | data | -| tst2.js:6:7:6:30 | p | semmle.label | p | -| tst2.js:6:7:6:30 | r | semmle.label | r | +| tst2.js:6:9:6:9 | p | semmle.label | p | | tst2.js:6:9:6:9 | p | semmle.label | p | | tst2.js:6:12:6:15 | q: r | semmle.label | q: r | +| tst2.js:6:15:6:15 | r | semmle.label | r | | tst2.js:7:12:7:12 | p | semmle.label | p | | tst2.js:8:12:8:12 | r | semmle.label | r | -| tst2.js:14:7:14:24 | p | semmle.label | p | +| tst2.js:14:9:14:9 | p | semmle.label | p | | tst2.js:14:9:14:9 | p | semmle.label | p | | tst2.js:18:12:18:12 | p | semmle.label | p | | tst2.js:21:14:21:14 | p | semmle.label | p | -| tst2.js:30:7:30:24 | p | semmle.label | p | +| tst2.js:30:9:30:9 | p | semmle.label | p | | tst2.js:30:9:30:9 | p | semmle.label | p | | tst2.js:33:3:33:5 | [post update] obj [p] | semmle.label | [post update] obj [p] | | tst2.js:33:11:33:11 | p | semmle.label | p | -| tst2.js:34:7:34:24 | other [p] | semmle.label | other [p] | +| tst2.js:34:7:34:11 | other [p] | semmle.label | other [p] | | tst2.js:34:15:34:24 | clone(obj) [p] | semmle.label | clone(obj) [p] | | tst2.js:34:21:34:23 | obj [p] | semmle.label | obj [p] | | tst2.js:36:12:36:12 | p | semmle.label | p | | tst2.js:37:12:37:16 | other [p] | semmle.label | other [p] | | tst2.js:37:12:37:18 | other.p | semmle.label | other.p | -| tst2.js:43:7:43:24 | p | semmle.label | p | | tst2.js:43:9:43:9 | p | semmle.label | p | -| tst2.js:49:7:49:53 | unsafe | semmle.label | unsafe | +| tst2.js:43:9:43:9 | p | semmle.label | p | +| tst2.js:49:7:49:12 | unsafe | semmle.label | unsafe | | tst2.js:49:16:49:53 | seriali ... true}) | semmle.label | seriali ... true}) | | tst2.js:49:36:49:36 | p | semmle.label | p | | tst2.js:51:12:51:17 | unsafe | semmle.label | unsafe | -| tst2.js:57:7:57:24 | p | semmle.label | p | +| tst2.js:57:9:57:9 | p | semmle.label | p | | tst2.js:57:9:57:9 | p | semmle.label | p | | tst2.js:60:3:60:5 | [post update] obj [p] | semmle.label | [post update] obj [p] | | tst2.js:60:11:60:11 | p | semmle.label | p | -| tst2.js:61:7:61:25 | other [p] | semmle.label | other [p] | +| tst2.js:61:7:61:11 | other [p] | semmle.label | other [p] | | tst2.js:61:15:61:25 | fclone(obj) [p] | semmle.label | fclone(obj) [p] | | tst2.js:61:22:61:24 | obj [p] | semmle.label | obj [p] | | tst2.js:63:12:63:12 | p | semmle.label | p | | tst2.js:64:12:64:16 | other [p] | semmle.label | other [p] | | tst2.js:64:12:64:18 | other.p | semmle.label | other.p | -| tst2.js:69:7:69:24 | p | semmle.label | p | +| tst2.js:69:9:69:9 | p | semmle.label | p | | tst2.js:69:9:69:9 | p | semmle.label | p | | tst2.js:72:3:72:5 | [post update] obj [p] | semmle.label | [post update] obj [p] | | tst2.js:72:11:72:11 | p | semmle.label | p | -| tst2.js:73:7:73:44 | other [p] | semmle.label | other [p] | +| tst2.js:73:7:73:11 | other [p] | semmle.label | other [p] | | tst2.js:73:15:73:44 | jc.retr ... e(obj)) [p] | semmle.label | jc.retr ... e(obj)) [p] | | tst2.js:73:29:73:43 | jc.decycle(obj) [p] | semmle.label | jc.decycle(obj) [p] | | tst2.js:73:40:73:42 | obj [p] | semmle.label | obj [p] | | tst2.js:75:12:75:12 | p | semmle.label | p | | tst2.js:76:12:76:16 | other [p] | semmle.label | other [p] | | tst2.js:76:12:76:18 | other.p | semmle.label | other.p | -| tst2.js:82:7:82:24 | p | semmle.label | p | +| tst2.js:82:9:82:9 | p | semmle.label | p | | tst2.js:82:9:82:9 | p | semmle.label | p | | tst2.js:85:3:85:5 | [post update] obj [p] | semmle.label | [post update] obj [p] | | tst2.js:85:11:85:11 | p | semmle.label | p | -| tst2.js:86:7:86:27 | other [p] | semmle.label | other [p] | +| tst2.js:86:7:86:11 | other [p] | semmle.label | other [p] | | tst2.js:86:15:86:27 | sortKeys(obj) [p] | semmle.label | sortKeys(obj) [p] | | tst2.js:86:24:86:26 | obj [p] | semmle.label | obj [p] | | tst2.js:88:12:88:12 | p | semmle.label | p | | tst2.js:89:12:89:16 | other [p] | semmle.label | other [p] | | tst2.js:89:12:89:18 | other.p | semmle.label | other.p | -| tst2.js:93:7:93:24 | p | semmle.label | p | | tst2.js:93:9:93:9 | p | semmle.label | p | -| tst2.js:99:7:99:69 | unsafe | semmle.label | unsafe | +| tst2.js:93:9:93:9 | p | semmle.label | p | +| tst2.js:99:7:99:12 | unsafe | semmle.label | unsafe | | tst2.js:99:16:99:69 | seriali ... true}) | semmle.label | seriali ... true}) | | tst2.js:99:36:99:52 | {someProperty: p} [someProperty] | semmle.label | {someProperty: p} [someProperty] | | tst2.js:99:51:99:51 | p | semmle.label | p | | tst2.js:101:12:101:17 | unsafe | semmle.label | unsafe | -| tst2.js:105:7:105:24 | p | semmle.label | p | | tst2.js:105:9:105:9 | p | semmle.label | p | -| tst2.js:110:7:110:29 | obj [someProperty] | semmle.label | obj [someProperty] | +| tst2.js:105:9:105:9 | p | semmle.label | p | +| tst2.js:110:7:110:9 | obj [someProperty] | semmle.label | obj [someProperty] | | tst2.js:110:13:110:29 | {someProperty: p} [someProperty] | semmle.label | {someProperty: p} [someProperty] | | tst2.js:110:28:110:28 | p | semmle.label | p | -| tst2.js:111:7:111:55 | unsafe | semmle.label | unsafe | +| tst2.js:111:7:111:12 | unsafe | semmle.label | unsafe | | tst2.js:111:16:111:55 | seriali ... true}) | semmle.label | seriali ... true}) | | tst2.js:111:36:111:38 | obj [someProperty] | semmle.label | obj [someProperty] | | tst2.js:113:12:113:17 | unsafe | semmle.label | unsafe | -| tst3.js:5:7:5:24 | p | semmle.label | p | +| tst3.js:5:9:5:9 | p | semmle.label | p | | tst3.js:5:9:5:9 | p | semmle.label | p | | tst3.js:6:12:6:12 | p | semmle.label | p | -| tst3.js:11:9:11:74 | code | semmle.label | code | +| tst3.js:11:9:11:12 | code | semmle.label | code | | tst3.js:11:16:11:74 | prettie ... bel" }) | semmle.label | prettie ... bel" }) | | tst3.js:11:32:11:39 | reg.body | semmle.label | reg.body | | tst3.js:12:12:12:15 | code | semmle.label | code | diff --git a/javascript/ql/test/query-tests/Security/CWE-079/StoredXss/StoredXss.expected b/javascript/ql/test/query-tests/Security/CWE-079/StoredXss/StoredXss.expected index a2bcd0163fde..26f888fa0bab 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/StoredXss/StoredXss.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/StoredXss/StoredXss.expected @@ -22,12 +22,12 @@ edges | xss-through-filenames.js:30:34:30:37 | file | xss-through-filenames.js:31:25:31:28 | file | provenance | | | xss-through-filenames.js:31:25:31:28 | file | xss-through-filenames.js:31:13:31:18 | [post update] files2 [ArrayElement] | provenance | | | xss-through-filenames.js:33:19:33:24 | files2 [ArrayElement] | xss-through-filenames.js:35:29:35:34 | files2 [ArrayElement] | provenance | | -| xss-through-filenames.js:35:13:35:35 | files3 | xss-through-filenames.js:37:19:37:24 | files3 | provenance | | -| xss-through-filenames.js:35:22:35:35 | format(files2) | xss-through-filenames.js:35:13:35:35 | files3 | provenance | | +| xss-through-filenames.js:35:13:35:18 | files3 | xss-through-filenames.js:37:19:37:24 | files3 | provenance | | +| xss-through-filenames.js:35:22:35:35 | format(files2) | xss-through-filenames.js:35:13:35:18 | files3 | provenance | | | xss-through-filenames.js:35:29:35:34 | files2 [ArrayElement] | xss-through-filenames.js:17:21:17:26 | files2 [ArrayElement] | provenance | | | xss-through-filenames.js:35:29:35:34 | files2 [ArrayElement] | xss-through-filenames.js:35:22:35:35 | format(files2) | provenance | | -| xss-through-torrent.js:6:6:6:24 | name | xss-through-torrent.js:7:11:7:14 | name | provenance | | -| xss-through-torrent.js:6:13:6:24 | torrent.name | xss-through-torrent.js:6:6:6:24 | name | provenance | | +| xss-through-torrent.js:6:6:6:9 | name | xss-through-torrent.js:7:11:7:14 | name | provenance | | +| xss-through-torrent.js:6:13:6:24 | torrent.name | xss-through-torrent.js:6:6:6:9 | name | provenance | | nodes | xss-through-filenames.js:7:43:7:48 | files1 | semmle.label | files1 | | xss-through-filenames.js:8:18:8:23 | files1 | semmle.label | files1 | @@ -48,11 +48,11 @@ nodes | xss-through-filenames.js:31:25:31:28 | file | semmle.label | file | | xss-through-filenames.js:33:19:33:24 | files2 | semmle.label | files2 | | xss-through-filenames.js:33:19:33:24 | files2 [ArrayElement] | semmle.label | files2 [ArrayElement] | -| xss-through-filenames.js:35:13:35:35 | files3 | semmle.label | files3 | +| xss-through-filenames.js:35:13:35:18 | files3 | semmle.label | files3 | | xss-through-filenames.js:35:22:35:35 | format(files2) | semmle.label | format(files2) | | xss-through-filenames.js:35:29:35:34 | files2 [ArrayElement] | semmle.label | files2 [ArrayElement] | | xss-through-filenames.js:37:19:37:24 | files3 | semmle.label | files3 | -| xss-through-torrent.js:6:6:6:24 | name | semmle.label | name | +| xss-through-torrent.js:6:6:6:9 | name | semmle.label | name | | xss-through-torrent.js:6:13:6:24 | torrent.name | semmle.label | torrent.name | | xss-through-torrent.js:7:11:7:14 | name | semmle.label | name | subpaths diff --git a/javascript/ql/test/query-tests/Security/CWE-079/UnsafeHtmlConstruction/UnsafeHtmlConstruction.expected b/javascript/ql/test/query-tests/Security/CWE-079/UnsafeHtmlConstruction/UnsafeHtmlConstruction.expected index 4f757d1a9313..63bdfa1bcf23 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/UnsafeHtmlConstruction/UnsafeHtmlConstruction.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/UnsafeHtmlConstruction/UnsafeHtmlConstruction.expected @@ -29,11 +29,11 @@ edges | lib2/index.ts:1:28:1:28 | s | lib2/index.ts:2:27:2:27 | s | provenance | | | lib2/index.ts:6:29:6:36 | settings | lib2/index.ts:7:58:7:65 | settings | provenance | | | lib2/index.ts:6:29:6:36 | settings | lib2/index.ts:13:16:13:23 | settings | provenance | | -| lib2/index.ts:13:9:13:41 | name | lib2/index.ts:18:62:18:65 | name | provenance | | +| lib2/index.ts:13:9:13:12 | name | lib2/index.ts:18:62:18:65 | name | provenance | | | lib2/index.ts:13:16:13:23 | settings | lib2/index.ts:13:16:13:33 | settings.mySetting | provenance | Config | | lib2/index.ts:13:16:13:33 | settings.mySetting | lib2/index.ts:13:16:13:36 | setting ... ting[i] | provenance | Config | | lib2/index.ts:13:16:13:36 | setting ... ting[i] | lib2/index.ts:13:16:13:41 | setting ... i].name | provenance | Config | -| lib2/index.ts:13:16:13:41 | setting ... i].name | lib2/index.ts:13:9:13:41 | name | provenance | | +| lib2/index.ts:13:16:13:41 | setting ... i].name | lib2/index.ts:13:9:13:12 | name | provenance | | | lib2/src/MyNode.ts:1:28:1:28 | s | lib2/src/MyNode.ts:2:29:2:29 | s | provenance | | | lib/src/MyNode.ts:1:28:1:28 | s | lib/src/MyNode.ts:2:29:2:29 | s | provenance | | | main.js:1:55:1:55 | s | main.js:2:29:2:29 | s | provenance | | @@ -41,12 +41,12 @@ edges | main.js:11:60:11:60 | s | main.js:12:49:12:49 | s | provenance | | | main.js:21:47:21:47 | s | main.js:22:34:22:34 | s | provenance | | | main.js:56:28:56:34 | options | main.js:60:41:60:47 | options | provenance | | -| main.js:57:11:59:5 | defaults | main.js:60:31:60:38 | defaults | provenance | | -| main.js:57:11:59:5 | defaults | main.js:60:31:60:38 | defaults | provenance | | -| main.js:57:22:59:5 | {\\n ... "\\n } | main.js:57:11:59:5 | defaults | provenance | | -| main.js:57:22:59:5 | {\\n ... "\\n } | main.js:57:11:59:5 | defaults | provenance | | -| main.js:60:11:60:48 | settings | main.js:62:19:62:26 | settings | provenance | | -| main.js:60:22:60:48 | $.exten ... ptions) | main.js:60:11:60:48 | settings | provenance | | +| main.js:57:11:57:18 | defaults | main.js:60:31:60:38 | defaults | provenance | | +| main.js:57:11:57:18 | defaults | main.js:60:31:60:38 | defaults | provenance | | +| main.js:57:22:59:5 | {\\n ... "\\n } | main.js:57:11:57:18 | defaults | provenance | | +| main.js:57:22:59:5 | {\\n ... "\\n } | main.js:57:11:57:18 | defaults | provenance | | +| main.js:60:11:60:18 | settings | main.js:62:19:62:26 | settings | provenance | | +| main.js:60:22:60:48 | $.exten ... ptions) | main.js:60:11:60:18 | settings | provenance | | | main.js:60:31:60:38 | defaults | main.js:60:22:60:48 | $.exten ... ptions) | provenance | | | main.js:60:31:60:38 | defaults | main.js:60:22:60:48 | $.exten ... ptions) | provenance | | | main.js:60:31:60:38 | defaults | main.js:60:22:60:48 | $.exten ... ptions) | provenance | Config | @@ -78,7 +78,7 @@ nodes | lib2/index.ts:2:27:2:27 | s | semmle.label | s | | lib2/index.ts:6:29:6:36 | settings | semmle.label | settings | | lib2/index.ts:7:58:7:65 | settings | semmle.label | settings | -| lib2/index.ts:13:9:13:41 | name | semmle.label | name | +| lib2/index.ts:13:9:13:12 | name | semmle.label | name | | lib2/index.ts:13:16:13:23 | settings | semmle.label | settings | | lib2/index.ts:13:16:13:33 | settings.mySetting | semmle.label | settings.mySetting | | lib2/index.ts:13:16:13:36 | setting ... ting[i] | semmle.label | setting ... ting[i] | @@ -97,11 +97,11 @@ nodes | main.js:21:47:21:47 | s | semmle.label | s | | main.js:22:34:22:34 | s | semmle.label | s | | main.js:56:28:56:34 | options | semmle.label | options | -| main.js:57:11:59:5 | defaults | semmle.label | defaults | -| main.js:57:11:59:5 | defaults | semmle.label | defaults | +| main.js:57:11:57:18 | defaults | semmle.label | defaults | +| main.js:57:11:57:18 | defaults | semmle.label | defaults | | main.js:57:22:59:5 | {\\n ... "\\n } | semmle.label | {\\n ... "\\n } | | main.js:57:22:59:5 | {\\n ... "\\n } | semmle.label | {\\n ... "\\n } | -| main.js:60:11:60:48 | settings | semmle.label | settings | +| main.js:60:11:60:18 | settings | semmle.label | settings | | main.js:60:22:60:48 | $.exten ... ptions) | semmle.label | $.exten ... ptions) | | main.js:60:31:60:38 | defaults | semmle.label | defaults | | main.js:60:31:60:38 | defaults | semmle.label | defaults | diff --git a/javascript/ql/test/query-tests/Security/CWE-079/UnsafeJQueryPlugin/UnsafeJQueryPlugin.expected b/javascript/ql/test/query-tests/Security/CWE-079/UnsafeJQueryPlugin/UnsafeJQueryPlugin.expected index 236f3b387fa5..563f8b52d9c6 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/UnsafeJQueryPlugin/UnsafeJQueryPlugin.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/UnsafeJQueryPlugin/UnsafeJQueryPlugin.expected @@ -32,15 +32,15 @@ edges | unsafe-jquery-plugin.js:5:5:5:18 | options.target | unsafe-jquery-plugin.js:11:16:11:29 | options.target | provenance | Config | | unsafe-jquery-plugin.js:7:17:7:23 | options | unsafe-jquery-plugin.js:7:17:7:30 | options.target | provenance | | | unsafe-jquery-plugin.js:7:17:7:30 | options.target | unsafe-jquery-plugin.js:11:16:11:29 | options.target | provenance | Config | -| unsafe-jquery-plugin.js:11:7:11:29 | target | unsafe-jquery-plugin.js:22:6:22:11 | target | provenance | | -| unsafe-jquery-plugin.js:11:7:11:29 | target | unsafe-jquery-plugin.js:30:6:30:11 | target | provenance | | -| unsafe-jquery-plugin.js:11:7:11:29 | target | unsafe-jquery-plugin.js:36:6:36:11 | target | provenance | | -| unsafe-jquery-plugin.js:11:7:11:29 | target | unsafe-jquery-plugin.js:40:6:40:11 | target | provenance | | -| unsafe-jquery-plugin.js:11:7:11:29 | target | unsafe-jquery-plugin.js:48:6:48:11 | target | provenance | | -| unsafe-jquery-plugin.js:11:7:11:29 | target | unsafe-jquery-plugin.js:52:6:52:11 | target | provenance | | -| unsafe-jquery-plugin.js:11:7:11:29 | target | unsafe-jquery-plugin.js:60:6:60:11 | target | provenance | | +| unsafe-jquery-plugin.js:11:7:11:12 | target | unsafe-jquery-plugin.js:22:6:22:11 | target | provenance | | +| unsafe-jquery-plugin.js:11:7:11:12 | target | unsafe-jquery-plugin.js:30:6:30:11 | target | provenance | | +| unsafe-jquery-plugin.js:11:7:11:12 | target | unsafe-jquery-plugin.js:36:6:36:11 | target | provenance | | +| unsafe-jquery-plugin.js:11:7:11:12 | target | unsafe-jquery-plugin.js:40:6:40:11 | target | provenance | | +| unsafe-jquery-plugin.js:11:7:11:12 | target | unsafe-jquery-plugin.js:48:6:48:11 | target | provenance | | +| unsafe-jquery-plugin.js:11:7:11:12 | target | unsafe-jquery-plugin.js:52:6:52:11 | target | provenance | | +| unsafe-jquery-plugin.js:11:7:11:12 | target | unsafe-jquery-plugin.js:60:6:60:11 | target | provenance | | | unsafe-jquery-plugin.js:11:16:11:22 | options | unsafe-jquery-plugin.js:11:16:11:29 | options.target | provenance | | -| unsafe-jquery-plugin.js:11:16:11:29 | options.target | unsafe-jquery-plugin.js:11:7:11:29 | target | provenance | | +| unsafe-jquery-plugin.js:11:16:11:29 | options.target | unsafe-jquery-plugin.js:11:7:11:12 | target | provenance | | | unsafe-jquery-plugin.js:65:47:65:53 | options | unsafe-jquery-plugin.js:67:37:67:43 | options | provenance | | | unsafe-jquery-plugin.js:67:3:67:6 | [post update] this [options] | unsafe-jquery-plugin.js:68:7:68:10 | this [options] | provenance | | | unsafe-jquery-plugin.js:67:24:67:44 | $.exten ... ptions) | unsafe-jquery-plugin.js:67:3:67:6 | [post update] this [options] | provenance | | @@ -57,18 +57,18 @@ edges | unsafe-jquery-plugin.js:86:4:86:7 | [post update] this [o] | unsafe-jquery-plugin.js:87:12:87:15 | this [o] | provenance | | | unsafe-jquery-plugin.js:86:13:86:27 | $.extend({}, o) | unsafe-jquery-plugin.js:86:4:86:7 | [post update] this [o] | provenance | | | unsafe-jquery-plugin.js:86:26:86:26 | o | unsafe-jquery-plugin.js:86:13:86:27 | $.extend({}, o) | provenance | | -| unsafe-jquery-plugin.js:87:8:87:24 | t | unsafe-jquery-plugin.js:90:6:90:6 | t | provenance | | +| unsafe-jquery-plugin.js:87:8:87:8 | t | unsafe-jquery-plugin.js:90:6:90:6 | t | provenance | | | unsafe-jquery-plugin.js:87:12:87:15 | this [o] | unsafe-jquery-plugin.js:87:12:87:17 | this.o | provenance | | -| unsafe-jquery-plugin.js:87:12:87:17 | this.o | unsafe-jquery-plugin.js:87:8:87:24 | t | provenance | | +| unsafe-jquery-plugin.js:87:12:87:17 | this.o | unsafe-jquery-plugin.js:87:8:87:8 | t | provenance | | | unsafe-jquery-plugin.js:92:5:92:11 | options | unsafe-jquery-plugin.js:85:14:85:14 | o | provenance | | | unsafe-jquery-plugin.js:101:38:101:44 | options | unsafe-jquery-plugin.js:105:6:105:12 | options | provenance | | -| unsafe-jquery-plugin.js:102:3:105:13 | options | unsafe-jquery-plugin.js:107:5:107:11 | options | provenance | | -| unsafe-jquery-plugin.js:102:13:105:13 | $.exten ... ptions) | unsafe-jquery-plugin.js:102:3:105:13 | options | provenance | | +| unsafe-jquery-plugin.js:102:3:102:9 | options | unsafe-jquery-plugin.js:107:5:107:11 | options | provenance | | +| unsafe-jquery-plugin.js:102:13:105:13 | $.exten ... ptions) | unsafe-jquery-plugin.js:102:3:102:9 | options | provenance | | | unsafe-jquery-plugin.js:105:6:105:12 | options | unsafe-jquery-plugin.js:102:13:105:13 | $.exten ... ptions) | provenance | | | unsafe-jquery-plugin.js:107:5:107:11 | options | unsafe-jquery-plugin.js:107:5:107:18 | options.target | provenance | | | unsafe-jquery-plugin.js:114:38:114:44 | options | unsafe-jquery-plugin.js:115:51:115:57 | options | provenance | | -| unsafe-jquery-plugin.js:115:3:115:58 | options | unsafe-jquery-plugin.js:117:5:117:11 | options | provenance | | -| unsafe-jquery-plugin.js:115:13:115:58 | $.exten ... ptions) | unsafe-jquery-plugin.js:115:3:115:58 | options | provenance | | +| unsafe-jquery-plugin.js:115:3:115:9 | options | unsafe-jquery-plugin.js:117:5:117:11 | options | provenance | | +| unsafe-jquery-plugin.js:115:13:115:58 | $.exten ... ptions) | unsafe-jquery-plugin.js:115:3:115:9 | options | provenance | | | unsafe-jquery-plugin.js:115:51:115:57 | options | unsafe-jquery-plugin.js:115:13:115:58 | $.exten ... ptions) | provenance | | | unsafe-jquery-plugin.js:117:5:117:11 | options | unsafe-jquery-plugin.js:117:5:117:18 | options.target | provenance | | | unsafe-jquery-plugin.js:121:40:121:46 | options | unsafe-jquery-plugin.js:122:5:122:11 | options | provenance | | @@ -90,8 +90,8 @@ edges | unsafe-jquery-plugin.js:157:44:157:50 | options | unsafe-jquery-plugin.js:157:44:157:57 | options.target | provenance | | | unsafe-jquery-plugin.js:157:44:157:57 | options.target | unsafe-jquery-plugin.js:157:44:157:59 | options.target.a | provenance | | | unsafe-jquery-plugin.js:160:38:160:44 | options | unsafe-jquery-plugin.js:165:16:165:22 | options | provenance | | -| unsafe-jquery-plugin.js:165:7:165:29 | target | unsafe-jquery-plugin.js:170:6:170:11 | target | provenance | | -| unsafe-jquery-plugin.js:165:16:165:22 | options | unsafe-jquery-plugin.js:165:7:165:29 | target | provenance | | +| unsafe-jquery-plugin.js:165:7:165:12 | target | unsafe-jquery-plugin.js:170:6:170:11 | target | provenance | | +| unsafe-jquery-plugin.js:165:16:165:22 | options | unsafe-jquery-plugin.js:165:7:165:12 | target | provenance | | | unsafe-jquery-plugin.js:178:27:178:33 | options | unsafe-jquery-plugin.js:179:5:179:11 | options | provenance | | | unsafe-jquery-plugin.js:179:5:179:11 | options | unsafe-jquery-plugin.js:179:5:179:18 | options.target | provenance | | | unsafe-jquery-plugin.js:185:28:185:34 | options | unsafe-jquery-plugin.js:186:21:186:27 | options | provenance | | @@ -105,7 +105,7 @@ nodes | unsafe-jquery-plugin.js:5:5:5:18 | options.target | semmle.label | options.target | | unsafe-jquery-plugin.js:7:17:7:23 | options | semmle.label | options | | unsafe-jquery-plugin.js:7:17:7:30 | options.target | semmle.label | options.target | -| unsafe-jquery-plugin.js:11:7:11:29 | target | semmle.label | target | +| unsafe-jquery-plugin.js:11:7:11:12 | target | semmle.label | target | | unsafe-jquery-plugin.js:11:16:11:22 | options | semmle.label | options | | unsafe-jquery-plugin.js:11:16:11:29 | options.target | semmle.label | options.target | | unsafe-jquery-plugin.js:22:6:22:11 | target | semmle.label | target | @@ -134,19 +134,19 @@ nodes | unsafe-jquery-plugin.js:86:4:86:7 | [post update] this [o] | semmle.label | [post update] this [o] | | unsafe-jquery-plugin.js:86:13:86:27 | $.extend({}, o) | semmle.label | $.extend({}, o) | | unsafe-jquery-plugin.js:86:26:86:26 | o | semmle.label | o | -| unsafe-jquery-plugin.js:87:8:87:24 | t | semmle.label | t | +| unsafe-jquery-plugin.js:87:8:87:8 | t | semmle.label | t | | unsafe-jquery-plugin.js:87:12:87:15 | this [o] | semmle.label | this [o] | | unsafe-jquery-plugin.js:87:12:87:17 | this.o | semmle.label | this.o | | unsafe-jquery-plugin.js:90:6:90:6 | t | semmle.label | t | | unsafe-jquery-plugin.js:92:5:92:11 | options | semmle.label | options | | unsafe-jquery-plugin.js:101:38:101:44 | options | semmle.label | options | -| unsafe-jquery-plugin.js:102:3:105:13 | options | semmle.label | options | +| unsafe-jquery-plugin.js:102:3:102:9 | options | semmle.label | options | | unsafe-jquery-plugin.js:102:13:105:13 | $.exten ... ptions) | semmle.label | $.exten ... ptions) | | unsafe-jquery-plugin.js:105:6:105:12 | options | semmle.label | options | | unsafe-jquery-plugin.js:107:5:107:11 | options | semmle.label | options | | unsafe-jquery-plugin.js:107:5:107:18 | options.target | semmle.label | options.target | | unsafe-jquery-plugin.js:114:38:114:44 | options | semmle.label | options | -| unsafe-jquery-plugin.js:115:3:115:58 | options | semmle.label | options | +| unsafe-jquery-plugin.js:115:3:115:9 | options | semmle.label | options | | unsafe-jquery-plugin.js:115:13:115:58 | $.exten ... ptions) | semmle.label | $.exten ... ptions) | | unsafe-jquery-plugin.js:115:51:115:57 | options | semmle.label | options | | unsafe-jquery-plugin.js:117:5:117:11 | options | semmle.label | options | @@ -172,7 +172,7 @@ nodes | unsafe-jquery-plugin.js:157:44:157:57 | options.target | semmle.label | options.target | | unsafe-jquery-plugin.js:157:44:157:59 | options.target.a | semmle.label | options.target.a | | unsafe-jquery-plugin.js:160:38:160:44 | options | semmle.label | options | -| unsafe-jquery-plugin.js:165:7:165:29 | target | semmle.label | target | +| unsafe-jquery-plugin.js:165:7:165:12 | target | semmle.label | target | | unsafe-jquery-plugin.js:165:16:165:22 | options | semmle.label | options | | unsafe-jquery-plugin.js:170:6:170:11 | target | semmle.label | target | | unsafe-jquery-plugin.js:178:27:178:33 | options | semmle.label | options | diff --git a/javascript/ql/test/query-tests/Security/CWE-079/XssThroughDom/XssThroughDom.expected b/javascript/ql/test/query-tests/Security/CWE-079/XssThroughDom/XssThroughDom.expected index 6f2eed5b1393..fe0ee6ea7881 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/XssThroughDom/XssThroughDom.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/XssThroughDom/XssThroughDom.expected @@ -58,38 +58,38 @@ edges | forms.js:25:23:25:28 | values | forms.js:25:23:25:34 | values.email | provenance | | | forms.js:28:20:28:25 | values | forms.js:29:23:29:28 | values | provenance | | | forms.js:29:23:29:28 | values | forms.js:29:23:29:34 | values.email | provenance | | -| forms.js:34:11:34:53 | values | forms.js:35:19:35:24 | values | provenance | | -| forms.js:34:13:34:18 | values | forms.js:34:11:34:53 | values | provenance | | +| forms.js:34:13:34:18 | values | forms.js:34:13:34:18 | values | provenance | | +| forms.js:34:13:34:18 | values | forms.js:35:19:35:24 | values | provenance | | | forms.js:35:19:35:24 | values | forms.js:35:19:35:30 | values.email | provenance | | | forms.js:44:21:44:26 | values | forms.js:45:21:45:26 | values | provenance | | | forms.js:45:21:45:26 | values | forms.js:45:21:45:33 | values.stooge | provenance | | | forms.js:71:21:71:24 | data | forms.js:72:19:72:22 | data | provenance | | | forms.js:72:19:72:22 | data | forms.js:72:19:72:27 | data.name | provenance | | -| forms.js:92:17:92:36 | values | forms.js:93:25:93:30 | values | provenance | | -| forms.js:92:26:92:36 | getValues() | forms.js:92:17:92:36 | values | provenance | | +| forms.js:92:17:92:22 | values | forms.js:93:25:93:30 | values | provenance | | +| forms.js:92:26:92:36 | getValues() | forms.js:92:17:92:22 | values | provenance | | | forms.js:93:25:93:30 | values | forms.js:93:25:93:35 | values.name | provenance | | -| xss-through-dom.js:73:9:73:41 | selector | xss-through-dom.js:77:4:77:11 | selector | provenance | | -| xss-through-dom.js:73:20:73:41 | $("inpu ... 0).name | xss-through-dom.js:73:9:73:41 | selector | provenance | | -| xss-through-dom.js:84:8:84:30 | text | xss-through-dom.js:86:33:86:36 | text | provenance | | -| xss-through-dom.js:84:8:84:30 | text | xss-through-dom.js:87:36:87:39 | text | provenance | | -| xss-through-dom.js:84:15:84:30 | $("text").text() | xss-through-dom.js:84:8:84:30 | text | provenance | | +| xss-through-dom.js:73:9:73:16 | selector | xss-through-dom.js:77:4:77:11 | selector | provenance | | +| xss-through-dom.js:73:20:73:41 | $("inpu ... 0).name | xss-through-dom.js:73:9:73:16 | selector | provenance | | +| xss-through-dom.js:84:8:84:11 | text | xss-through-dom.js:86:33:86:36 | text | provenance | | +| xss-through-dom.js:84:8:84:11 | text | xss-through-dom.js:87:36:87:39 | text | provenance | | +| xss-through-dom.js:84:15:84:30 | $("text").text() | xss-through-dom.js:84:8:84:11 | text | provenance | | | xss-through-dom.js:86:33:86:36 | text | xss-through-dom.js:86:16:86:37 | anser.a ... l(text) | provenance | | | xss-through-dom.js:87:36:87:39 | text | xss-through-dom.js:87:16:87:40 | new ans ... s(text) | provenance | | | xss-through-dom.js:109:45:109:55 | this.el.src | xss-through-dom.js:109:31:109:70 | "
    " | provenance | | -| xss-through-dom.js:114:11:114:52 | src | xss-through-dom.js:115:16:115:18 | src | provenance | | -| xss-through-dom.js:114:11:114:52 | src | xss-through-dom.js:117:26:117:28 | src | provenance | | -| xss-through-dom.js:114:17:114:52 | documen ... k").src | xss-through-dom.js:114:11:114:52 | src | provenance | | +| xss-through-dom.js:114:11:114:13 | src | xss-through-dom.js:115:16:115:18 | src | provenance | | +| xss-through-dom.js:114:11:114:13 | src | xss-through-dom.js:117:26:117:28 | src | provenance | | +| xss-through-dom.js:114:17:114:52 | documen ... k").src | xss-through-dom.js:114:11:114:13 | src | provenance | | | xss-through-dom.js:120:23:120:37 | ev.target.files | xss-through-dom.js:120:23:120:45 | ev.targ ... 0].name | provenance | | | xss-through-dom.js:122:53:122:67 | ev.target.files | xss-through-dom.js:122:53:122:70 | ev.target.files[0] | provenance | | | xss-through-dom.js:122:53:122:70 | ev.target.files[0] | xss-through-dom.js:122:33:122:71 | URL.cre ... les[0]) | provenance | Config | -| xss-through-dom.js:130:6:130:68 | linkText | xss-through-dom.js:131:19:131:26 | linkText | provenance | | -| xss-through-dom.js:130:6:130:68 | linkText | xss-through-dom.js:132:16:132:23 | linkText | provenance | | -| xss-through-dom.js:130:17:130:37 | wSelect ... tring() | xss-through-dom.js:130:6:130:68 | linkText | provenance | | -| xss-through-dom.js:130:42:130:62 | dSelect ... tring() | xss-through-dom.js:130:6:130:68 | linkText | provenance | | -| xss-through-dom.js:139:11:139:52 | src | xss-through-dom.js:140:19:140:21 | src | provenance | | -| xss-through-dom.js:139:11:139:52 | src | xss-through-dom.js:141:25:141:27 | src | provenance | | -| xss-through-dom.js:139:11:139:52 | src | xss-through-dom.js:150:24:150:26 | src | provenance | | -| xss-through-dom.js:139:17:139:52 | documen ... k").src | xss-through-dom.js:139:11:139:52 | src | provenance | | +| xss-through-dom.js:130:6:130:13 | linkText | xss-through-dom.js:131:19:131:26 | linkText | provenance | | +| xss-through-dom.js:130:6:130:13 | linkText | xss-through-dom.js:132:16:132:23 | linkText | provenance | | +| xss-through-dom.js:130:17:130:37 | wSelect ... tring() | xss-through-dom.js:130:6:130:13 | linkText | provenance | | +| xss-through-dom.js:130:42:130:62 | dSelect ... tring() | xss-through-dom.js:130:6:130:13 | linkText | provenance | | +| xss-through-dom.js:139:11:139:13 | src | xss-through-dom.js:140:19:140:21 | src | provenance | | +| xss-through-dom.js:139:11:139:13 | src | xss-through-dom.js:141:25:141:27 | src | provenance | | +| xss-through-dom.js:139:11:139:13 | src | xss-through-dom.js:150:24:150:26 | src | provenance | | +| xss-through-dom.js:139:17:139:52 | documen ... k").src | xss-through-dom.js:139:11:139:13 | src | provenance | | | xss-through-dom.js:154:25:154:27 | msg | xss-through-dom.js:155:27:155:29 | msg | provenance | | | xss-through-dom.js:159:34:159:52 | $("textarea").val() | xss-through-dom.js:154:25:154:27 | msg | provenance | | nodes @@ -111,7 +111,7 @@ nodes | forms.js:28:20:28:25 | values | semmle.label | values | | forms.js:29:23:29:28 | values | semmle.label | values | | forms.js:29:23:29:34 | values.email | semmle.label | values.email | -| forms.js:34:11:34:53 | values | semmle.label | values | +| forms.js:34:13:34:18 | values | semmle.label | values | | forms.js:34:13:34:18 | values | semmle.label | values | | forms.js:35:19:35:24 | values | semmle.label | values | | forms.js:35:19:35:30 | values.email | semmle.label | values.email | @@ -122,7 +122,7 @@ nodes | forms.js:71:21:71:24 | data | semmle.label | data | | forms.js:72:19:72:22 | data | semmle.label | data | | forms.js:72:19:72:27 | data.name | semmle.label | data.name | -| forms.js:92:17:92:36 | values | semmle.label | values | +| forms.js:92:17:92:22 | values | semmle.label | values | | forms.js:92:26:92:36 | getValues() | semmle.label | getValues() | | forms.js:93:25:93:30 | values | semmle.label | values | | forms.js:93:25:93:35 | values.name | semmle.label | values.name | @@ -142,12 +142,12 @@ nodes | xss-through-dom.js:61:30:61:69 | $(docum ... value") | semmle.label | $(docum ... value") | | xss-through-dom.js:64:30:64:40 | valMethod() | semmle.label | valMethod() | | xss-through-dom.js:71:11:71:32 | $("inpu ... 0).name | semmle.label | $("inpu ... 0).name | -| xss-through-dom.js:73:9:73:41 | selector | semmle.label | selector | +| xss-through-dom.js:73:9:73:16 | selector | semmle.label | selector | | xss-through-dom.js:73:20:73:41 | $("inpu ... 0).name | semmle.label | $("inpu ... 0).name | | xss-through-dom.js:77:4:77:11 | selector | semmle.label | selector | | xss-through-dom.js:79:4:79:34 | documen ... t.value | semmle.label | documen ... t.value | | xss-through-dom.js:81:17:81:43 | $('#foo ... rText') | semmle.label | $('#foo ... rText') | -| xss-through-dom.js:84:8:84:30 | text | semmle.label | text | +| xss-through-dom.js:84:8:84:11 | text | semmle.label | text | | xss-through-dom.js:84:15:84:30 | $("text").text() | semmle.label | $("text").text() | | xss-through-dom.js:86:16:86:37 | anser.a ... l(text) | semmle.label | anser.a ... l(text) | | xss-through-dom.js:86:33:86:36 | text | semmle.label | text | @@ -157,7 +157,7 @@ nodes | xss-through-dom.js:96:17:96:47 | $("#foo ... ].value | semmle.label | $("#foo ... ].value | | xss-through-dom.js:109:31:109:70 | "" | semmle.label | "" | | xss-through-dom.js:109:45:109:55 | this.el.src | semmle.label | this.el.src | -| xss-through-dom.js:114:11:114:52 | src | semmle.label | src | +| xss-through-dom.js:114:11:114:13 | src | semmle.label | src | | xss-through-dom.js:114:17:114:52 | documen ... k").src | semmle.label | documen ... k").src | | xss-through-dom.js:115:16:115:18 | src | semmle.label | src | | xss-through-dom.js:117:26:117:28 | src | semmle.label | src | @@ -166,12 +166,12 @@ nodes | xss-through-dom.js:122:33:122:71 | URL.cre ... les[0]) | semmle.label | URL.cre ... les[0]) | | xss-through-dom.js:122:53:122:67 | ev.target.files | semmle.label | ev.target.files | | xss-through-dom.js:122:53:122:70 | ev.target.files[0] | semmle.label | ev.target.files[0] | -| xss-through-dom.js:130:6:130:68 | linkText | semmle.label | linkText | +| xss-through-dom.js:130:6:130:13 | linkText | semmle.label | linkText | | xss-through-dom.js:130:17:130:37 | wSelect ... tring() | semmle.label | wSelect ... tring() | | xss-through-dom.js:130:42:130:62 | dSelect ... tring() | semmle.label | dSelect ... tring() | | xss-through-dom.js:131:19:131:26 | linkText | semmle.label | linkText | | xss-through-dom.js:132:16:132:23 | linkText | semmle.label | linkText | -| xss-through-dom.js:139:11:139:52 | src | semmle.label | src | +| xss-through-dom.js:139:11:139:13 | src | semmle.label | src | | xss-through-dom.js:139:17:139:52 | documen ... k").src | semmle.label | documen ... k").src | | xss-through-dom.js:140:19:140:21 | src | semmle.label | src | | xss-through-dom.js:141:25:141:27 | src | semmle.label | src | diff --git a/javascript/ql/test/query-tests/Security/CWE-089/local-threat-source/SqlInjection.expected b/javascript/ql/test/query-tests/Security/CWE-089/local-threat-source/SqlInjection.expected index b6710ee92f5a..48d4262921d7 100644 --- a/javascript/ql/test/query-tests/Security/CWE-089/local-threat-source/SqlInjection.expected +++ b/javascript/ql/test/query-tests/Security/CWE-089/local-threat-source/SqlInjection.expected @@ -1,11 +1,11 @@ #select | test.js:7:14:7:61 | 'SELECT ... + temp | test.js:4:12:4:22 | process.env | test.js:7:14:7:61 | 'SELECT ... + temp | This query string depends on a $@. | test.js:4:12:4:22 | process.env | user-provided value | edges -| test.js:4:5:4:29 | temp | test.js:7:58:7:61 | temp | provenance | | -| test.js:4:12:4:22 | process.env | test.js:4:5:4:29 | temp | provenance | | +| test.js:4:5:4:8 | temp | test.js:7:58:7:61 | temp | provenance | | +| test.js:4:12:4:22 | process.env | test.js:4:5:4:8 | temp | provenance | | | test.js:7:58:7:61 | temp | test.js:7:14:7:61 | 'SELECT ... + temp | provenance | | nodes -| test.js:4:5:4:29 | temp | semmle.label | temp | +| test.js:4:5:4:8 | temp | semmle.label | temp | | test.js:4:12:4:22 | process.env | semmle.label | process.env | | test.js:7:14:7:61 | 'SELECT ... + temp | semmle.label | 'SELECT ... + temp | | test.js:7:58:7:61 | temp | semmle.label | temp | diff --git a/javascript/ql/test/query-tests/Security/CWE-089/typed/SqlInjection.expected b/javascript/ql/test/query-tests/Security/CWE-089/typed/SqlInjection.expected index b0ae2737b003..e4e45ed74d5c 100644 --- a/javascript/ql/test/query-tests/Security/CWE-089/typed/SqlInjection.expected +++ b/javascript/ql/test/query-tests/Security/CWE-089/typed/SqlInjection.expected @@ -3,26 +3,26 @@ | typedClient.ts:22:27:22:35 | { id: v } | typedClient.ts:21:22:21:29 | req.body | typedClient.ts:22:27:22:35 | { id: v } | This query object depends on a $@. | typedClient.ts:21:22:21:29 | req.body | user-provided value | | typedClient.ts:23:27:23:35 | { id: v } | typedClient.ts:21:22:21:29 | req.body | typedClient.ts:23:27:23:35 | { id: v } | This query object depends on a $@. | typedClient.ts:21:22:21:29 | req.body | user-provided value | edges -| typedClient.ts:13:7:13:32 | v | typedClient.ts:14:30:14:30 | v | provenance | | -| typedClient.ts:13:11:13:32 | JSON.pa ... body.x) | typedClient.ts:13:7:13:32 | v | provenance | | +| typedClient.ts:13:7:13:7 | v | typedClient.ts:14:30:14:30 | v | provenance | | +| typedClient.ts:13:11:13:32 | JSON.pa ... body.x) | typedClient.ts:13:7:13:7 | v | provenance | | | typedClient.ts:13:22:13:29 | req.body | typedClient.ts:13:22:13:31 | req.body.x | provenance | Config | | typedClient.ts:13:22:13:31 | req.body.x | typedClient.ts:13:11:13:32 | JSON.pa ... body.x) | provenance | Config | | typedClient.ts:14:30:14:30 | v | typedClient.ts:14:24:14:32 | { id: v } | provenance | Config | -| typedClient.ts:21:7:21:32 | v | typedClient.ts:22:33:22:33 | v | provenance | | -| typedClient.ts:21:7:21:32 | v | typedClient.ts:23:33:23:33 | v | provenance | | -| typedClient.ts:21:11:21:32 | JSON.pa ... body.x) | typedClient.ts:21:7:21:32 | v | provenance | | +| typedClient.ts:21:7:21:7 | v | typedClient.ts:22:33:22:33 | v | provenance | | +| typedClient.ts:21:7:21:7 | v | typedClient.ts:23:33:23:33 | v | provenance | | +| typedClient.ts:21:11:21:32 | JSON.pa ... body.x) | typedClient.ts:21:7:21:7 | v | provenance | | | typedClient.ts:21:22:21:29 | req.body | typedClient.ts:21:22:21:31 | req.body.x | provenance | Config | | typedClient.ts:21:22:21:31 | req.body.x | typedClient.ts:21:11:21:32 | JSON.pa ... body.x) | provenance | Config | | typedClient.ts:22:33:22:33 | v | typedClient.ts:22:27:22:35 | { id: v } | provenance | Config | | typedClient.ts:23:33:23:33 | v | typedClient.ts:23:27:23:35 | { id: v } | provenance | Config | nodes -| typedClient.ts:13:7:13:32 | v | semmle.label | v | +| typedClient.ts:13:7:13:7 | v | semmle.label | v | | typedClient.ts:13:11:13:32 | JSON.pa ... body.x) | semmle.label | JSON.pa ... body.x) | | typedClient.ts:13:22:13:29 | req.body | semmle.label | req.body | | typedClient.ts:13:22:13:31 | req.body.x | semmle.label | req.body.x | | typedClient.ts:14:24:14:32 | { id: v } | semmle.label | { id: v } | | typedClient.ts:14:30:14:30 | v | semmle.label | v | -| typedClient.ts:21:7:21:32 | v | semmle.label | v | +| typedClient.ts:21:7:21:7 | v | semmle.label | v | | typedClient.ts:21:11:21:32 | JSON.pa ... body.x) | semmle.label | JSON.pa ... body.x) | | typedClient.ts:21:22:21:29 | req.body | semmle.label | req.body | | typedClient.ts:21:22:21:31 | req.body.x | semmle.label | req.body.x | diff --git a/javascript/ql/test/query-tests/Security/CWE-089/untyped/SqlInjection.expected b/javascript/ql/test/query-tests/Security/CWE-089/untyped/SqlInjection.expected index 843d41eb9229..9405e075e332 100644 --- a/javascript/ql/test/query-tests/Security/CWE-089/untyped/SqlInjection.expected +++ b/javascript/ql/test/query-tests/Security/CWE-089/untyped/SqlInjection.expected @@ -137,63 +137,63 @@ | tst4.js:8:10:8:66 | 'SELECT ... d + '"' | tst4.js:8:46:8:60 | $routeParams.id | tst4.js:8:10:8:66 | 'SELECT ... d + '"' | This query string depends on a $@. | tst4.js:8:46:8:60 | $routeParams.id | user-provided value | | tst.js:10:10:10:64 | 'SELECT ... d + '"' | tst.js:10:46:10:58 | req.params.id | tst.js:10:10:10:64 | 'SELECT ... d + '"' | This query string depends on a $@. | tst.js:10:46:10:58 | req.params.id | user-provided value | edges -| graphql.js:8:11:8:28 | id | graphql.js:11:46:11:47 | id | provenance | | -| graphql.js:8:16:8:28 | req.params.id | graphql.js:8:11:8:28 | id | provenance | | +| graphql.js:8:11:8:12 | id | graphql.js:11:46:11:47 | id | provenance | | +| graphql.js:8:16:8:28 | req.params.id | graphql.js:8:11:8:12 | id | provenance | | | graphql.js:11:46:11:47 | id | graphql.js:9:34:19:5 | `\\n ... }\\n ` | provenance | | -| graphql.js:25:11:25:28 | id | graphql.js:26:37:26:38 | id | provenance | | -| graphql.js:25:11:25:28 | id | graphql.js:29:39:29:40 | id | provenance | | -| graphql.js:25:11:25:28 | id | graphql.js:32:25:32:26 | id | provenance | | -| graphql.js:25:16:25:28 | req.params.id | graphql.js:25:11:25:28 | id | provenance | | +| graphql.js:25:11:25:12 | id | graphql.js:26:37:26:38 | id | provenance | | +| graphql.js:25:11:25:12 | id | graphql.js:29:39:29:40 | id | provenance | | +| graphql.js:25:11:25:12 | id | graphql.js:32:25:32:26 | id | provenance | | +| graphql.js:25:16:25:28 | req.params.id | graphql.js:25:11:25:12 | id | provenance | | | graphql.js:26:37:26:38 | id | graphql.js:26:30:26:40 | `foo ${id}` | provenance | | | graphql.js:29:39:29:40 | id | graphql.js:29:32:29:42 | `foo ${id}` | provenance | | | graphql.js:32:25:32:26 | id | graphql.js:32:18:32:28 | `foo ${id}` | provenance | | -| graphql.js:38:11:38:28 | id | graphql.js:43:21:43:22 | id | provenance | | -| graphql.js:38:11:38:28 | id | graphql.js:47:51:47:52 | id | provenance | | -| graphql.js:38:16:38:28 | req.params.id | graphql.js:38:11:38:28 | id | provenance | | +| graphql.js:38:11:38:12 | id | graphql.js:43:21:43:22 | id | provenance | | +| graphql.js:38:11:38:12 | id | graphql.js:47:51:47:52 | id | provenance | | +| graphql.js:38:16:38:28 | req.params.id | graphql.js:38:11:38:12 | id | provenance | | | graphql.js:43:21:43:22 | id | graphql.js:43:14:43:24 | `foo ${id}` | provenance | | | graphql.js:47:51:47:52 | id | graphql.js:47:44:47:54 | `foo ${id}` | provenance | | -| graphql.js:54:11:54:28 | id | graphql.js:55:46:55:47 | id | provenance | | -| graphql.js:54:11:54:28 | id | graphql.js:57:73:57:74 | id | provenance | | -| graphql.js:54:16:54:28 | req.params.id | graphql.js:54:11:54:28 | id | provenance | | +| graphql.js:54:11:54:12 | id | graphql.js:55:46:55:47 | id | provenance | | +| graphql.js:54:11:54:12 | id | graphql.js:57:73:57:74 | id | provenance | | +| graphql.js:54:16:54:28 | req.params.id | graphql.js:54:11:54:12 | id | provenance | | | graphql.js:55:46:55:47 | id | graphql.js:55:39:55:49 | `foo ${id}` | provenance | | | graphql.js:57:73:57:74 | id | graphql.js:57:66:57:76 | `foo ${id}` | provenance | | -| graphql.js:73:9:73:25 | id | graphql.js:74:56:74:57 | id | provenance | | -| graphql.js:73:9:73:25 | id | graphql.js:86:13:86:14 | id | provenance | | -| graphql.js:73:14:73:25 | req.query.id | graphql.js:73:9:73:25 | id | provenance | | +| graphql.js:73:9:73:10 | id | graphql.js:74:56:74:57 | id | provenance | | +| graphql.js:73:9:73:10 | id | graphql.js:86:13:86:14 | id | provenance | | +| graphql.js:73:14:73:25 | req.query.id | graphql.js:73:9:73:10 | id | provenance | | | graphql.js:74:56:74:57 | id | graphql.js:74:46:74:64 | "{ foo" + id + " }" | provenance | | | graphql.js:86:13:86:14 | id | graphql.js:82:14:88:8 | `{\\n ... }` | provenance | | -| graphql.js:117:11:117:28 | id | graphql.js:118:45:118:46 | id | provenance | | -| graphql.js:117:16:117:28 | req.params.id | graphql.js:117:11:117:28 | id | provenance | | +| graphql.js:117:11:117:12 | id | graphql.js:118:45:118:46 | id | provenance | | +| graphql.js:117:16:117:28 | req.params.id | graphql.js:117:11:117:12 | id | provenance | | | graphql.js:118:45:118:46 | id | graphql.js:118:38:118:48 | `foo ${id}` | provenance | | -| hana.js:9:13:9:42 | maliciousInput | hana.js:10:64:10:77 | maliciousInput | provenance | | -| hana.js:9:30:9:37 | req.body | hana.js:9:13:9:42 | maliciousInput | provenance | | -| hana.js:10:15:10:80 | query | hana.js:11:19:11:23 | query | provenance | | -| hana.js:10:64:10:77 | maliciousInput | hana.js:10:15:10:80 | query | provenance | | -| hana.js:16:15:16:44 | maliciousInput | hana.js:17:87:17:100 | maliciousInput | provenance | | -| hana.js:16:32:16:39 | req.body | hana.js:16:15:16:44 | maliciousInput | provenance | | +| hana.js:9:13:9:26 | maliciousInput | hana.js:10:64:10:77 | maliciousInput | provenance | | +| hana.js:9:30:9:37 | req.body | hana.js:9:13:9:26 | maliciousInput | provenance | | +| hana.js:10:15:10:19 | query | hana.js:11:19:11:23 | query | provenance | | +| hana.js:10:64:10:77 | maliciousInput | hana.js:10:15:10:19 | query | provenance | | +| hana.js:16:15:16:28 | maliciousInput | hana.js:17:87:17:100 | maliciousInput | provenance | | +| hana.js:16:32:16:39 | req.body | hana.js:16:15:16:28 | maliciousInput | provenance | | | hana.js:17:87:17:100 | maliciousInput | hana.js:17:35:17:100 | `SELECT ... usInput | provenance | | -| hana.js:23:15:23:44 | maliciousInput | hana.js:24:83:24:96 | maliciousInput | provenance | | -| hana.js:23:32:23:39 | req.body | hana.js:23:15:23:44 | maliciousInput | provenance | | +| hana.js:23:15:23:28 | maliciousInput | hana.js:24:83:24:96 | maliciousInput | provenance | | +| hana.js:23:32:23:39 | req.body | hana.js:23:15:23:28 | maliciousInput | provenance | | | hana.js:24:83:24:96 | maliciousInput | hana.js:24:33:24:96 | `INSERT ... usInput | provenance | | -| hana.js:30:13:30:42 | maliciousInput | hana.js:31:84:31:97 | maliciousInput | provenance | | -| hana.js:30:30:30:37 | req.body | hana.js:30:13:30:42 | maliciousInput | provenance | | +| hana.js:30:13:30:26 | maliciousInput | hana.js:31:84:31:97 | maliciousInput | provenance | | +| hana.js:30:30:30:37 | req.body | hana.js:30:13:30:26 | maliciousInput | provenance | | | hana.js:31:84:31:97 | maliciousInput | hana.js:31:31:31:97 | "SELECT ... usInput | provenance | | -| hana.js:47:7:47:36 | maliciousInput | hana.js:48:39:48:52 | maliciousInput | provenance | | -| hana.js:47:7:47:36 | maliciousInput | hana.js:50:76:50:89 | maliciousInput | provenance | | -| hana.js:47:7:47:36 | maliciousInput | hana.js:54:53:54:66 | maliciousInput | provenance | | -| hana.js:47:24:47:31 | req.body | hana.js:47:7:47:36 | maliciousInput | provenance | | +| hana.js:47:7:47:20 | maliciousInput | hana.js:48:39:48:52 | maliciousInput | provenance | | +| hana.js:47:7:47:20 | maliciousInput | hana.js:50:76:50:89 | maliciousInput | provenance | | +| hana.js:47:7:47:20 | maliciousInput | hana.js:54:53:54:66 | maliciousInput | provenance | | +| hana.js:47:24:47:31 | req.body | hana.js:47:7:47:20 | maliciousInput | provenance | | | hana.js:48:39:48:52 | maliciousInput | hana.js:48:15:48:52 | 'SELECT ... usInput | provenance | | | hana.js:48:39:48:52 | maliciousInput | hana.js:50:76:50:89 | maliciousInput | provenance | | | hana.js:50:76:50:89 | maliciousInput | hana.js:50:40:50:89 | 'CALL P ... usInput | provenance | | | hana.js:50:76:50:89 | maliciousInput | hana.js:54:53:54:66 | maliciousInput | provenance | | | hana.js:54:53:54:66 | maliciousInput | hana.js:54:38:54:66 | 'PROC_D ... usInput | provenance | | -| hana.js:68:7:68:36 | maliciousInput | hana.js:71:86:71:99 | maliciousInput | provenance | | -| hana.js:68:7:68:36 | maliciousInput | hana.js:73:41:73:54 | maliciousInput | provenance | | -| hana.js:68:7:68:36 | maliciousInput | hana.js:74:41:74:54 | maliciousInput | provenance | | -| hana.js:68:7:68:36 | maliciousInput | hana.js:76:60:76:73 | maliciousInput | provenance | | -| hana.js:68:7:68:36 | maliciousInput | hana.js:80:56:80:69 | maliciousInput | provenance | | -| hana.js:68:7:68:36 | maliciousInput | hana.js:84:65:84:78 | maliciousInput | provenance | | -| hana.js:68:24:68:31 | req.body | hana.js:68:7:68:36 | maliciousInput | provenance | | +| hana.js:68:7:68:20 | maliciousInput | hana.js:71:86:71:99 | maliciousInput | provenance | | +| hana.js:68:7:68:20 | maliciousInput | hana.js:73:41:73:54 | maliciousInput | provenance | | +| hana.js:68:7:68:20 | maliciousInput | hana.js:74:41:74:54 | maliciousInput | provenance | | +| hana.js:68:7:68:20 | maliciousInput | hana.js:76:60:76:73 | maliciousInput | provenance | | +| hana.js:68:7:68:20 | maliciousInput | hana.js:80:56:80:69 | maliciousInput | provenance | | +| hana.js:68:7:68:20 | maliciousInput | hana.js:84:65:84:78 | maliciousInput | provenance | | +| hana.js:68:24:68:31 | req.body | hana.js:68:7:68:20 | maliciousInput | provenance | | | hana.js:71:86:71:99 | maliciousInput | hana.js:71:44:71:99 | "INSERT ... usInput | provenance | | | hana.js:73:41:73:54 | maliciousInput | hana.js:73:17:73:54 | 'select ... usInput | provenance | | | hana.js:74:41:74:54 | maliciousInput | hana.js:74:17:74:54 | 'select ... usInput | provenance | | @@ -201,151 +201,151 @@ edges | hana.js:80:56:80:69 | maliciousInput | hana.js:80:20:80:69 | 'call P ... usInput | provenance | | | hana.js:84:65:84:78 | maliciousInput | hana.js:84:20:84:78 | 'select ... usInput | provenance | | | html-sanitizer.js:13:39:13:44 | param1 | html-sanitizer.js:14:18:14:23 | param1 | provenance | | -| html-sanitizer.js:14:5:14:24 | param1 | html-sanitizer.js:16:54:16:59 | param1 | provenance | | -| html-sanitizer.js:14:14:14:24 | xss(param1) | html-sanitizer.js:14:5:14:24 | param1 | provenance | | +| html-sanitizer.js:14:5:14:10 | param1 | html-sanitizer.js:16:54:16:59 | param1 | provenance | | +| html-sanitizer.js:14:14:14:24 | xss(param1) | html-sanitizer.js:14:5:14:10 | param1 | provenance | | | html-sanitizer.js:14:18:14:23 | param1 | html-sanitizer.js:14:14:14:24 | xss(param1) | provenance | Config | | html-sanitizer.js:16:54:16:59 | param1 | html-sanitizer.js:16:9:16:59 | `SELECT ... param1 | provenance | | -| json-schema-validator.js:25:15:25:48 | query | json-schema-validator.js:33:22:33:26 | query | provenance | | -| json-schema-validator.js:25:15:25:48 | query | json-schema-validator.js:35:18:35:22 | query | provenance | | -| json-schema-validator.js:25:23:25:48 | JSON.pa ... y.data) | json-schema-validator.js:25:15:25:48 | query | provenance | | +| json-schema-validator.js:25:15:25:19 | query | json-schema-validator.js:33:22:33:26 | query | provenance | | +| json-schema-validator.js:25:15:25:19 | query | json-schema-validator.js:35:18:35:22 | query | provenance | | +| json-schema-validator.js:25:23:25:48 | JSON.pa ... y.data) | json-schema-validator.js:25:15:25:19 | query | provenance | | | json-schema-validator.js:25:34:25:47 | req.query.data | json-schema-validator.js:25:23:25:48 | JSON.pa ... y.data) | provenance | Config | -| json-schema-validator.js:50:15:50:48 | query | json-schema-validator.js:55:22:55:26 | query | provenance | | -| json-schema-validator.js:50:15:50:48 | query | json-schema-validator.js:59:22:59:26 | query | provenance | | -| json-schema-validator.js:50:15:50:48 | query | json-schema-validator.js:61:22:61:26 | query | provenance | | -| json-schema-validator.js:50:23:50:48 | JSON.pa ... y.data) | json-schema-validator.js:50:15:50:48 | query | provenance | | +| json-schema-validator.js:50:15:50:19 | query | json-schema-validator.js:55:22:55:26 | query | provenance | | +| json-schema-validator.js:50:15:50:19 | query | json-schema-validator.js:59:22:59:26 | query | provenance | | +| json-schema-validator.js:50:15:50:19 | query | json-schema-validator.js:61:22:61:26 | query | provenance | | +| json-schema-validator.js:50:23:50:48 | JSON.pa ... y.data) | json-schema-validator.js:50:15:50:19 | query | provenance | | | json-schema-validator.js:50:34:50:47 | req.query.data | json-schema-validator.js:50:23:50:48 | JSON.pa ... y.data) | provenance | Config | -| koarouter.js:5:11:5:33 | version | koarouter.js:14:38:14:44 | version | provenance | | -| koarouter.js:5:13:5:19 | version | koarouter.js:5:11:5:33 | version | provenance | | +| koarouter.js:5:13:5:19 | version | koarouter.js:5:13:5:19 | version | provenance | | +| koarouter.js:5:13:5:19 | version | koarouter.js:14:38:14:44 | version | provenance | | | koarouter.js:14:9:14:18 | [post update] conditions [ArrayElement] | koarouter.js:17:52:17:61 | conditions [ArrayElement] | provenance | | | koarouter.js:14:25:14:46 | `versio ... rsion}` | koarouter.js:14:9:14:18 | [post update] conditions [ArrayElement] | provenance | | | koarouter.js:14:38:14:44 | version | koarouter.js:14:25:14:46 | `versio ... rsion}` | provenance | | | koarouter.js:17:52:17:61 | conditions [ArrayElement] | koarouter.js:17:52:17:75 | conditi ... and ') | provenance | | | koarouter.js:17:52:17:75 | conditi ... and ') | koarouter.js:17:27:17:77 | `SELECT ... nd ')}` | provenance | | -| ldap.js:20:7:20:34 | q | ldap.js:22:18:22:18 | q | provenance | | -| ldap.js:20:11:20:34 | url.par ... , true) | ldap.js:20:7:20:34 | q | provenance | | +| ldap.js:20:7:20:7 | q | ldap.js:22:18:22:18 | q | provenance | | +| ldap.js:20:11:20:34 | url.par ... , true) | ldap.js:20:7:20:7 | q | provenance | | | ldap.js:20:21:20:27 | req.url | ldap.js:20:11:20:34 | url.par ... , true) | provenance | | -| ldap.js:22:7:22:33 | username | ldap.js:25:24:25:31 | username | provenance | | -| ldap.js:22:7:22:33 | username | ldap.js:25:46:25:53 | username | provenance | | -| ldap.js:22:7:22:33 | username | ldap.js:32:26:32:33 | username | provenance | | -| ldap.js:22:7:22:33 | username | ldap.js:32:48:32:55 | username | provenance | | -| ldap.js:22:7:22:33 | username | ldap.js:64:16:64:23 | username | provenance | | -| ldap.js:22:7:22:33 | username | ldap.js:64:38:64:45 | username | provenance | | -| ldap.js:22:7:22:33 | username | ldap.js:68:33:68:40 | username | provenance | | -| ldap.js:22:18:22:18 | q | ldap.js:22:7:22:33 | username | provenance | | +| ldap.js:22:7:22:14 | username | ldap.js:25:24:25:31 | username | provenance | | +| ldap.js:22:7:22:14 | username | ldap.js:25:46:25:53 | username | provenance | | +| ldap.js:22:7:22:14 | username | ldap.js:32:26:32:33 | username | provenance | | +| ldap.js:22:7:22:14 | username | ldap.js:32:48:32:55 | username | provenance | | +| ldap.js:22:7:22:14 | username | ldap.js:64:16:64:23 | username | provenance | | +| ldap.js:22:7:22:14 | username | ldap.js:64:38:64:45 | username | provenance | | +| ldap.js:22:7:22:14 | username | ldap.js:68:33:68:40 | username | provenance | | +| ldap.js:22:18:22:18 | q | ldap.js:22:7:22:14 | username | provenance | | | ldap.js:25:13:25:57 | `(\|(nam ... ame}))` | ldap.js:28:30:28:34 | opts1 | provenance | Config | | ldap.js:25:24:25:31 | username | ldap.js:25:13:25:57 | `(\|(nam ... ame}))` | provenance | | | ldap.js:25:46:25:53 | username | ldap.js:25:13:25:57 | `(\|(nam ... ame}))` | provenance | | | ldap.js:32:15:32:59 | `(\|(nam ... ame}))` | ldap.js:32:5:32:61 | { filte ... e}))` } | provenance | Config | | ldap.js:32:26:32:33 | username | ldap.js:32:15:32:59 | `(\|(nam ... ame}))` | provenance | | | ldap.js:32:48:32:55 | username | ldap.js:32:15:32:59 | `(\|(nam ... ame}))` | provenance | | -| ldap.js:63:9:65:3 | parsedFilter | ldap.js:66:40:66:51 | parsedFilter | provenance | | -| ldap.js:63:24:65:3 | ldap.pa ... ))`\\n ) | ldap.js:63:9:65:3 | parsedFilter | provenance | | +| ldap.js:63:9:63:20 | parsedFilter | ldap.js:66:40:66:51 | parsedFilter | provenance | | +| ldap.js:63:24:65:3 | ldap.pa ... ))`\\n ) | ldap.js:63:9:63:20 | parsedFilter | provenance | | | ldap.js:64:5:64:49 | `(\|(nam ... ame}))` | ldap.js:63:24:65:3 | ldap.pa ... ))`\\n ) | provenance | Config | | ldap.js:64:16:64:23 | username | ldap.js:64:5:64:49 | `(\|(nam ... ame}))` | provenance | | | ldap.js:64:38:64:45 | username | ldap.js:64:5:64:49 | `(\|(nam ... ame}))` | provenance | | | ldap.js:66:40:66:51 | parsedFilter | ldap.js:66:30:66:53 | { filte ... ilter } | provenance | Config | | ldap.js:68:33:68:40 | username | ldap.js:68:27:68:42 | `cn=${username}` | provenance | | -| marsdb-flow-to.js:10:9:10:18 | query | marsdb-flow-to.js:13:17:13:21 | query | provenance | | -| marsdb-flow-to.js:10:17:10:18 | {} | marsdb-flow-to.js:10:9:10:18 | query | provenance | | +| marsdb-flow-to.js:10:9:10:13 | query | marsdb-flow-to.js:13:17:13:21 | query | provenance | | +| marsdb-flow-to.js:10:17:10:18 | {} | marsdb-flow-to.js:10:9:10:13 | query | provenance | | | marsdb-flow-to.js:11:17:11:24 | req.body | marsdb-flow-to.js:11:17:11:30 | req.body.title | provenance | Config | -| marsdb-flow-to.js:11:17:11:30 | req.body.title | marsdb-flow-to.js:10:9:10:18 | query | provenance | Config | +| marsdb-flow-to.js:11:17:11:30 | req.body.title | marsdb-flow-to.js:10:9:10:13 | query | provenance | Config | | marsdb-flow-to.js:11:17:11:30 | req.body.title | marsdb-flow-to.js:10:17:10:18 | {} | provenance | Config | | marsdb-flow-to.js:11:17:11:30 | req.body.title | marsdb-flow-to.js:13:17:13:21 | query | provenance | Config | -| marsdb.js:12:9:12:18 | query | marsdb.js:15:12:15:16 | query | provenance | | -| marsdb.js:12:17:12:18 | {} | marsdb.js:12:9:12:18 | query | provenance | | +| marsdb.js:12:9:12:13 | query | marsdb.js:15:12:15:16 | query | provenance | | +| marsdb.js:12:17:12:18 | {} | marsdb.js:12:9:12:13 | query | provenance | | | marsdb.js:13:17:13:24 | req.body | marsdb.js:13:17:13:30 | req.body.title | provenance | Config | -| marsdb.js:13:17:13:30 | req.body.title | marsdb.js:12:9:12:18 | query | provenance | Config | +| marsdb.js:13:17:13:30 | req.body.title | marsdb.js:12:9:12:13 | query | provenance | Config | | marsdb.js:13:17:13:30 | req.body.title | marsdb.js:12:17:12:18 | {} | provenance | Config | | marsdb.js:13:17:13:30 | req.body.title | marsdb.js:15:12:15:16 | query | provenance | Config | -| minimongo.js:14:9:14:18 | query | minimongo.js:17:12:17:16 | query | provenance | | -| minimongo.js:14:17:14:18 | {} | minimongo.js:14:9:14:18 | query | provenance | | +| minimongo.js:14:9:14:13 | query | minimongo.js:17:12:17:16 | query | provenance | | +| minimongo.js:14:17:14:18 | {} | minimongo.js:14:9:14:13 | query | provenance | | | minimongo.js:15:17:15:24 | req.body | minimongo.js:15:17:15:30 | req.body.title | provenance | Config | -| minimongo.js:15:17:15:30 | req.body.title | minimongo.js:14:9:14:18 | query | provenance | Config | +| minimongo.js:15:17:15:30 | req.body.title | minimongo.js:14:9:14:13 | query | provenance | Config | | minimongo.js:15:17:15:30 | req.body.title | minimongo.js:14:17:14:18 | {} | provenance | Config | | minimongo.js:15:17:15:30 | req.body.title | minimongo.js:17:12:17:16 | query | provenance | Config | -| mongodb.js:12:11:12:20 | query | mongodb.js:13:5:13:9 | query | provenance | | -| mongodb.js:12:19:12:20 | {} | mongodb.js:12:11:12:20 | query | provenance | | +| mongodb.js:12:11:12:15 | query | mongodb.js:13:5:13:9 | query | provenance | | +| mongodb.js:12:19:12:20 | {} | mongodb.js:12:11:12:15 | query | provenance | | | mongodb.js:13:5:13:9 | query | mongodb.js:17:16:17:20 | query | provenance | | | mongodb.js:13:19:13:26 | req.body | mongodb.js:13:19:13:32 | req.body.title | provenance | Config | -| mongodb.js:13:19:13:32 | req.body.title | mongodb.js:12:11:12:20 | query | provenance | Config | +| mongodb.js:13:19:13:32 | req.body.title | mongodb.js:12:11:12:15 | query | provenance | Config | | mongodb.js:13:19:13:32 | req.body.title | mongodb.js:12:19:12:20 | {} | provenance | Config | | mongodb.js:13:19:13:32 | req.body.title | mongodb.js:13:5:13:9 | query | provenance | Config | | mongodb.js:13:19:13:32 | req.body.title | mongodb.js:17:16:17:20 | query | provenance | Config | -| mongodb.js:25:11:25:32 | title | mongodb.js:30:38:30:42 | title | provenance | | +| mongodb.js:25:11:25:15 | title | mongodb.js:30:38:30:42 | title | provenance | | | mongodb.js:25:19:25:26 | req.body | mongodb.js:25:19:25:32 | req.body.title | provenance | Config | -| mongodb.js:25:19:25:32 | req.body.title | mongodb.js:25:11:25:32 | title | provenance | | +| mongodb.js:25:19:25:32 | req.body.title | mongodb.js:25:11:25:15 | title | provenance | | | mongodb.js:30:27:30:43 | JSON.parse(title) | mongodb.js:30:18:30:45 | { title ... itle) } | provenance | Config | | mongodb.js:30:38:30:42 | title | mongodb.js:30:27:30:43 | JSON.parse(title) | provenance | Config | -| mongodb.js:46:11:46:20 | query | mongodb.js:47:5:47:9 | query | provenance | | -| mongodb.js:46:19:46:20 | {} | mongodb.js:46:11:46:20 | query | provenance | | +| mongodb.js:46:11:46:15 | query | mongodb.js:47:5:47:9 | query | provenance | | +| mongodb.js:46:19:46:20 | {} | mongodb.js:46:11:46:15 | query | provenance | | | mongodb.js:47:5:47:9 | query | mongodb.js:51:16:51:20 | query | provenance | | -| mongodb.js:47:19:47:33 | req.query.title | mongodb.js:46:11:46:20 | query | provenance | Config | +| mongodb.js:47:19:47:33 | req.query.title | mongodb.js:46:11:46:15 | query | provenance | Config | | mongodb.js:47:19:47:33 | req.query.title | mongodb.js:46:19:46:20 | {} | provenance | Config | | mongodb.js:47:19:47:33 | req.query.title | mongodb.js:47:5:47:9 | query | provenance | Config | | mongodb.js:47:19:47:33 | req.query.title | mongodb.js:51:16:51:20 | query | provenance | Config | -| mongodb.js:56:8:56:17 | query | mongodb.js:57:2:57:6 | query | provenance | | -| mongodb.js:56:16:56:17 | {} | mongodb.js:56:8:56:17 | query | provenance | | +| mongodb.js:56:8:56:12 | query | mongodb.js:57:2:57:6 | query | provenance | | +| mongodb.js:56:16:56:17 | {} | mongodb.js:56:8:56:12 | query | provenance | | | mongodb.js:57:2:57:6 | query | mongodb.js:61:12:61:16 | query | provenance | | -| mongodb.js:57:16:57:30 | req.query.title | mongodb.js:56:8:56:17 | query | provenance | Config | +| mongodb.js:57:16:57:30 | req.query.title | mongodb.js:56:8:56:12 | query | provenance | Config | | mongodb.js:57:16:57:30 | req.query.title | mongodb.js:56:16:56:17 | {} | provenance | Config | | mongodb.js:57:16:57:30 | req.query.title | mongodb.js:57:2:57:6 | query | provenance | Config | | mongodb.js:57:16:57:30 | req.query.title | mongodb.js:61:12:61:16 | query | provenance | Config | -| mongodb.js:66:7:66:25 | tag | mongodb.js:72:22:72:24 | tag | provenance | | -| mongodb.js:66:7:66:25 | tag | mongodb.js:79:20:79:22 | tag | provenance | | -| mongodb.js:66:13:66:25 | req.query.tag | mongodb.js:66:7:66:25 | tag | provenance | | +| mongodb.js:66:7:66:9 | tag | mongodb.js:72:22:72:24 | tag | provenance | | +| mongodb.js:66:7:66:9 | tag | mongodb.js:79:20:79:22 | tag | provenance | | +| mongodb.js:66:13:66:25 | req.query.tag | mongodb.js:66:7:66:9 | tag | provenance | | | mongodb.js:72:22:72:24 | tag | mongodb.js:72:14:72:26 | { tags: tag } | provenance | Config | | mongodb.js:79:20:79:22 | tag | mongodb.js:79:12:79:24 | { tags: tag } | provenance | Config | -| mongodb.js:100:9:100:18 | query | mongodb.js:101:3:101:7 | query | provenance | | -| mongodb.js:100:17:100:18 | {} | mongodb.js:100:9:100:18 | query | provenance | | +| mongodb.js:100:9:100:13 | query | mongodb.js:101:3:101:7 | query | provenance | | +| mongodb.js:100:17:100:18 | {} | mongodb.js:100:9:100:13 | query | provenance | | | mongodb.js:101:3:101:7 | query | mongodb.js:105:14:105:18 | query | provenance | | -| mongodb.js:101:17:101:29 | queries.title | mongodb.js:100:9:100:18 | query | provenance | Config | +| mongodb.js:101:17:101:29 | queries.title | mongodb.js:100:9:100:13 | query | provenance | Config | | mongodb.js:101:17:101:29 | queries.title | mongodb.js:100:17:100:18 | {} | provenance | Config | | mongodb.js:101:17:101:29 | queries.title | mongodb.js:101:3:101:7 | query | provenance | Config | | mongodb.js:101:17:101:29 | queries.title | mongodb.js:105:14:105:18 | query | provenance | Config | -| mongodb_bodySafe.js:23:11:23:20 | query | mongodb_bodySafe.js:24:5:24:9 | query | provenance | | -| mongodb_bodySafe.js:23:19:23:20 | {} | mongodb_bodySafe.js:23:11:23:20 | query | provenance | | +| mongodb_bodySafe.js:23:11:23:15 | query | mongodb_bodySafe.js:24:5:24:9 | query | provenance | | +| mongodb_bodySafe.js:23:19:23:20 | {} | mongodb_bodySafe.js:23:11:23:15 | query | provenance | | | mongodb_bodySafe.js:24:5:24:9 | query | mongodb_bodySafe.js:28:16:28:20 | query | provenance | | -| mongodb_bodySafe.js:24:19:24:33 | req.query.title | mongodb_bodySafe.js:23:11:23:20 | query | provenance | Config | +| mongodb_bodySafe.js:24:19:24:33 | req.query.title | mongodb_bodySafe.js:23:11:23:15 | query | provenance | Config | | mongodb_bodySafe.js:24:19:24:33 | req.query.title | mongodb_bodySafe.js:23:19:23:20 | {} | provenance | Config | | mongodb_bodySafe.js:24:19:24:33 | req.query.title | mongodb_bodySafe.js:24:5:24:9 | query | provenance | Config | | mongodb_bodySafe.js:24:19:24:33 | req.query.title | mongodb_bodySafe.js:28:16:28:20 | query | provenance | Config | -| mongoose.js:20:8:20:17 | query | mongoose.js:21:2:21:6 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:23:22:23:26 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:25:17:25:21 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:27:22:27:26 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:29:21:29:25 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:31:28:31:32 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:33:16:33:20 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:35:19:35:23 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:37:28:37:32 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:39:28:39:32 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:41:28:41:32 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:43:22:43:26 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:45:18:45:22 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:47:22:47:26 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:49:21:49:25 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:51:32:51:36 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:53:27:53:31 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:54:8:54:12 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:57:17:57:21 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:58:10:58:14 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:59:8:59:12 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:60:7:60:11 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:61:16:61:20 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:62:12:62:16 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:63:10:63:14 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:67:37:67:41 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:68:46:68:50 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:69:47:69:51 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:90:21:90:25 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:97:14:97:18 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:99:31:99:35 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:119:38:119:42 | query | provenance | | -| mongoose.js:20:8:20:17 | query | mongoose.js:122:30:122:34 | query | provenance | | -| mongoose.js:20:16:20:17 | {} | mongoose.js:20:8:20:17 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:21:2:21:6 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:23:22:23:26 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:25:17:25:21 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:27:22:27:26 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:29:21:29:25 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:31:28:31:32 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:33:16:33:20 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:35:19:35:23 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:37:28:37:32 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:39:28:39:32 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:41:28:41:32 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:43:22:43:26 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:45:18:45:22 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:47:22:47:26 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:49:21:49:25 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:51:32:51:36 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:53:27:53:31 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:54:8:54:12 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:57:17:57:21 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:58:10:58:14 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:59:8:59:12 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:60:7:60:11 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:61:16:61:20 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:62:12:62:16 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:63:10:63:14 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:67:37:67:41 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:68:46:68:50 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:69:47:69:51 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:90:21:90:25 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:97:14:97:18 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:99:31:99:35 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:119:38:119:42 | query | provenance | | +| mongoose.js:20:8:20:12 | query | mongoose.js:122:30:122:34 | query | provenance | | +| mongoose.js:20:16:20:17 | {} | mongoose.js:20:8:20:12 | query | provenance | | | mongoose.js:21:2:21:6 | query | mongoose.js:23:22:23:26 | query | provenance | | | mongoose.js:21:16:21:23 | req.body | mongoose.js:21:16:21:29 | req.body.title | provenance | Config | -| mongoose.js:21:16:21:29 | req.body.title | mongoose.js:20:8:20:17 | query | provenance | Config | +| mongoose.js:21:16:21:29 | req.body.title | mongoose.js:20:8:20:12 | query | provenance | Config | | mongoose.js:21:16:21:29 | req.body.title | mongoose.js:20:16:20:17 | {} | provenance | Config | | mongoose.js:21:16:21:29 | req.body.title | mongoose.js:21:2:21:6 | query | provenance | Config | | mongoose.js:21:16:21:29 | req.body.title | mongoose.js:23:22:23:26 | query | provenance | Config | @@ -423,59 +423,59 @@ edges | mongoose.js:90:21:90:25 | query | mongoose.js:97:14:97:18 | query | provenance | | | mongoose.js:97:14:97:18 | query | mongoose.js:99:31:99:35 | query | provenance | | | mongoose.js:99:31:99:35 | query | mongoose.js:119:38:119:42 | query | provenance | | -| mongoose.js:101:6:101:22 | id | mongoose.js:109:20:109:21 | id | provenance | | -| mongoose.js:101:6:101:22 | id | mongoose.js:116:23:116:24 | id | provenance | | -| mongoose.js:101:11:101:22 | req.query.id | mongoose.js:101:6:101:22 | id | provenance | | -| mongoose.js:101:25:101:45 | cond | mongoose.js:102:22:102:25 | cond | provenance | | -| mongoose.js:101:25:101:45 | cond | mongoose.js:103:21:103:24 | cond | provenance | | -| mongoose.js:101:25:101:45 | cond | mongoose.js:104:21:104:24 | cond | provenance | | -| mongoose.js:101:25:101:45 | cond | mongoose.js:105:18:105:21 | cond | provenance | | -| mongoose.js:101:25:101:45 | cond | mongoose.js:106:22:106:25 | cond | provenance | | -| mongoose.js:101:25:101:45 | cond | mongoose.js:107:16:107:19 | cond | provenance | | -| mongoose.js:101:25:101:45 | cond | mongoose.js:108:19:108:22 | cond | provenance | | -| mongoose.js:101:25:101:45 | cond | mongoose.js:110:28:110:31 | cond | provenance | | -| mongoose.js:101:25:101:45 | cond | mongoose.js:111:28:111:31 | cond | provenance | | -| mongoose.js:101:25:101:45 | cond | mongoose.js:112:28:112:31 | cond | provenance | | -| mongoose.js:101:25:101:45 | cond | mongoose.js:113:18:113:21 | cond | provenance | | -| mongoose.js:101:25:101:45 | cond | mongoose.js:114:22:114:25 | cond | provenance | | -| mongoose.js:101:25:101:45 | cond | mongoose.js:115:21:115:24 | cond | provenance | | -| mongoose.js:101:32:101:45 | req.query.cond | mongoose.js:101:25:101:45 | cond | provenance | | +| mongoose.js:101:6:101:7 | id | mongoose.js:109:20:109:21 | id | provenance | | +| mongoose.js:101:6:101:7 | id | mongoose.js:116:23:116:24 | id | provenance | | +| mongoose.js:101:11:101:22 | req.query.id | mongoose.js:101:6:101:7 | id | provenance | | +| mongoose.js:101:25:101:28 | cond | mongoose.js:102:22:102:25 | cond | provenance | | +| mongoose.js:101:25:101:28 | cond | mongoose.js:103:21:103:24 | cond | provenance | | +| mongoose.js:101:25:101:28 | cond | mongoose.js:104:21:104:24 | cond | provenance | | +| mongoose.js:101:25:101:28 | cond | mongoose.js:105:18:105:21 | cond | provenance | | +| mongoose.js:101:25:101:28 | cond | mongoose.js:106:22:106:25 | cond | provenance | | +| mongoose.js:101:25:101:28 | cond | mongoose.js:107:16:107:19 | cond | provenance | | +| mongoose.js:101:25:101:28 | cond | mongoose.js:108:19:108:22 | cond | provenance | | +| mongoose.js:101:25:101:28 | cond | mongoose.js:110:28:110:31 | cond | provenance | | +| mongoose.js:101:25:101:28 | cond | mongoose.js:111:28:111:31 | cond | provenance | | +| mongoose.js:101:25:101:28 | cond | mongoose.js:112:28:112:31 | cond | provenance | | +| mongoose.js:101:25:101:28 | cond | mongoose.js:113:18:113:21 | cond | provenance | | +| mongoose.js:101:25:101:28 | cond | mongoose.js:114:22:114:25 | cond | provenance | | +| mongoose.js:101:25:101:28 | cond | mongoose.js:115:21:115:24 | cond | provenance | | +| mongoose.js:101:32:101:45 | req.query.cond | mongoose.js:101:25:101:28 | cond | provenance | | | mongoose.js:116:23:116:24 | id | mongoose.js:116:16:116:26 | { _id: id } | provenance | Config | | mongoose.js:119:38:119:42 | query | mongoose.js:122:30:122:34 | query | provenance | | -| mongooseJsonParse.js:19:11:19:20 | query | mongooseJsonParse.js:22:19:22:23 | query | provenance | | -| mongooseJsonParse.js:19:19:19:20 | {} | mongooseJsonParse.js:19:11:19:20 | query | provenance | | +| mongooseJsonParse.js:19:11:19:15 | query | mongooseJsonParse.js:22:19:22:23 | query | provenance | | +| mongooseJsonParse.js:19:19:19:20 | {} | mongooseJsonParse.js:19:11:19:15 | query | provenance | | | mongooseJsonParse.js:20:19:20:44 | JSON.pa ... y.data) | mongooseJsonParse.js:20:19:20:50 | JSON.pa ... ).title | provenance | Config | -| mongooseJsonParse.js:20:19:20:50 | JSON.pa ... ).title | mongooseJsonParse.js:19:11:19:20 | query | provenance | Config | +| mongooseJsonParse.js:20:19:20:50 | JSON.pa ... ).title | mongooseJsonParse.js:19:11:19:15 | query | provenance | Config | | mongooseJsonParse.js:20:19:20:50 | JSON.pa ... ).title | mongooseJsonParse.js:19:19:19:20 | {} | provenance | Config | | mongooseJsonParse.js:20:19:20:50 | JSON.pa ... ).title | mongooseJsonParse.js:22:19:22:23 | query | provenance | Config | | mongooseJsonParse.js:20:30:20:43 | req.query.data | mongooseJsonParse.js:20:19:20:44 | JSON.pa ... y.data) | provenance | Config | -| mongooseModelClient.js:10:7:10:32 | v | mongooseModelClient.js:11:22:11:22 | v | provenance | | -| mongooseModelClient.js:10:11:10:32 | JSON.pa ... body.x) | mongooseModelClient.js:10:7:10:32 | v | provenance | | +| mongooseModelClient.js:10:7:10:7 | v | mongooseModelClient.js:11:22:11:22 | v | provenance | | +| mongooseModelClient.js:10:11:10:32 | JSON.pa ... body.x) | mongooseModelClient.js:10:7:10:7 | v | provenance | | | mongooseModelClient.js:10:22:10:29 | req.body | mongooseModelClient.js:10:22:10:31 | req.body.x | provenance | Config | | mongooseModelClient.js:10:22:10:31 | req.body.x | mongooseModelClient.js:10:11:10:32 | JSON.pa ... body.x) | provenance | Config | | mongooseModelClient.js:11:22:11:22 | v | mongooseModelClient.js:11:16:11:24 | { id: v } | provenance | Config | | mongooseModelClient.js:12:22:12:29 | req.body | mongooseModelClient.js:12:22:12:32 | req.body.id | provenance | Config | | mongooseModelClient.js:12:22:12:32 | req.body.id | mongooseModelClient.js:12:16:12:34 | { id: req.body.id } | provenance | Config | -| mysql.js:6:9:6:31 | temp | mysql.js:15:62:15:65 | temp | provenance | | -| mysql.js:6:9:6:31 | temp | mysql.js:19:70:19:73 | temp | provenance | | -| mysql.js:6:16:6:31 | req.params.value | mysql.js:6:9:6:31 | temp | provenance | | +| mysql.js:6:9:6:12 | temp | mysql.js:15:62:15:65 | temp | provenance | | +| mysql.js:6:9:6:12 | temp | mysql.js:19:70:19:73 | temp | provenance | | +| mysql.js:6:16:6:31 | req.params.value | mysql.js:6:9:6:12 | temp | provenance | | | mysql.js:15:62:15:65 | temp | mysql.js:15:18:15:65 | 'SELECT ... + temp | provenance | | | mysql.js:19:70:19:73 | temp | mysql.js:19:26:19:73 | 'SELECT ... + temp | provenance | | -| pg-promise-types.ts:7:9:7:28 | taint | pg-promise-types.ts:8:17:8:21 | taint | provenance | | -| pg-promise-types.ts:7:17:7:28 | req.params.x | pg-promise-types.ts:7:9:7:28 | taint | provenance | | -| pg-promise.js:6:7:7:55 | query | pg-promise.js:9:10:9:14 | query | provenance | | -| pg-promise.js:6:7:7:55 | query | pg-promise.js:10:11:10:15 | query | provenance | | -| pg-promise.js:6:7:7:55 | query | pg-promise.js:11:17:11:21 | query | provenance | | -| pg-promise.js:6:7:7:55 | query | pg-promise.js:12:10:12:14 | query | provenance | | -| pg-promise.js:6:7:7:55 | query | pg-promise.js:13:12:13:16 | query | provenance | | -| pg-promise.js:6:7:7:55 | query | pg-promise.js:14:18:14:22 | query | provenance | | -| pg-promise.js:6:7:7:55 | query | pg-promise.js:15:11:15:15 | query | provenance | | -| pg-promise.js:6:7:7:55 | query | pg-promise.js:16:10:16:14 | query | provenance | | -| pg-promise.js:6:7:7:55 | query | pg-promise.js:17:16:17:20 | query | provenance | | -| pg-promise.js:6:7:7:55 | query | pg-promise.js:18:12:18:16 | query | provenance | | -| pg-promise.js:6:7:7:55 | query | pg-promise.js:19:13:19:17 | query | provenance | | -| pg-promise.js:6:7:7:55 | query | pg-promise.js:22:11:22:15 | query | provenance | | -| pg-promise.js:7:16:7:34 | req.params.category | pg-promise.js:6:7:7:55 | query | provenance | | +| pg-promise-types.ts:7:9:7:13 | taint | pg-promise-types.ts:8:17:8:21 | taint | provenance | | +| pg-promise-types.ts:7:17:7:28 | req.params.x | pg-promise-types.ts:7:9:7:13 | taint | provenance | | +| pg-promise.js:6:7:6:11 | query | pg-promise.js:9:10:9:14 | query | provenance | | +| pg-promise.js:6:7:6:11 | query | pg-promise.js:10:11:10:15 | query | provenance | | +| pg-promise.js:6:7:6:11 | query | pg-promise.js:11:17:11:21 | query | provenance | | +| pg-promise.js:6:7:6:11 | query | pg-promise.js:12:10:12:14 | query | provenance | | +| pg-promise.js:6:7:6:11 | query | pg-promise.js:13:12:13:16 | query | provenance | | +| pg-promise.js:6:7:6:11 | query | pg-promise.js:14:18:14:22 | query | provenance | | +| pg-promise.js:6:7:6:11 | query | pg-promise.js:15:11:15:15 | query | provenance | | +| pg-promise.js:6:7:6:11 | query | pg-promise.js:16:10:16:14 | query | provenance | | +| pg-promise.js:6:7:6:11 | query | pg-promise.js:17:16:17:20 | query | provenance | | +| pg-promise.js:6:7:6:11 | query | pg-promise.js:18:12:18:16 | query | provenance | | +| pg-promise.js:6:7:6:11 | query | pg-promise.js:19:13:19:17 | query | provenance | | +| pg-promise.js:6:7:6:11 | query | pg-promise.js:22:11:22:15 | query | provenance | | +| pg-promise.js:7:16:7:34 | req.params.category | pg-promise.js:6:7:6:11 | query | provenance | | | pg-promise.js:9:10:9:14 | query | pg-promise.js:10:11:10:15 | query | provenance | | | pg-promise.js:10:11:10:15 | query | pg-promise.js:11:17:11:21 | query | provenance | | | pg-promise.js:11:17:11:21 | query | pg-promise.js:12:10:12:14 | query | provenance | | @@ -491,38 +491,38 @@ edges | pg-promise.js:22:11:22:15 | query | pg-promise.js:63:23:63:27 | query | provenance | | | pg-promise.js:22:11:22:15 | query | pg-promise.js:64:16:64:20 | query | provenance | | | redis.js:10:16:10:23 | req.body | redis.js:10:16:10:27 | req.body.key | provenance | Config | -| redis.js:12:9:12:26 | key | redis.js:13:16:13:18 | key | provenance | | -| redis.js:12:9:12:26 | key | redis.js:18:16:18:18 | key | provenance | | -| redis.js:12:9:12:26 | key | redis.js:19:43:19:45 | key | provenance | | -| redis.js:12:9:12:26 | key | redis.js:25:14:25:16 | key | provenance | | -| redis.js:12:9:12:26 | key | redis.js:26:14:26:16 | key | provenance | | -| redis.js:12:9:12:26 | key | redis.js:32:28:32:30 | key | provenance | | +| redis.js:12:9:12:11 | key | redis.js:13:16:13:18 | key | provenance | | +| redis.js:12:9:12:11 | key | redis.js:18:16:18:18 | key | provenance | | +| redis.js:12:9:12:11 | key | redis.js:19:43:19:45 | key | provenance | | +| redis.js:12:9:12:11 | key | redis.js:25:14:25:16 | key | provenance | | +| redis.js:12:9:12:11 | key | redis.js:26:14:26:16 | key | provenance | | +| redis.js:12:9:12:11 | key | redis.js:32:28:32:30 | key | provenance | | | redis.js:12:15:12:22 | req.body | redis.js:12:15:12:26 | req.body.key | provenance | Config | -| redis.js:12:15:12:26 | req.body.key | redis.js:12:9:12:26 | key | provenance | | +| redis.js:12:15:12:26 | req.body.key | redis.js:12:9:12:11 | key | provenance | | | redis.js:13:16:13:18 | key | redis.js:18:16:18:18 | key | provenance | | | redis.js:18:16:18:18 | key | redis.js:19:43:19:45 | key | provenance | | | redis.js:19:43:19:45 | key | redis.js:25:14:25:16 | key | provenance | | | redis.js:25:14:25:16 | key | redis.js:26:14:26:16 | key | provenance | | | redis.js:26:14:26:16 | key | redis.js:30:23:30:25 | key | provenance | | | redis.js:26:14:26:16 | key | redis.js:32:28:32:30 | key | provenance | | -| redis.js:38:11:38:28 | key | redis.js:39:16:39:18 | key | provenance | | -| redis.js:38:11:38:28 | key | redis.js:43:27:43:29 | key | provenance | | -| redis.js:38:11:38:28 | key | redis.js:46:34:46:36 | key | provenance | | +| redis.js:38:11:38:13 | key | redis.js:39:16:39:18 | key | provenance | | +| redis.js:38:11:38:13 | key | redis.js:43:27:43:29 | key | provenance | | +| redis.js:38:11:38:13 | key | redis.js:46:34:46:36 | key | provenance | | | redis.js:38:17:38:24 | req.body | redis.js:38:17:38:28 | req.body.key | provenance | Config | -| redis.js:38:17:38:28 | req.body.key | redis.js:38:11:38:28 | key | provenance | | +| redis.js:38:17:38:28 | req.body.key | redis.js:38:11:38:13 | key | provenance | | | socketio.js:10:25:10:30 | handle | socketio.js:11:46:11:51 | handle | provenance | | | socketio.js:11:46:11:51 | handle | socketio.js:11:12:11:53 | `INSERT ... andle}` | provenance | | | tst2.js:8:66:8:78 | req.params.id | tst2.js:8:27:8:84 | "select ... d + "'" | provenance | | -| tst3.js:7:7:8:55 | query1 | tst3.js:9:14:9:19 | query1 | provenance | | -| tst3.js:8:16:8:34 | req.params.category | tst3.js:7:7:8:55 | query1 | provenance | | +| tst3.js:7:7:7:12 | query1 | tst3.js:9:14:9:19 | query1 | provenance | | +| tst3.js:8:16:8:34 | req.params.category | tst3.js:7:7:7:12 | query1 | provenance | | | tst4.js:8:46:8:60 | $routeParams.id | tst4.js:8:10:8:66 | 'SELECT ... d + '"' | provenance | | | tst.js:10:46:10:58 | req.params.id | tst.js:10:10:10:64 | 'SELECT ... d + '"' | provenance | | nodes -| graphql.js:8:11:8:28 | id | semmle.label | id | +| graphql.js:8:11:8:12 | id | semmle.label | id | | graphql.js:8:16:8:28 | req.params.id | semmle.label | req.params.id | | graphql.js:9:34:19:5 | `\\n ... }\\n ` | semmle.label | `\\n ... }\\n ` | | graphql.js:11:46:11:47 | id | semmle.label | id | -| graphql.js:25:11:25:28 | id | semmle.label | id | +| graphql.js:25:11:25:12 | id | semmle.label | id | | graphql.js:25:16:25:28 | req.params.id | semmle.label | req.params.id | | graphql.js:26:30:26:40 | `foo ${id}` | semmle.label | `foo ${id}` | | graphql.js:26:37:26:38 | id | semmle.label | id | @@ -530,46 +530,46 @@ nodes | graphql.js:29:39:29:40 | id | semmle.label | id | | graphql.js:32:18:32:28 | `foo ${id}` | semmle.label | `foo ${id}` | | graphql.js:32:25:32:26 | id | semmle.label | id | -| graphql.js:38:11:38:28 | id | semmle.label | id | +| graphql.js:38:11:38:12 | id | semmle.label | id | | graphql.js:38:16:38:28 | req.params.id | semmle.label | req.params.id | | graphql.js:43:14:43:24 | `foo ${id}` | semmle.label | `foo ${id}` | | graphql.js:43:21:43:22 | id | semmle.label | id | | graphql.js:47:44:47:54 | `foo ${id}` | semmle.label | `foo ${id}` | | graphql.js:47:51:47:52 | id | semmle.label | id | -| graphql.js:54:11:54:28 | id | semmle.label | id | +| graphql.js:54:11:54:12 | id | semmle.label | id | | graphql.js:54:16:54:28 | req.params.id | semmle.label | req.params.id | | graphql.js:55:39:55:49 | `foo ${id}` | semmle.label | `foo ${id}` | | graphql.js:55:46:55:47 | id | semmle.label | id | | graphql.js:57:66:57:76 | `foo ${id}` | semmle.label | `foo ${id}` | | graphql.js:57:73:57:74 | id | semmle.label | id | -| graphql.js:73:9:73:25 | id | semmle.label | id | +| graphql.js:73:9:73:10 | id | semmle.label | id | | graphql.js:73:14:73:25 | req.query.id | semmle.label | req.query.id | | graphql.js:74:46:74:64 | "{ foo" + id + " }" | semmle.label | "{ foo" + id + " }" | | graphql.js:74:56:74:57 | id | semmle.label | id | | graphql.js:82:14:88:8 | `{\\n ... }` | semmle.label | `{\\n ... }` | | graphql.js:86:13:86:14 | id | semmle.label | id | -| graphql.js:117:11:117:28 | id | semmle.label | id | +| graphql.js:117:11:117:12 | id | semmle.label | id | | graphql.js:117:16:117:28 | req.params.id | semmle.label | req.params.id | | graphql.js:118:38:118:48 | `foo ${id}` | semmle.label | `foo ${id}` | | graphql.js:118:45:118:46 | id | semmle.label | id | -| hana.js:9:13:9:42 | maliciousInput | semmle.label | maliciousInput | +| hana.js:9:13:9:26 | maliciousInput | semmle.label | maliciousInput | | hana.js:9:30:9:37 | req.body | semmle.label | req.body | -| hana.js:10:15:10:80 | query | semmle.label | query | +| hana.js:10:15:10:19 | query | semmle.label | query | | hana.js:10:64:10:77 | maliciousInput | semmle.label | maliciousInput | | hana.js:11:19:11:23 | query | semmle.label | query | -| hana.js:16:15:16:44 | maliciousInput | semmle.label | maliciousInput | +| hana.js:16:15:16:28 | maliciousInput | semmle.label | maliciousInput | | hana.js:16:32:16:39 | req.body | semmle.label | req.body | | hana.js:17:35:17:100 | `SELECT ... usInput | semmle.label | `SELECT ... usInput | | hana.js:17:87:17:100 | maliciousInput | semmle.label | maliciousInput | -| hana.js:23:15:23:44 | maliciousInput | semmle.label | maliciousInput | +| hana.js:23:15:23:28 | maliciousInput | semmle.label | maliciousInput | | hana.js:23:32:23:39 | req.body | semmle.label | req.body | | hana.js:24:33:24:96 | `INSERT ... usInput | semmle.label | `INSERT ... usInput | | hana.js:24:83:24:96 | maliciousInput | semmle.label | maliciousInput | -| hana.js:30:13:30:42 | maliciousInput | semmle.label | maliciousInput | +| hana.js:30:13:30:26 | maliciousInput | semmle.label | maliciousInput | | hana.js:30:30:30:37 | req.body | semmle.label | req.body | | hana.js:31:31:31:97 | "SELECT ... usInput | semmle.label | "SELECT ... usInput | | hana.js:31:84:31:97 | maliciousInput | semmle.label | maliciousInput | -| hana.js:47:7:47:36 | maliciousInput | semmle.label | maliciousInput | +| hana.js:47:7:47:20 | maliciousInput | semmle.label | maliciousInput | | hana.js:47:24:47:31 | req.body | semmle.label | req.body | | hana.js:48:15:48:52 | 'SELECT ... usInput | semmle.label | 'SELECT ... usInput | | hana.js:48:39:48:52 | maliciousInput | semmle.label | maliciousInput | @@ -577,7 +577,7 @@ nodes | hana.js:50:76:50:89 | maliciousInput | semmle.label | maliciousInput | | hana.js:54:38:54:66 | 'PROC_D ... usInput | semmle.label | 'PROC_D ... usInput | | hana.js:54:53:54:66 | maliciousInput | semmle.label | maliciousInput | -| hana.js:68:7:68:36 | maliciousInput | semmle.label | maliciousInput | +| hana.js:68:7:68:20 | maliciousInput | semmle.label | maliciousInput | | hana.js:68:24:68:31 | req.body | semmle.label | req.body | | hana.js:71:44:71:99 | "INSERT ... usInput | semmle.label | "INSERT ... usInput | | hana.js:71:86:71:99 | maliciousInput | semmle.label | maliciousInput | @@ -592,23 +592,23 @@ nodes | hana.js:84:20:84:78 | 'select ... usInput | semmle.label | 'select ... usInput | | hana.js:84:65:84:78 | maliciousInput | semmle.label | maliciousInput | | html-sanitizer.js:13:39:13:44 | param1 | semmle.label | param1 | -| html-sanitizer.js:14:5:14:24 | param1 | semmle.label | param1 | +| html-sanitizer.js:14:5:14:10 | param1 | semmle.label | param1 | | html-sanitizer.js:14:14:14:24 | xss(param1) | semmle.label | xss(param1) | | html-sanitizer.js:14:18:14:23 | param1 | semmle.label | param1 | | html-sanitizer.js:16:9:16:59 | `SELECT ... param1 | semmle.label | `SELECT ... param1 | | html-sanitizer.js:16:54:16:59 | param1 | semmle.label | param1 | -| json-schema-validator.js:25:15:25:48 | query | semmle.label | query | +| json-schema-validator.js:25:15:25:19 | query | semmle.label | query | | json-schema-validator.js:25:23:25:48 | JSON.pa ... y.data) | semmle.label | JSON.pa ... y.data) | | json-schema-validator.js:25:34:25:47 | req.query.data | semmle.label | req.query.data | | json-schema-validator.js:33:22:33:26 | query | semmle.label | query | | json-schema-validator.js:35:18:35:22 | query | semmle.label | query | -| json-schema-validator.js:50:15:50:48 | query | semmle.label | query | +| json-schema-validator.js:50:15:50:19 | query | semmle.label | query | | json-schema-validator.js:50:23:50:48 | JSON.pa ... y.data) | semmle.label | JSON.pa ... y.data) | | json-schema-validator.js:50:34:50:47 | req.query.data | semmle.label | req.query.data | | json-schema-validator.js:55:22:55:26 | query | semmle.label | query | | json-schema-validator.js:59:22:59:26 | query | semmle.label | query | | json-schema-validator.js:61:22:61:26 | query | semmle.label | query | -| koarouter.js:5:11:5:33 | version | semmle.label | version | +| koarouter.js:5:13:5:19 | version | semmle.label | version | | koarouter.js:5:13:5:19 | version | semmle.label | version | | koarouter.js:14:9:14:18 | [post update] conditions [ArrayElement] | semmle.label | [post update] conditions [ArrayElement] | | koarouter.js:14:25:14:46 | `versio ... rsion}` | semmle.label | `versio ... rsion}` | @@ -616,10 +616,10 @@ nodes | koarouter.js:17:27:17:77 | `SELECT ... nd ')}` | semmle.label | `SELECT ... nd ')}` | | koarouter.js:17:52:17:61 | conditions [ArrayElement] | semmle.label | conditions [ArrayElement] | | koarouter.js:17:52:17:75 | conditi ... and ') | semmle.label | conditi ... and ') | -| ldap.js:20:7:20:34 | q | semmle.label | q | +| ldap.js:20:7:20:7 | q | semmle.label | q | | ldap.js:20:11:20:34 | url.par ... , true) | semmle.label | url.par ... , true) | | ldap.js:20:21:20:27 | req.url | semmle.label | req.url | -| ldap.js:22:7:22:33 | username | semmle.label | username | +| ldap.js:22:7:22:14 | username | semmle.label | username | | ldap.js:22:18:22:18 | q | semmle.label | q | | ldap.js:25:13:25:57 | `(\|(nam ... ame}))` | semmle.label | `(\|(nam ... ame}))` | | ldap.js:25:24:25:31 | username | semmle.label | username | @@ -629,7 +629,7 @@ nodes | ldap.js:32:15:32:59 | `(\|(nam ... ame}))` | semmle.label | `(\|(nam ... ame}))` | | ldap.js:32:26:32:33 | username | semmle.label | username | | ldap.js:32:48:32:55 | username | semmle.label | username | -| ldap.js:63:9:65:3 | parsedFilter | semmle.label | parsedFilter | +| ldap.js:63:9:63:20 | parsedFilter | semmle.label | parsedFilter | | ldap.js:63:24:65:3 | ldap.pa ... ))`\\n ) | semmle.label | ldap.pa ... ))`\\n ) | | ldap.js:64:5:64:49 | `(\|(nam ... ame}))` | semmle.label | `(\|(nam ... ame}))` | | ldap.js:64:16:64:23 | username | semmle.label | username | @@ -638,60 +638,60 @@ nodes | ldap.js:66:40:66:51 | parsedFilter | semmle.label | parsedFilter | | ldap.js:68:27:68:42 | `cn=${username}` | semmle.label | `cn=${username}` | | ldap.js:68:33:68:40 | username | semmle.label | username | -| marsdb-flow-to.js:10:9:10:18 | query | semmle.label | query | +| marsdb-flow-to.js:10:9:10:13 | query | semmle.label | query | | marsdb-flow-to.js:10:17:10:18 | {} | semmle.label | {} | | marsdb-flow-to.js:11:17:11:24 | req.body | semmle.label | req.body | | marsdb-flow-to.js:11:17:11:30 | req.body.title | semmle.label | req.body.title | | marsdb-flow-to.js:13:17:13:21 | query | semmle.label | query | -| marsdb.js:12:9:12:18 | query | semmle.label | query | +| marsdb.js:12:9:12:13 | query | semmle.label | query | | marsdb.js:12:17:12:18 | {} | semmle.label | {} | | marsdb.js:13:17:13:24 | req.body | semmle.label | req.body | | marsdb.js:13:17:13:30 | req.body.title | semmle.label | req.body.title | | marsdb.js:15:12:15:16 | query | semmle.label | query | -| minimongo.js:14:9:14:18 | query | semmle.label | query | +| minimongo.js:14:9:14:13 | query | semmle.label | query | | minimongo.js:14:17:14:18 | {} | semmle.label | {} | | minimongo.js:15:17:15:24 | req.body | semmle.label | req.body | | minimongo.js:15:17:15:30 | req.body.title | semmle.label | req.body.title | | minimongo.js:17:12:17:16 | query | semmle.label | query | -| mongodb.js:12:11:12:20 | query | semmle.label | query | +| mongodb.js:12:11:12:15 | query | semmle.label | query | | mongodb.js:12:19:12:20 | {} | semmle.label | {} | | mongodb.js:13:5:13:9 | query | semmle.label | query | | mongodb.js:13:19:13:26 | req.body | semmle.label | req.body | | mongodb.js:13:19:13:32 | req.body.title | semmle.label | req.body.title | | mongodb.js:17:16:17:20 | query | semmle.label | query | -| mongodb.js:25:11:25:32 | title | semmle.label | title | +| mongodb.js:25:11:25:15 | title | semmle.label | title | | mongodb.js:25:19:25:26 | req.body | semmle.label | req.body | | mongodb.js:25:19:25:32 | req.body.title | semmle.label | req.body.title | | mongodb.js:30:18:30:45 | { title ... itle) } | semmle.label | { title ... itle) } | | mongodb.js:30:27:30:43 | JSON.parse(title) | semmle.label | JSON.parse(title) | | mongodb.js:30:38:30:42 | title | semmle.label | title | -| mongodb.js:46:11:46:20 | query | semmle.label | query | +| mongodb.js:46:11:46:15 | query | semmle.label | query | | mongodb.js:46:19:46:20 | {} | semmle.label | {} | | mongodb.js:47:5:47:9 | query | semmle.label | query | | mongodb.js:47:19:47:33 | req.query.title | semmle.label | req.query.title | | mongodb.js:51:16:51:20 | query | semmle.label | query | -| mongodb.js:56:8:56:17 | query | semmle.label | query | +| mongodb.js:56:8:56:12 | query | semmle.label | query | | mongodb.js:56:16:56:17 | {} | semmle.label | {} | | mongodb.js:57:2:57:6 | query | semmle.label | query | | mongodb.js:57:16:57:30 | req.query.title | semmle.label | req.query.title | | mongodb.js:61:12:61:16 | query | semmle.label | query | -| mongodb.js:66:7:66:25 | tag | semmle.label | tag | +| mongodb.js:66:7:66:9 | tag | semmle.label | tag | | mongodb.js:66:13:66:25 | req.query.tag | semmle.label | req.query.tag | | mongodb.js:72:14:72:26 | { tags: tag } | semmle.label | { tags: tag } | | mongodb.js:72:22:72:24 | tag | semmle.label | tag | | mongodb.js:79:12:79:24 | { tags: tag } | semmle.label | { tags: tag } | | mongodb.js:79:20:79:22 | tag | semmle.label | tag | -| mongodb.js:100:9:100:18 | query | semmle.label | query | +| mongodb.js:100:9:100:13 | query | semmle.label | query | | mongodb.js:100:17:100:18 | {} | semmle.label | {} | | mongodb.js:101:3:101:7 | query | semmle.label | query | | mongodb.js:101:17:101:29 | queries.title | semmle.label | queries.title | | mongodb.js:105:14:105:18 | query | semmle.label | query | -| mongodb_bodySafe.js:23:11:23:20 | query | semmle.label | query | +| mongodb_bodySafe.js:23:11:23:15 | query | semmle.label | query | | mongodb_bodySafe.js:23:19:23:20 | {} | semmle.label | {} | | mongodb_bodySafe.js:24:5:24:9 | query | semmle.label | query | | mongodb_bodySafe.js:24:19:24:33 | req.query.title | semmle.label | req.query.title | | mongodb_bodySafe.js:28:16:28:20 | query | semmle.label | query | -| mongoose.js:20:8:20:17 | query | semmle.label | query | +| mongoose.js:20:8:20:12 | query | semmle.label | query | | mongoose.js:20:16:20:17 | {} | semmle.label | {} | | mongoose.js:21:2:21:6 | query | semmle.label | query | | mongoose.js:21:16:21:23 | req.body | semmle.label | req.body | @@ -733,9 +733,9 @@ nodes | mongoose.js:90:21:90:25 | query | semmle.label | query | | mongoose.js:97:14:97:18 | query | semmle.label | query | | mongoose.js:99:31:99:35 | query | semmle.label | query | -| mongoose.js:101:6:101:22 | id | semmle.label | id | +| mongoose.js:101:6:101:7 | id | semmle.label | id | | mongoose.js:101:11:101:22 | req.query.id | semmle.label | req.query.id | -| mongoose.js:101:25:101:45 | cond | semmle.label | cond | +| mongoose.js:101:25:101:28 | cond | semmle.label | cond | | mongoose.js:101:32:101:45 | req.query.cond | semmle.label | req.query.cond | | mongoose.js:102:22:102:25 | cond | semmle.label | cond | | mongoose.js:103:21:103:24 | cond | semmle.label | cond | @@ -755,13 +755,13 @@ nodes | mongoose.js:116:23:116:24 | id | semmle.label | id | | mongoose.js:119:38:119:42 | query | semmle.label | query | | mongoose.js:122:30:122:34 | query | semmle.label | query | -| mongooseJsonParse.js:19:11:19:20 | query | semmle.label | query | +| mongooseJsonParse.js:19:11:19:15 | query | semmle.label | query | | mongooseJsonParse.js:19:19:19:20 | {} | semmle.label | {} | | mongooseJsonParse.js:20:19:20:44 | JSON.pa ... y.data) | semmle.label | JSON.pa ... y.data) | | mongooseJsonParse.js:20:19:20:50 | JSON.pa ... ).title | semmle.label | JSON.pa ... ).title | | mongooseJsonParse.js:20:30:20:43 | req.query.data | semmle.label | req.query.data | | mongooseJsonParse.js:22:19:22:23 | query | semmle.label | query | -| mongooseModelClient.js:10:7:10:32 | v | semmle.label | v | +| mongooseModelClient.js:10:7:10:7 | v | semmle.label | v | | mongooseModelClient.js:10:11:10:32 | JSON.pa ... body.x) | semmle.label | JSON.pa ... body.x) | | mongooseModelClient.js:10:22:10:29 | req.body | semmle.label | req.body | | mongooseModelClient.js:10:22:10:31 | req.body.x | semmle.label | req.body.x | @@ -770,16 +770,16 @@ nodes | mongooseModelClient.js:12:16:12:34 | { id: req.body.id } | semmle.label | { id: req.body.id } | | mongooseModelClient.js:12:22:12:29 | req.body | semmle.label | req.body | | mongooseModelClient.js:12:22:12:32 | req.body.id | semmle.label | req.body.id | -| mysql.js:6:9:6:31 | temp | semmle.label | temp | +| mysql.js:6:9:6:12 | temp | semmle.label | temp | | mysql.js:6:16:6:31 | req.params.value | semmle.label | req.params.value | | mysql.js:15:18:15:65 | 'SELECT ... + temp | semmle.label | 'SELECT ... + temp | | mysql.js:15:62:15:65 | temp | semmle.label | temp | | mysql.js:19:26:19:73 | 'SELECT ... + temp | semmle.label | 'SELECT ... + temp | | mysql.js:19:70:19:73 | temp | semmle.label | temp | -| pg-promise-types.ts:7:9:7:28 | taint | semmle.label | taint | +| pg-promise-types.ts:7:9:7:13 | taint | semmle.label | taint | | pg-promise-types.ts:7:17:7:28 | req.params.x | semmle.label | req.params.x | | pg-promise-types.ts:8:17:8:21 | taint | semmle.label | taint | -| pg-promise.js:6:7:7:55 | query | semmle.label | query | +| pg-promise.js:6:7:6:11 | query | semmle.label | query | | pg-promise.js:7:16:7:34 | req.params.category | semmle.label | req.params.category | | pg-promise.js:9:10:9:14 | query | semmle.label | query | | pg-promise.js:10:11:10:15 | query | semmle.label | query | @@ -805,7 +805,7 @@ nodes | pg-promise.js:64:16:64:20 | query | semmle.label | query | | redis.js:10:16:10:23 | req.body | semmle.label | req.body | | redis.js:10:16:10:27 | req.body.key | semmle.label | req.body.key | -| redis.js:12:9:12:26 | key | semmle.label | key | +| redis.js:12:9:12:11 | key | semmle.label | key | | redis.js:12:15:12:22 | req.body | semmle.label | req.body | | redis.js:12:15:12:26 | req.body.key | semmle.label | req.body.key | | redis.js:13:16:13:18 | key | semmle.label | key | @@ -815,7 +815,7 @@ nodes | redis.js:26:14:26:16 | key | semmle.label | key | | redis.js:30:23:30:25 | key | semmle.label | key | | redis.js:32:28:32:30 | key | semmle.label | key | -| redis.js:38:11:38:28 | key | semmle.label | key | +| redis.js:38:11:38:13 | key | semmle.label | key | | redis.js:38:17:38:24 | req.body | semmle.label | req.body | | redis.js:38:17:38:28 | req.body.key | semmle.label | req.body.key | | redis.js:39:16:39:18 | key | semmle.label | key | @@ -826,7 +826,7 @@ nodes | socketio.js:11:46:11:51 | handle | semmle.label | handle | | tst2.js:8:27:8:84 | "select ... d + "'" | semmle.label | "select ... d + "'" | | tst2.js:8:66:8:78 | req.params.id | semmle.label | req.params.id | -| tst3.js:7:7:8:55 | query1 | semmle.label | query1 | +| tst3.js:7:7:7:12 | query1 | semmle.label | query1 | | tst3.js:8:16:8:34 | req.params.category | semmle.label | req.params.category | | tst3.js:9:14:9:19 | query1 | semmle.label | query1 | | tst4.js:8:10:8:66 | 'SELECT ... d + '"' | semmle.label | 'SELECT ... d + '"' | diff --git a/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/CodeInjection.expected b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/CodeInjection.expected index 412f0a5c5fa5..8ddaba30fc8c 100644 --- a/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/CodeInjection.expected +++ b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/CodeInjection.expected @@ -105,45 +105,45 @@ edges | express.js:6:44:6:62 | req.param("wobble") | express.js:6:24:6:69 | "return ... + "];" | provenance | | | express.js:7:54:7:72 | req.param("wobble") | express.js:7:34:7:79 | "return ... + "];" | provenance | | | express.js:9:28:9:46 | req.param("wobble") | express.js:9:8:9:53 | "return ... + "];" | provenance | | -| express.js:19:9:19:35 | taint | express.js:20:34:20:38 | taint | provenance | | -| express.js:19:17:19:35 | req.param("wobble") | express.js:19:9:19:35 | taint | provenance | | -| express.js:27:9:27:35 | taint | express.js:36:15:36:19 | taint | provenance | | -| express.js:27:17:27:35 | req.param("wobble") | express.js:27:9:27:35 | taint | provenance | | +| express.js:19:9:19:13 | taint | express.js:20:34:20:38 | taint | provenance | | +| express.js:19:17:19:35 | req.param("wobble") | express.js:19:9:19:13 | taint | provenance | | +| express.js:27:9:27:13 | taint | express.js:36:15:36:19 | taint | provenance | | +| express.js:27:17:27:35 | req.param("wobble") | express.js:27:9:27:13 | taint | provenance | | | express.js:42:30:42:32 | msg | express.js:43:10:43:12 | msg | provenance | | -| fastify.js:4:9:4:43 | userInput | fastify.js:5:44:5:52 | userInput | provenance | | -| fastify.js:4:21:4:33 | request.query | fastify.js:4:9:4:43 | userInput | provenance | | -| fastify.js:4:21:4:43 | request ... Request | fastify.js:4:9:4:43 | userInput | provenance | | -| fastify.js:9:9:9:40 | userInput | fastify.js:10:44:10:52 | userInput | provenance | | -| fastify.js:9:21:9:33 | request.query | fastify.js:9:9:9:40 | userInput | provenance | | -| fastify.js:9:21:9:40 | request.query.onSend | fastify.js:9:9:9:40 | userInput | provenance | | -| fastify.js:15:9:15:44 | userInput | fastify.js:16:44:16:52 | userInput | provenance | | -| fastify.js:15:21:15:33 | request.query | fastify.js:15:9:15:44 | userInput | provenance | | -| fastify.js:15:21:15:44 | request ... Parsing | fastify.js:15:9:15:44 | userInput | provenance | | -| fastify.js:21:9:21:47 | userInput | fastify.js:22:44:22:52 | userInput | provenance | | -| fastify.js:21:21:21:33 | request.query | fastify.js:21:9:21:47 | userInput | provenance | | -| fastify.js:21:21:21:47 | request ... idation | fastify.js:21:9:21:47 | userInput | provenance | | -| fastify.js:26:9:26:44 | userInput | fastify.js:27:44:27:52 | userInput | provenance | | -| fastify.js:26:21:26:33 | request.query | fastify.js:26:9:26:44 | userInput | provenance | | -| fastify.js:26:21:26:44 | request ... Handler | fastify.js:26:9:26:44 | userInput | provenance | | -| fastify.js:31:9:31:50 | userInput | fastify.js:32:44:32:52 | userInput | provenance | | -| fastify.js:31:21:31:33 | request.query | fastify.js:31:9:31:50 | userInput | provenance | | -| fastify.js:31:21:31:50 | request ... ization | fastify.js:31:9:31:50 | userInput | provenance | | -| fastify.js:37:9:37:44 | userInput | fastify.js:38:44:38:52 | userInput | provenance | | -| fastify.js:37:21:37:33 | request.query | fastify.js:37:9:37:44 | userInput | provenance | | -| fastify.js:37:21:37:44 | request ... esponse | fastify.js:37:9:37:44 | userInput | provenance | | -| fastify.js:42:9:42:41 | userInput | fastify.js:43:44:43:52 | userInput | provenance | | -| fastify.js:42:21:42:33 | request.query | fastify.js:42:9:42:41 | userInput | provenance | | -| fastify.js:42:21:42:41 | request ... onError | fastify.js:42:9:42:41 | userInput | provenance | | -| fastify.js:47:9:47:43 | userInput | fastify.js:48:44:48:52 | userInput | provenance | | -| fastify.js:47:21:47:33 | request.query | fastify.js:47:9:47:43 | userInput | provenance | | -| fastify.js:47:21:47:43 | request ... Timeout | fastify.js:47:9:47:43 | userInput | provenance | | -| fastify.js:52:11:52:50 | userInput | fastify.js:53:46:53:54 | userInput | provenance | | -| fastify.js:52:23:52:35 | request.query | fastify.js:52:11:52:50 | userInput | provenance | | -| fastify.js:52:23:52:50 | request ... stAbort | fastify.js:52:11:52:50 | userInput | provenance | | -| fastify.js:57:9:57:39 | userInput | fastify.js:58:44:58:52 | userInput | provenance | | -| fastify.js:57:9:57:39 | userInput | fastify.js:59:23:59:31 | userInput | provenance | | -| fastify.js:57:21:57:33 | request.query | fastify.js:57:9:57:39 | userInput | provenance | | -| fastify.js:57:21:57:39 | request.query.input | fastify.js:57:9:57:39 | userInput | provenance | | +| fastify.js:4:9:4:17 | userInput | fastify.js:5:44:5:52 | userInput | provenance | | +| fastify.js:4:21:4:33 | request.query | fastify.js:4:9:4:17 | userInput | provenance | | +| fastify.js:4:21:4:43 | request ... Request | fastify.js:4:9:4:17 | userInput | provenance | | +| fastify.js:9:9:9:17 | userInput | fastify.js:10:44:10:52 | userInput | provenance | | +| fastify.js:9:21:9:33 | request.query | fastify.js:9:9:9:17 | userInput | provenance | | +| fastify.js:9:21:9:40 | request.query.onSend | fastify.js:9:9:9:17 | userInput | provenance | | +| fastify.js:15:9:15:17 | userInput | fastify.js:16:44:16:52 | userInput | provenance | | +| fastify.js:15:21:15:33 | request.query | fastify.js:15:9:15:17 | userInput | provenance | | +| fastify.js:15:21:15:44 | request ... Parsing | fastify.js:15:9:15:17 | userInput | provenance | | +| fastify.js:21:9:21:17 | userInput | fastify.js:22:44:22:52 | userInput | provenance | | +| fastify.js:21:21:21:33 | request.query | fastify.js:21:9:21:17 | userInput | provenance | | +| fastify.js:21:21:21:47 | request ... idation | fastify.js:21:9:21:17 | userInput | provenance | | +| fastify.js:26:9:26:17 | userInput | fastify.js:27:44:27:52 | userInput | provenance | | +| fastify.js:26:21:26:33 | request.query | fastify.js:26:9:26:17 | userInput | provenance | | +| fastify.js:26:21:26:44 | request ... Handler | fastify.js:26:9:26:17 | userInput | provenance | | +| fastify.js:31:9:31:17 | userInput | fastify.js:32:44:32:52 | userInput | provenance | | +| fastify.js:31:21:31:33 | request.query | fastify.js:31:9:31:17 | userInput | provenance | | +| fastify.js:31:21:31:50 | request ... ization | fastify.js:31:9:31:17 | userInput | provenance | | +| fastify.js:37:9:37:17 | userInput | fastify.js:38:44:38:52 | userInput | provenance | | +| fastify.js:37:21:37:33 | request.query | fastify.js:37:9:37:17 | userInput | provenance | | +| fastify.js:37:21:37:44 | request ... esponse | fastify.js:37:9:37:17 | userInput | provenance | | +| fastify.js:42:9:42:17 | userInput | fastify.js:43:44:43:52 | userInput | provenance | | +| fastify.js:42:21:42:33 | request.query | fastify.js:42:9:42:17 | userInput | provenance | | +| fastify.js:42:21:42:41 | request ... onError | fastify.js:42:9:42:17 | userInput | provenance | | +| fastify.js:47:9:47:17 | userInput | fastify.js:48:44:48:52 | userInput | provenance | | +| fastify.js:47:21:47:33 | request.query | fastify.js:47:9:47:17 | userInput | provenance | | +| fastify.js:47:21:47:43 | request ... Timeout | fastify.js:47:9:47:17 | userInput | provenance | | +| fastify.js:52:11:52:19 | userInput | fastify.js:53:46:53:54 | userInput | provenance | | +| fastify.js:52:23:52:35 | request.query | fastify.js:52:11:52:19 | userInput | provenance | | +| fastify.js:52:23:52:50 | request ... stAbort | fastify.js:52:11:52:19 | userInput | provenance | | +| fastify.js:57:9:57:17 | userInput | fastify.js:58:44:58:52 | userInput | provenance | | +| fastify.js:57:9:57:17 | userInput | fastify.js:59:23:59:31 | userInput | provenance | | +| fastify.js:57:21:57:33 | request.query | fastify.js:57:9:57:17 | userInput | provenance | | +| fastify.js:57:21:57:39 | request.query.input | fastify.js:57:9:57:17 | userInput | provenance | | | fastify.js:66:24:66:36 | request.query | fastify.js:66:24:66:47 | request ... redCode | provenance | | | fastify.js:66:24:66:47 | request ... redCode | fastify.js:71:34:71:51 | request.storedCode | provenance | | | fastify.js:79:20:79:32 | request.query | fastify.js:79:20:79:42 | request ... plyCode | provenance | | @@ -151,44 +151,44 @@ edges | fastify.js:94:29:94:41 | request.query | fastify.js:94:29:94:51 | request ... plyCode | provenance | | | fastify.js:94:29:94:51 | request ... plyCode | fastify.js:99:30:99:52 | reply.l ... tedCode | provenance | | | fastify.js:94:29:94:51 | request ... plyCode | fastify.js:108:28:108:50 | reply.l ... tedCode | provenance | | -| fastify.js:106:9:106:38 | userInput | fastify.js:107:23:107:31 | userInput | provenance | | -| fastify.js:106:21:106:33 | request.query | fastify.js:106:9:106:38 | userInput | provenance | | -| fastify.js:106:21:106:38 | request.query.code | fastify.js:106:9:106:38 | userInput | provenance | | -| react-native.js:7:7:7:33 | tainted | react-native.js:8:32:8:38 | tainted | provenance | | -| react-native.js:7:7:7:33 | tainted | react-native.js:10:23:10:29 | tainted | provenance | | -| react-native.js:7:17:7:33 | req.param("code") | react-native.js:7:7:7:33 | tainted | provenance | | +| fastify.js:106:9:106:17 | userInput | fastify.js:107:23:107:31 | userInput | provenance | | +| fastify.js:106:21:106:33 | request.query | fastify.js:106:9:106:17 | userInput | provenance | | +| fastify.js:106:21:106:38 | request.query.code | fastify.js:106:9:106:17 | userInput | provenance | | +| react-native.js:7:7:7:13 | tainted | react-native.js:8:32:8:38 | tainted | provenance | | +| react-native.js:7:7:7:13 | tainted | react-native.js:10:23:10:29 | tainted | provenance | | +| react-native.js:7:17:7:33 | req.param("code") | react-native.js:7:7:7:13 | tainted | provenance | | | react-server-function.js:3:35:3:35 | x | react-server-function.js:4:12:4:12 | x | provenance | | | react-server-function.js:4:12:4:12 | x | react-server-function.js:4:12:4:29 | x + " from server" | provenance | | | react-server-function.js:4:12:4:29 | x + " from server" | react.js:24:20:24:44 | echoSer ... value") [PromiseValue] | provenance | | -| react.js:24:9:24:45 | data | react.js:25:8:25:11 | data | provenance | | -| react.js:24:16:24:45 | use(ech ... alue")) | react.js:24:9:24:45 | data | provenance | | +| react.js:24:9:24:12 | data | react.js:25:8:25:11 | data | provenance | | +| react.js:24:16:24:45 | use(ech ... alue")) | react.js:24:9:24:12 | data | provenance | | | react.js:24:20:24:44 | echoSer ... value") [PromiseValue] | react.js:24:16:24:45 | use(ech ... alue")) | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:20:17:20:23 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:21:16:21:22 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:22:18:22:24 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:23:17:23:23 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:24:18:24:24 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:25:16:25:22 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:26:27:26:33 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:27:21:27:27 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:28:17:28:23 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:29:24:29:30 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:30:21:30:27 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:31:19:31:25 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:32:16:32:22 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:33:17:33:23 | tainted | provenance | | -| template-sinks.js:18:19:18:31 | req.query.foo | template-sinks.js:18:9:18:31 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:20:17:20:23 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:21:16:21:22 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:22:18:22:24 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:23:17:23:23 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:24:18:24:24 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:25:16:25:22 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:26:27:26:33 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:27:21:27:27 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:28:17:28:23 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:29:24:29:30 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:30:21:30:27 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:31:19:31:25 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:32:16:32:22 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:33:17:33:23 | tainted | provenance | | +| template-sinks.js:18:19:18:31 | req.query.foo | template-sinks.js:18:9:18:15 | tainted | provenance | | | tst.js:1:6:1:27 | documen ... on.href | tst.js:1:6:1:83 | documen ... t=")+8) | provenance | | | tst.js:11:10:11:33 | documen ... .search | tst.js:11:10:11:74 | documen ... , "$1") | provenance | | | tst.js:17:11:17:32 | documen ... on.hash | tst.js:17:11:17:45 | documen ... ring(1) | provenance | | | tst.js:17:11:17:45 | documen ... ring(1) | tst.js:17:6:17:46 | atob(do ... ing(1)) | provenance | | | tst.js:19:26:19:40 | location.search | tst.js:19:26:19:53 | locatio ... ring(1) | provenance | | -| tst.js:22:9:22:82 | source | tst.js:24:18:24:23 | source | provenance | | -| tst.js:22:9:22:82 | source | tst.js:26:14:26:19 | source | provenance | | -| tst.js:22:9:22:82 | source | tst.js:28:28:28:33 | source | provenance | | -| tst.js:22:9:22:82 | source | tst.js:30:33:30:38 | source | provenance | | +| tst.js:22:9:22:14 | source | tst.js:24:18:24:23 | source | provenance | | +| tst.js:22:9:22:14 | source | tst.js:26:14:26:19 | source | provenance | | +| tst.js:22:9:22:14 | source | tst.js:28:28:28:33 | source | provenance | | +| tst.js:22:9:22:14 | source | tst.js:30:33:30:38 | source | provenance | | | tst.js:22:18:22:41 | documen ... .search | tst.js:22:18:22:82 | documen ... , "$1") | provenance | | -| tst.js:22:18:22:82 | documen ... , "$1") | tst.js:22:9:22:82 | source | provenance | | +| tst.js:22:18:22:82 | documen ... , "$1") | tst.js:22:9:22:14 | source | provenance | | nodes | NoSQLCodeInjection.js:18:24:18:31 | req.body | semmle.label | req.body | | NoSQLCodeInjection.js:18:24:18:37 | req.body.query | semmle.label | req.body.query | @@ -221,55 +221,55 @@ nodes | express.js:12:30:12:53 | req.par ... cript") | semmle.label | req.par ... cript") | | express.js:13:37:13:70 | req.par ... odule") | semmle.label | req.par ... odule") | | express.js:14:19:14:48 | req.par ... ntext") | semmle.label | req.par ... ntext") | -| express.js:19:9:19:35 | taint | semmle.label | taint | +| express.js:19:9:19:13 | taint | semmle.label | taint | | express.js:19:17:19:35 | req.param("wobble") | semmle.label | req.param("wobble") | | express.js:20:34:20:38 | taint | semmle.label | taint | -| express.js:27:9:27:35 | taint | semmle.label | taint | +| express.js:27:9:27:13 | taint | semmle.label | taint | | express.js:27:17:27:35 | req.param("wobble") | semmle.label | req.param("wobble") | | express.js:36:15:36:19 | taint | semmle.label | taint | | express.js:42:30:42:32 | msg | semmle.label | msg | | express.js:43:10:43:12 | msg | semmle.label | msg | -| fastify.js:4:9:4:43 | userInput | semmle.label | userInput | +| fastify.js:4:9:4:17 | userInput | semmle.label | userInput | | fastify.js:4:21:4:33 | request.query | semmle.label | request.query | | fastify.js:4:21:4:43 | request ... Request | semmle.label | request ... Request | | fastify.js:5:44:5:52 | userInput | semmle.label | userInput | -| fastify.js:9:9:9:40 | userInput | semmle.label | userInput | +| fastify.js:9:9:9:17 | userInput | semmle.label | userInput | | fastify.js:9:21:9:33 | request.query | semmle.label | request.query | | fastify.js:9:21:9:40 | request.query.onSend | semmle.label | request.query.onSend | | fastify.js:10:44:10:52 | userInput | semmle.label | userInput | -| fastify.js:15:9:15:44 | userInput | semmle.label | userInput | +| fastify.js:15:9:15:17 | userInput | semmle.label | userInput | | fastify.js:15:21:15:33 | request.query | semmle.label | request.query | | fastify.js:15:21:15:44 | request ... Parsing | semmle.label | request ... Parsing | | fastify.js:16:44:16:52 | userInput | semmle.label | userInput | -| fastify.js:21:9:21:47 | userInput | semmle.label | userInput | +| fastify.js:21:9:21:17 | userInput | semmle.label | userInput | | fastify.js:21:21:21:33 | request.query | semmle.label | request.query | | fastify.js:21:21:21:47 | request ... idation | semmle.label | request ... idation | | fastify.js:22:44:22:52 | userInput | semmle.label | userInput | -| fastify.js:26:9:26:44 | userInput | semmle.label | userInput | +| fastify.js:26:9:26:17 | userInput | semmle.label | userInput | | fastify.js:26:21:26:33 | request.query | semmle.label | request.query | | fastify.js:26:21:26:44 | request ... Handler | semmle.label | request ... Handler | | fastify.js:27:44:27:52 | userInput | semmle.label | userInput | -| fastify.js:31:9:31:50 | userInput | semmle.label | userInput | +| fastify.js:31:9:31:17 | userInput | semmle.label | userInput | | fastify.js:31:21:31:33 | request.query | semmle.label | request.query | | fastify.js:31:21:31:50 | request ... ization | semmle.label | request ... ization | | fastify.js:32:44:32:52 | userInput | semmle.label | userInput | -| fastify.js:37:9:37:44 | userInput | semmle.label | userInput | +| fastify.js:37:9:37:17 | userInput | semmle.label | userInput | | fastify.js:37:21:37:33 | request.query | semmle.label | request.query | | fastify.js:37:21:37:44 | request ... esponse | semmle.label | request ... esponse | | fastify.js:38:44:38:52 | userInput | semmle.label | userInput | -| fastify.js:42:9:42:41 | userInput | semmle.label | userInput | +| fastify.js:42:9:42:17 | userInput | semmle.label | userInput | | fastify.js:42:21:42:33 | request.query | semmle.label | request.query | | fastify.js:42:21:42:41 | request ... onError | semmle.label | request ... onError | | fastify.js:43:44:43:52 | userInput | semmle.label | userInput | -| fastify.js:47:9:47:43 | userInput | semmle.label | userInput | +| fastify.js:47:9:47:17 | userInput | semmle.label | userInput | | fastify.js:47:21:47:33 | request.query | semmle.label | request.query | | fastify.js:47:21:47:43 | request ... Timeout | semmle.label | request ... Timeout | | fastify.js:48:44:48:52 | userInput | semmle.label | userInput | -| fastify.js:52:11:52:50 | userInput | semmle.label | userInput | +| fastify.js:52:11:52:19 | userInput | semmle.label | userInput | | fastify.js:52:23:52:35 | request.query | semmle.label | request.query | | fastify.js:52:23:52:50 | request ... stAbort | semmle.label | request ... stAbort | | fastify.js:53:46:53:54 | userInput | semmle.label | userInput | -| fastify.js:57:9:57:39 | userInput | semmle.label | userInput | +| fastify.js:57:9:57:17 | userInput | semmle.label | userInput | | fastify.js:57:21:57:33 | request.query | semmle.label | request.query | | fastify.js:57:21:57:39 | request.query.input | semmle.label | request.query.input | | fastify.js:58:44:58:52 | userInput | semmle.label | userInput | @@ -283,14 +283,14 @@ nodes | fastify.js:94:29:94:41 | request.query | semmle.label | request.query | | fastify.js:94:29:94:51 | request ... plyCode | semmle.label | request ... plyCode | | fastify.js:99:30:99:52 | reply.l ... tedCode | semmle.label | reply.l ... tedCode | -| fastify.js:106:9:106:38 | userInput | semmle.label | userInput | +| fastify.js:106:9:106:17 | userInput | semmle.label | userInput | | fastify.js:106:21:106:33 | request.query | semmle.label | request.query | | fastify.js:106:21:106:38 | request.query.code | semmle.label | request.query.code | | fastify.js:107:23:107:31 | userInput | semmle.label | userInput | | fastify.js:108:28:108:50 | reply.l ... tedCode | semmle.label | reply.l ... tedCode | | module.js:9:16:9:29 | req.query.code | semmle.label | req.query.code | | module.js:11:17:11:30 | req.query.code | semmle.label | req.query.code | -| react-native.js:7:7:7:33 | tainted | semmle.label | tainted | +| react-native.js:7:7:7:13 | tainted | semmle.label | tainted | | react-native.js:7:17:7:33 | req.param("code") | semmle.label | req.param("code") | | react-native.js:8:32:8:38 | tainted | semmle.label | tainted | | react-native.js:10:23:10:29 | tainted | semmle.label | tainted | @@ -298,11 +298,11 @@ nodes | react-server-function.js:4:12:4:12 | x | semmle.label | x | | react-server-function.js:4:12:4:29 | x + " from server" | semmle.label | x + " from server" | | react.js:11:56:11:77 | documen ... on.hash | semmle.label | documen ... on.hash | -| react.js:24:9:24:45 | data | semmle.label | data | +| react.js:24:9:24:12 | data | semmle.label | data | | react.js:24:16:24:45 | use(ech ... alue")) | semmle.label | use(ech ... alue")) | | react.js:24:20:24:44 | echoSer ... value") [PromiseValue] | semmle.label | echoSer ... value") [PromiseValue] | | react.js:25:8:25:11 | data | semmle.label | data | -| template-sinks.js:18:9:18:31 | tainted | semmle.label | tainted | +| template-sinks.js:18:9:18:15 | tainted | semmle.label | tainted | | template-sinks.js:18:19:18:31 | req.query.foo | semmle.label | req.query.foo | | template-sinks.js:20:17:20:23 | tainted | semmle.label | tainted | | template-sinks.js:21:16:21:22 | tainted | semmle.label | tainted | @@ -330,7 +330,7 @@ nodes | tst.js:17:11:17:45 | documen ... ring(1) | semmle.label | documen ... ring(1) | | tst.js:19:26:19:40 | location.search | semmle.label | location.search | | tst.js:19:26:19:53 | locatio ... ring(1) | semmle.label | locatio ... ring(1) | -| tst.js:22:9:22:82 | source | semmle.label | source | +| tst.js:22:9:22:14 | source | semmle.label | source | | tst.js:22:18:22:41 | documen ... .search | semmle.label | documen ... .search | | tst.js:22:18:22:82 | documen ... , "$1") | semmle.label | documen ... , "$1") | | tst.js:24:18:24:23 | source | semmle.label | source | diff --git a/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/HeuristicSourceCodeInjection.expected b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/HeuristicSourceCodeInjection.expected index 5a249b086b97..db39855c5e5c 100644 --- a/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/HeuristicSourceCodeInjection.expected +++ b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/HeuristicSourceCodeInjection.expected @@ -6,45 +6,45 @@ edges | express.js:6:44:6:62 | req.param("wobble") | express.js:6:24:6:69 | "return ... + "];" | provenance | | | express.js:7:54:7:72 | req.param("wobble") | express.js:7:34:7:79 | "return ... + "];" | provenance | | | express.js:9:28:9:46 | req.param("wobble") | express.js:9:8:9:53 | "return ... + "];" | provenance | | -| express.js:19:9:19:35 | taint | express.js:20:34:20:38 | taint | provenance | | -| express.js:19:17:19:35 | req.param("wobble") | express.js:19:9:19:35 | taint | provenance | | -| express.js:27:9:27:35 | taint | express.js:36:15:36:19 | taint | provenance | | -| express.js:27:17:27:35 | req.param("wobble") | express.js:27:9:27:35 | taint | provenance | | +| express.js:19:9:19:13 | taint | express.js:20:34:20:38 | taint | provenance | | +| express.js:19:17:19:35 | req.param("wobble") | express.js:19:9:19:13 | taint | provenance | | +| express.js:27:9:27:13 | taint | express.js:36:15:36:19 | taint | provenance | | +| express.js:27:17:27:35 | req.param("wobble") | express.js:27:9:27:13 | taint | provenance | | | express.js:42:30:42:32 | msg | express.js:43:10:43:12 | msg | provenance | | -| fastify.js:4:9:4:43 | userInput | fastify.js:5:44:5:52 | userInput | provenance | | -| fastify.js:4:21:4:33 | request.query | fastify.js:4:9:4:43 | userInput | provenance | | -| fastify.js:4:21:4:43 | request ... Request | fastify.js:4:9:4:43 | userInput | provenance | | -| fastify.js:9:9:9:40 | userInput | fastify.js:10:44:10:52 | userInput | provenance | | -| fastify.js:9:21:9:33 | request.query | fastify.js:9:9:9:40 | userInput | provenance | | -| fastify.js:9:21:9:40 | request.query.onSend | fastify.js:9:9:9:40 | userInput | provenance | | -| fastify.js:15:9:15:44 | userInput | fastify.js:16:44:16:52 | userInput | provenance | | -| fastify.js:15:21:15:33 | request.query | fastify.js:15:9:15:44 | userInput | provenance | | -| fastify.js:15:21:15:44 | request ... Parsing | fastify.js:15:9:15:44 | userInput | provenance | | -| fastify.js:21:9:21:47 | userInput | fastify.js:22:44:22:52 | userInput | provenance | | -| fastify.js:21:21:21:33 | request.query | fastify.js:21:9:21:47 | userInput | provenance | | -| fastify.js:21:21:21:47 | request ... idation | fastify.js:21:9:21:47 | userInput | provenance | | -| fastify.js:26:9:26:44 | userInput | fastify.js:27:44:27:52 | userInput | provenance | | -| fastify.js:26:21:26:33 | request.query | fastify.js:26:9:26:44 | userInput | provenance | | -| fastify.js:26:21:26:44 | request ... Handler | fastify.js:26:9:26:44 | userInput | provenance | | -| fastify.js:31:9:31:50 | userInput | fastify.js:32:44:32:52 | userInput | provenance | | -| fastify.js:31:21:31:33 | request.query | fastify.js:31:9:31:50 | userInput | provenance | | -| fastify.js:31:21:31:50 | request ... ization | fastify.js:31:9:31:50 | userInput | provenance | | -| fastify.js:37:9:37:44 | userInput | fastify.js:38:44:38:52 | userInput | provenance | | -| fastify.js:37:21:37:33 | request.query | fastify.js:37:9:37:44 | userInput | provenance | | -| fastify.js:37:21:37:44 | request ... esponse | fastify.js:37:9:37:44 | userInput | provenance | | -| fastify.js:42:9:42:41 | userInput | fastify.js:43:44:43:52 | userInput | provenance | | -| fastify.js:42:21:42:33 | request.query | fastify.js:42:9:42:41 | userInput | provenance | | -| fastify.js:42:21:42:41 | request ... onError | fastify.js:42:9:42:41 | userInput | provenance | | -| fastify.js:47:9:47:43 | userInput | fastify.js:48:44:48:52 | userInput | provenance | | -| fastify.js:47:21:47:33 | request.query | fastify.js:47:9:47:43 | userInput | provenance | | -| fastify.js:47:21:47:43 | request ... Timeout | fastify.js:47:9:47:43 | userInput | provenance | | -| fastify.js:52:11:52:50 | userInput | fastify.js:53:46:53:54 | userInput | provenance | | -| fastify.js:52:23:52:35 | request.query | fastify.js:52:11:52:50 | userInput | provenance | | -| fastify.js:52:23:52:50 | request ... stAbort | fastify.js:52:11:52:50 | userInput | provenance | | -| fastify.js:57:9:57:39 | userInput | fastify.js:58:44:58:52 | userInput | provenance | | -| fastify.js:57:9:57:39 | userInput | fastify.js:59:23:59:31 | userInput | provenance | | -| fastify.js:57:21:57:33 | request.query | fastify.js:57:9:57:39 | userInput | provenance | | -| fastify.js:57:21:57:39 | request.query.input | fastify.js:57:9:57:39 | userInput | provenance | | +| fastify.js:4:9:4:17 | userInput | fastify.js:5:44:5:52 | userInput | provenance | | +| fastify.js:4:21:4:33 | request.query | fastify.js:4:9:4:17 | userInput | provenance | | +| fastify.js:4:21:4:43 | request ... Request | fastify.js:4:9:4:17 | userInput | provenance | | +| fastify.js:9:9:9:17 | userInput | fastify.js:10:44:10:52 | userInput | provenance | | +| fastify.js:9:21:9:33 | request.query | fastify.js:9:9:9:17 | userInput | provenance | | +| fastify.js:9:21:9:40 | request.query.onSend | fastify.js:9:9:9:17 | userInput | provenance | | +| fastify.js:15:9:15:17 | userInput | fastify.js:16:44:16:52 | userInput | provenance | | +| fastify.js:15:21:15:33 | request.query | fastify.js:15:9:15:17 | userInput | provenance | | +| fastify.js:15:21:15:44 | request ... Parsing | fastify.js:15:9:15:17 | userInput | provenance | | +| fastify.js:21:9:21:17 | userInput | fastify.js:22:44:22:52 | userInput | provenance | | +| fastify.js:21:21:21:33 | request.query | fastify.js:21:9:21:17 | userInput | provenance | | +| fastify.js:21:21:21:47 | request ... idation | fastify.js:21:9:21:17 | userInput | provenance | | +| fastify.js:26:9:26:17 | userInput | fastify.js:27:44:27:52 | userInput | provenance | | +| fastify.js:26:21:26:33 | request.query | fastify.js:26:9:26:17 | userInput | provenance | | +| fastify.js:26:21:26:44 | request ... Handler | fastify.js:26:9:26:17 | userInput | provenance | | +| fastify.js:31:9:31:17 | userInput | fastify.js:32:44:32:52 | userInput | provenance | | +| fastify.js:31:21:31:33 | request.query | fastify.js:31:9:31:17 | userInput | provenance | | +| fastify.js:31:21:31:50 | request ... ization | fastify.js:31:9:31:17 | userInput | provenance | | +| fastify.js:37:9:37:17 | userInput | fastify.js:38:44:38:52 | userInput | provenance | | +| fastify.js:37:21:37:33 | request.query | fastify.js:37:9:37:17 | userInput | provenance | | +| fastify.js:37:21:37:44 | request ... esponse | fastify.js:37:9:37:17 | userInput | provenance | | +| fastify.js:42:9:42:17 | userInput | fastify.js:43:44:43:52 | userInput | provenance | | +| fastify.js:42:21:42:33 | request.query | fastify.js:42:9:42:17 | userInput | provenance | | +| fastify.js:42:21:42:41 | request ... onError | fastify.js:42:9:42:17 | userInput | provenance | | +| fastify.js:47:9:47:17 | userInput | fastify.js:48:44:48:52 | userInput | provenance | | +| fastify.js:47:21:47:33 | request.query | fastify.js:47:9:47:17 | userInput | provenance | | +| fastify.js:47:21:47:43 | request ... Timeout | fastify.js:47:9:47:17 | userInput | provenance | | +| fastify.js:52:11:52:19 | userInput | fastify.js:53:46:53:54 | userInput | provenance | | +| fastify.js:52:23:52:35 | request.query | fastify.js:52:11:52:19 | userInput | provenance | | +| fastify.js:52:23:52:50 | request ... stAbort | fastify.js:52:11:52:19 | userInput | provenance | | +| fastify.js:57:9:57:17 | userInput | fastify.js:58:44:58:52 | userInput | provenance | | +| fastify.js:57:9:57:17 | userInput | fastify.js:59:23:59:31 | userInput | provenance | | +| fastify.js:57:21:57:33 | request.query | fastify.js:57:9:57:17 | userInput | provenance | | +| fastify.js:57:21:57:39 | request.query.input | fastify.js:57:9:57:17 | userInput | provenance | | | fastify.js:66:24:66:36 | request.query | fastify.js:66:24:66:47 | request ... redCode | provenance | | | fastify.js:66:24:66:47 | request ... redCode | fastify.js:71:34:71:51 | request.storedCode | provenance | | | fastify.js:79:20:79:32 | request.query | fastify.js:79:20:79:42 | request ... plyCode | provenance | | @@ -52,44 +52,44 @@ edges | fastify.js:94:29:94:41 | request.query | fastify.js:94:29:94:51 | request ... plyCode | provenance | | | fastify.js:94:29:94:51 | request ... plyCode | fastify.js:99:30:99:52 | reply.l ... tedCode | provenance | | | fastify.js:94:29:94:51 | request ... plyCode | fastify.js:108:28:108:50 | reply.l ... tedCode | provenance | | -| fastify.js:106:9:106:38 | userInput | fastify.js:107:23:107:31 | userInput | provenance | | -| fastify.js:106:21:106:33 | request.query | fastify.js:106:9:106:38 | userInput | provenance | | -| fastify.js:106:21:106:38 | request.query.code | fastify.js:106:9:106:38 | userInput | provenance | | -| react-native.js:7:7:7:33 | tainted | react-native.js:8:32:8:38 | tainted | provenance | | -| react-native.js:7:7:7:33 | tainted | react-native.js:10:23:10:29 | tainted | provenance | | -| react-native.js:7:17:7:33 | req.param("code") | react-native.js:7:7:7:33 | tainted | provenance | | +| fastify.js:106:9:106:17 | userInput | fastify.js:107:23:107:31 | userInput | provenance | | +| fastify.js:106:21:106:33 | request.query | fastify.js:106:9:106:17 | userInput | provenance | | +| fastify.js:106:21:106:38 | request.query.code | fastify.js:106:9:106:17 | userInput | provenance | | +| react-native.js:7:7:7:13 | tainted | react-native.js:8:32:8:38 | tainted | provenance | | +| react-native.js:7:7:7:13 | tainted | react-native.js:10:23:10:29 | tainted | provenance | | +| react-native.js:7:17:7:33 | req.param("code") | react-native.js:7:7:7:13 | tainted | provenance | | | react-server-function.js:3:35:3:35 | x | react-server-function.js:4:12:4:12 | x | provenance | | | react-server-function.js:4:12:4:12 | x | react-server-function.js:4:12:4:29 | x + " from server" | provenance | | | react-server-function.js:4:12:4:29 | x + " from server" | react.js:24:20:24:44 | echoSer ... value") [PromiseValue] | provenance | | -| react.js:24:9:24:45 | data | react.js:25:8:25:11 | data | provenance | | -| react.js:24:16:24:45 | use(ech ... alue")) | react.js:24:9:24:45 | data | provenance | | +| react.js:24:9:24:12 | data | react.js:25:8:25:11 | data | provenance | | +| react.js:24:16:24:45 | use(ech ... alue")) | react.js:24:9:24:12 | data | provenance | | | react.js:24:20:24:44 | echoSer ... value") [PromiseValue] | react.js:24:16:24:45 | use(ech ... alue")) | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:20:17:20:23 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:21:16:21:22 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:22:18:22:24 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:23:17:23:23 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:24:18:24:24 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:25:16:25:22 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:26:27:26:33 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:27:21:27:27 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:28:17:28:23 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:29:24:29:30 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:30:21:30:27 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:31:19:31:25 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:32:16:32:22 | tainted | provenance | | -| template-sinks.js:18:9:18:31 | tainted | template-sinks.js:33:17:33:23 | tainted | provenance | | -| template-sinks.js:18:19:18:31 | req.query.foo | template-sinks.js:18:9:18:31 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:20:17:20:23 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:21:16:21:22 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:22:18:22:24 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:23:17:23:23 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:24:18:24:24 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:25:16:25:22 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:26:27:26:33 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:27:21:27:27 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:28:17:28:23 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:29:24:29:30 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:30:21:30:27 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:31:19:31:25 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:32:16:32:22 | tainted | provenance | | +| template-sinks.js:18:9:18:15 | tainted | template-sinks.js:33:17:33:23 | tainted | provenance | | +| template-sinks.js:18:19:18:31 | req.query.foo | template-sinks.js:18:9:18:15 | tainted | provenance | | | tst.js:1:6:1:27 | documen ... on.href | tst.js:1:6:1:83 | documen ... t=")+8) | provenance | | | tst.js:11:10:11:33 | documen ... .search | tst.js:11:10:11:74 | documen ... , "$1") | provenance | | | tst.js:17:11:17:32 | documen ... on.hash | tst.js:17:11:17:45 | documen ... ring(1) | provenance | | | tst.js:17:11:17:45 | documen ... ring(1) | tst.js:17:6:17:46 | atob(do ... ing(1)) | provenance | | | tst.js:19:26:19:40 | location.search | tst.js:19:26:19:53 | locatio ... ring(1) | provenance | | -| tst.js:22:9:22:82 | source | tst.js:24:18:24:23 | source | provenance | | -| tst.js:22:9:22:82 | source | tst.js:26:14:26:19 | source | provenance | | -| tst.js:22:9:22:82 | source | tst.js:28:28:28:33 | source | provenance | | -| tst.js:22:9:22:82 | source | tst.js:30:33:30:38 | source | provenance | | +| tst.js:22:9:22:14 | source | tst.js:24:18:24:23 | source | provenance | | +| tst.js:22:9:22:14 | source | tst.js:26:14:26:19 | source | provenance | | +| tst.js:22:9:22:14 | source | tst.js:28:28:28:33 | source | provenance | | +| tst.js:22:9:22:14 | source | tst.js:30:33:30:38 | source | provenance | | | tst.js:22:18:22:41 | documen ... .search | tst.js:22:18:22:82 | documen ... , "$1") | provenance | | -| tst.js:22:18:22:82 | documen ... , "$1") | tst.js:22:9:22:82 | source | provenance | | +| tst.js:22:18:22:82 | documen ... , "$1") | tst.js:22:9:22:14 | source | provenance | | nodes | NoSQLCodeInjection.js:18:24:18:31 | req.body | semmle.label | req.body | | NoSQLCodeInjection.js:18:24:18:37 | req.body.query | semmle.label | req.body.query | @@ -124,55 +124,55 @@ nodes | express.js:12:30:12:53 | req.par ... cript") | semmle.label | req.par ... cript") | | express.js:13:37:13:70 | req.par ... odule") | semmle.label | req.par ... odule") | | express.js:14:19:14:48 | req.par ... ntext") | semmle.label | req.par ... ntext") | -| express.js:19:9:19:35 | taint | semmle.label | taint | +| express.js:19:9:19:13 | taint | semmle.label | taint | | express.js:19:17:19:35 | req.param("wobble") | semmle.label | req.param("wobble") | | express.js:20:34:20:38 | taint | semmle.label | taint | -| express.js:27:9:27:35 | taint | semmle.label | taint | +| express.js:27:9:27:13 | taint | semmle.label | taint | | express.js:27:17:27:35 | req.param("wobble") | semmle.label | req.param("wobble") | | express.js:36:15:36:19 | taint | semmle.label | taint | | express.js:42:30:42:32 | msg | semmle.label | msg | | express.js:43:10:43:12 | msg | semmle.label | msg | -| fastify.js:4:9:4:43 | userInput | semmle.label | userInput | +| fastify.js:4:9:4:17 | userInput | semmle.label | userInput | | fastify.js:4:21:4:33 | request.query | semmle.label | request.query | | fastify.js:4:21:4:43 | request ... Request | semmle.label | request ... Request | | fastify.js:5:44:5:52 | userInput | semmle.label | userInput | -| fastify.js:9:9:9:40 | userInput | semmle.label | userInput | +| fastify.js:9:9:9:17 | userInput | semmle.label | userInput | | fastify.js:9:21:9:33 | request.query | semmle.label | request.query | | fastify.js:9:21:9:40 | request.query.onSend | semmle.label | request.query.onSend | | fastify.js:10:44:10:52 | userInput | semmle.label | userInput | -| fastify.js:15:9:15:44 | userInput | semmle.label | userInput | +| fastify.js:15:9:15:17 | userInput | semmle.label | userInput | | fastify.js:15:21:15:33 | request.query | semmle.label | request.query | | fastify.js:15:21:15:44 | request ... Parsing | semmle.label | request ... Parsing | | fastify.js:16:44:16:52 | userInput | semmle.label | userInput | -| fastify.js:21:9:21:47 | userInput | semmle.label | userInput | +| fastify.js:21:9:21:17 | userInput | semmle.label | userInput | | fastify.js:21:21:21:33 | request.query | semmle.label | request.query | | fastify.js:21:21:21:47 | request ... idation | semmle.label | request ... idation | | fastify.js:22:44:22:52 | userInput | semmle.label | userInput | -| fastify.js:26:9:26:44 | userInput | semmle.label | userInput | +| fastify.js:26:9:26:17 | userInput | semmle.label | userInput | | fastify.js:26:21:26:33 | request.query | semmle.label | request.query | | fastify.js:26:21:26:44 | request ... Handler | semmle.label | request ... Handler | | fastify.js:27:44:27:52 | userInput | semmle.label | userInput | -| fastify.js:31:9:31:50 | userInput | semmle.label | userInput | +| fastify.js:31:9:31:17 | userInput | semmle.label | userInput | | fastify.js:31:21:31:33 | request.query | semmle.label | request.query | | fastify.js:31:21:31:50 | request ... ization | semmle.label | request ... ization | | fastify.js:32:44:32:52 | userInput | semmle.label | userInput | -| fastify.js:37:9:37:44 | userInput | semmle.label | userInput | +| fastify.js:37:9:37:17 | userInput | semmle.label | userInput | | fastify.js:37:21:37:33 | request.query | semmle.label | request.query | | fastify.js:37:21:37:44 | request ... esponse | semmle.label | request ... esponse | | fastify.js:38:44:38:52 | userInput | semmle.label | userInput | -| fastify.js:42:9:42:41 | userInput | semmle.label | userInput | +| fastify.js:42:9:42:17 | userInput | semmle.label | userInput | | fastify.js:42:21:42:33 | request.query | semmle.label | request.query | | fastify.js:42:21:42:41 | request ... onError | semmle.label | request ... onError | | fastify.js:43:44:43:52 | userInput | semmle.label | userInput | -| fastify.js:47:9:47:43 | userInput | semmle.label | userInput | +| fastify.js:47:9:47:17 | userInput | semmle.label | userInput | | fastify.js:47:21:47:33 | request.query | semmle.label | request.query | | fastify.js:47:21:47:43 | request ... Timeout | semmle.label | request ... Timeout | | fastify.js:48:44:48:52 | userInput | semmle.label | userInput | -| fastify.js:52:11:52:50 | userInput | semmle.label | userInput | +| fastify.js:52:11:52:19 | userInput | semmle.label | userInput | | fastify.js:52:23:52:35 | request.query | semmle.label | request.query | | fastify.js:52:23:52:50 | request ... stAbort | semmle.label | request ... stAbort | | fastify.js:53:46:53:54 | userInput | semmle.label | userInput | -| fastify.js:57:9:57:39 | userInput | semmle.label | userInput | +| fastify.js:57:9:57:17 | userInput | semmle.label | userInput | | fastify.js:57:21:57:33 | request.query | semmle.label | request.query | | fastify.js:57:21:57:39 | request.query.input | semmle.label | request.query.input | | fastify.js:58:44:58:52 | userInput | semmle.label | userInput | @@ -186,14 +186,14 @@ nodes | fastify.js:94:29:94:41 | request.query | semmle.label | request.query | | fastify.js:94:29:94:51 | request ... plyCode | semmle.label | request ... plyCode | | fastify.js:99:30:99:52 | reply.l ... tedCode | semmle.label | reply.l ... tedCode | -| fastify.js:106:9:106:38 | userInput | semmle.label | userInput | +| fastify.js:106:9:106:17 | userInput | semmle.label | userInput | | fastify.js:106:21:106:33 | request.query | semmle.label | request.query | | fastify.js:106:21:106:38 | request.query.code | semmle.label | request.query.code | | fastify.js:107:23:107:31 | userInput | semmle.label | userInput | | fastify.js:108:28:108:50 | reply.l ... tedCode | semmle.label | reply.l ... tedCode | | module.js:9:16:9:29 | req.query.code | semmle.label | req.query.code | | module.js:11:17:11:30 | req.query.code | semmle.label | req.query.code | -| react-native.js:7:7:7:33 | tainted | semmle.label | tainted | +| react-native.js:7:7:7:13 | tainted | semmle.label | tainted | | react-native.js:7:17:7:33 | req.param("code") | semmle.label | req.param("code") | | react-native.js:8:32:8:38 | tainted | semmle.label | tainted | | react-native.js:10:23:10:29 | tainted | semmle.label | tainted | @@ -201,11 +201,11 @@ nodes | react-server-function.js:4:12:4:12 | x | semmle.label | x | | react-server-function.js:4:12:4:29 | x + " from server" | semmle.label | x + " from server" | | react.js:11:56:11:77 | documen ... on.hash | semmle.label | documen ... on.hash | -| react.js:24:9:24:45 | data | semmle.label | data | +| react.js:24:9:24:12 | data | semmle.label | data | | react.js:24:16:24:45 | use(ech ... alue")) | semmle.label | use(ech ... alue")) | | react.js:24:20:24:44 | echoSer ... value") [PromiseValue] | semmle.label | echoSer ... value") [PromiseValue] | | react.js:25:8:25:11 | data | semmle.label | data | -| template-sinks.js:18:9:18:31 | tainted | semmle.label | tainted | +| template-sinks.js:18:9:18:15 | tainted | semmle.label | tainted | | template-sinks.js:18:19:18:31 | req.query.foo | semmle.label | req.query.foo | | template-sinks.js:20:17:20:23 | tainted | semmle.label | tainted | | template-sinks.js:21:16:21:22 | tainted | semmle.label | tainted | @@ -233,7 +233,7 @@ nodes | tst.js:17:11:17:45 | documen ... ring(1) | semmle.label | documen ... ring(1) | | tst.js:19:26:19:40 | location.search | semmle.label | location.search | | tst.js:19:26:19:53 | locatio ... ring(1) | semmle.label | locatio ... ring(1) | -| tst.js:22:9:22:82 | source | semmle.label | source | +| tst.js:22:9:22:14 | source | semmle.label | source | | tst.js:22:18:22:41 | documen ... .search | semmle.label | documen ... .search | | tst.js:22:18:22:82 | documen ... , "$1") | semmle.label | documen ... , "$1") | | tst.js:24:18:24:23 | source | semmle.label | source | diff --git a/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/ImproperCodeSanitization.expected b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/ImproperCodeSanitization.expected index 84c50efddc96..ff58ba1fedcc 100644 --- a/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/ImproperCodeSanitization.expected +++ b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/ImproperCodeSanitization.expected @@ -14,8 +14,8 @@ edges | bad-code-sanitization.js:7:21:7:70 | `${name ... key])}` | bad-code-sanitization.js:7:5:7:14 | [post update] statements [ArrayElement] | provenance | | | bad-code-sanitization.js:7:31:7:43 | safeProp(key) | bad-code-sanitization.js:7:21:7:70 | `${name ... key])}` | provenance | | | bad-code-sanitization.js:8:27:8:36 | statements [ArrayElement] | bad-code-sanitization.js:8:27:8:46 | statements.join(';') | provenance | | -| bad-code-sanitization.js:63:11:63:55 | assignment | bad-code-sanitization.js:64:27:64:36 | assignment | provenance | | -| bad-code-sanitization.js:63:31:63:49 | JSON.stringify(key) | bad-code-sanitization.js:63:11:63:55 | assignment | provenance | | +| bad-code-sanitization.js:63:11:63:20 | assignment | bad-code-sanitization.js:64:27:64:36 | assignment | provenance | | +| bad-code-sanitization.js:63:31:63:49 | JSON.stringify(key) | bad-code-sanitization.js:63:11:63:20 | assignment | provenance | | nodes | bad-code-sanitization.js:2:12:2:90 | /^[_$a- ... key)}]` | semmle.label | /^[_$a- ... key)}]` | | bad-code-sanitization.js:2:69:2:87 | JSON.stringify(key) | semmle.label | JSON.stringify(key) | @@ -32,7 +32,7 @@ nodes | bad-code-sanitization.js:52:28:52:62 | JSON.st ... bble")) | semmle.label | JSON.st ... bble")) | | bad-code-sanitization.js:54:29:54:63 | JSON.st ... bble")) | semmle.label | JSON.st ... bble")) | | bad-code-sanitization.js:58:29:58:49 | JSON.st ... (taint) | semmle.label | JSON.st ... (taint) | -| bad-code-sanitization.js:63:11:63:55 | assignment | semmle.label | assignment | +| bad-code-sanitization.js:63:11:63:20 | assignment | semmle.label | assignment | | bad-code-sanitization.js:63:31:63:49 | JSON.stringify(key) | semmle.label | JSON.stringify(key) | | bad-code-sanitization.js:64:27:64:36 | assignment | semmle.label | assignment | subpaths diff --git a/javascript/ql/test/query-tests/Security/CWE-094/UnsafeDynamicMethodAccess/UnsafeDynamicMethodAccess.expected b/javascript/ql/test/query-tests/Security/CWE-094/UnsafeDynamicMethodAccess/UnsafeDynamicMethodAccess.expected index bddb28457097..f6a518629d2e 100644 --- a/javascript/ql/test/query-tests/Security/CWE-094/UnsafeDynamicMethodAccess/UnsafeDynamicMethodAccess.expected +++ b/javascript/ql/test/query-tests/Security/CWE-094/UnsafeDynamicMethodAccess/UnsafeDynamicMethodAccess.expected @@ -7,19 +7,19 @@ | tst.js:21:5:21:29 | window[ ... e.name] | tst.js:3:37:3:38 | ev | tst.js:21:5:21:29 | window[ ... e.name] | This method is invoked using a $@, which may allow remote code execution. | tst.js:3:37:3:38 | ev | user-controlled value | edges | example.js:9:37:9:38 | ev | example.js:10:30:10:31 | ev | provenance | | -| example.js:10:9:10:37 | message | example.js:13:12:13:18 | message | provenance | | -| example.js:10:19:10:37 | JSON.parse(ev.data) | example.js:10:9:10:37 | message | provenance | | +| example.js:10:9:10:15 | message | example.js:13:12:13:18 | message | provenance | | +| example.js:10:19:10:37 | JSON.parse(ev.data) | example.js:10:9:10:15 | message | provenance | | | example.js:10:30:10:31 | ev | example.js:10:30:10:36 | ev.data | provenance | Config | | example.js:10:30:10:36 | ev.data | example.js:10:19:10:37 | JSON.parse(ev.data) | provenance | Config | | example.js:13:12:13:18 | message | example.js:13:12:13:23 | message.name | provenance | Config | | example.js:13:12:13:23 | message.name | example.js:13:5:13:24 | window[message.name] | provenance | Config | | tst.js:3:37:3:38 | ev | tst.js:4:30:4:31 | ev | provenance | | | tst.js:3:37:3:38 | ev | tst.js:15:12:15:13 | ev | provenance | | -| tst.js:4:9:4:37 | message | tst.js:5:12:5:18 | message | provenance | | -| tst.js:4:9:4:37 | message | tst.js:6:16:6:22 | message | provenance | | -| tst.js:4:9:4:37 | message | tst.js:11:7:11:13 | message | provenance | | -| tst.js:4:9:4:37 | message | tst.js:21:17:21:23 | message | provenance | | -| tst.js:4:19:4:37 | JSON.parse(ev.data) | tst.js:4:9:4:37 | message | provenance | | +| tst.js:4:9:4:15 | message | tst.js:5:12:5:18 | message | provenance | | +| tst.js:4:9:4:15 | message | tst.js:6:16:6:22 | message | provenance | | +| tst.js:4:9:4:15 | message | tst.js:11:7:11:13 | message | provenance | | +| tst.js:4:9:4:15 | message | tst.js:21:17:21:23 | message | provenance | | +| tst.js:4:19:4:37 | JSON.parse(ev.data) | tst.js:4:9:4:15 | message | provenance | | | tst.js:4:30:4:31 | ev | tst.js:4:30:4:36 | ev.data | provenance | Config | | tst.js:4:30:4:36 | ev.data | tst.js:4:19:4:37 | JSON.parse(ev.data) | provenance | Config | | tst.js:5:12:5:18 | message | tst.js:5:12:5:23 | message.name | provenance | Config | @@ -34,7 +34,7 @@ edges | tst.js:21:17:21:28 | message.name | tst.js:21:12:21:28 | '' + message.name | provenance | Config | nodes | example.js:9:37:9:38 | ev | semmle.label | ev | -| example.js:10:9:10:37 | message | semmle.label | message | +| example.js:10:9:10:15 | message | semmle.label | message | | example.js:10:19:10:37 | JSON.parse(ev.data) | semmle.label | JSON.parse(ev.data) | | example.js:10:30:10:31 | ev | semmle.label | ev | | example.js:10:30:10:36 | ev.data | semmle.label | ev.data | @@ -42,7 +42,7 @@ nodes | example.js:13:12:13:18 | message | semmle.label | message | | example.js:13:12:13:23 | message.name | semmle.label | message.name | | tst.js:3:37:3:38 | ev | semmle.label | ev | -| tst.js:4:9:4:37 | message | semmle.label | message | +| tst.js:4:9:4:15 | message | semmle.label | message | | tst.js:4:19:4:37 | JSON.parse(ev.data) | semmle.label | JSON.parse(ev.data) | | tst.js:4:30:4:31 | ev | semmle.label | ev | | tst.js:4:30:4:36 | ev.data | semmle.label | ev.data | diff --git a/javascript/ql/test/query-tests/Security/CWE-116/IncompleteSanitization/IncompleteHtmlAttributeSanitization.expected b/javascript/ql/test/query-tests/Security/CWE-116/IncompleteSanitization/IncompleteHtmlAttributeSanitization.expected index 162ff1c05993..3f1ac1685d79 100644 --- a/javascript/ql/test/query-tests/Security/CWE-116/IncompleteSanitization/IncompleteHtmlAttributeSanitization.expected +++ b/javascript/ql/test/query-tests/Security/CWE-116/IncompleteSanitization/IncompleteHtmlAttributeSanitization.expected @@ -13,8 +13,8 @@ | tst.js:303:10:303:34 | s().rep ... /g, '') | tst.js:303:10:303:34 | s().rep ... /g, '') | tst.js:303:10:303:34 | s().rep ... /g, '') | Cross-site scripting vulnerability as the output of $@ may contain single quotes when it reaches this attribute definition. | tst.js:303:10:303:34 | s().rep ... /g, '') | this final HTML sanitizer step | | tst.js:309:10:318:3 | s().rep ... ;";\\n\\t}) | tst.js:309:10:318:3 | s().rep ... ;";\\n\\t}) | tst.js:309:10:318:3 | s().rep ... ;";\\n\\t}) | Cross-site scripting vulnerability as the output of $@ may contain single quotes when it reaches this attribute definition. | tst.js:309:10:318:3 | s().rep ... ;";\\n\\t}) | this final HTML sanitizer step | edges -| tst.js:274:6:274:94 | arr | tst.js:275:9:275:11 | arr | provenance | | -| tst.js:274:12:274:94 | s().val ... g , '') | tst.js:274:6:274:94 | arr | provenance | | +| tst.js:274:6:274:8 | arr | tst.js:275:9:275:11 | arr | provenance | | +| tst.js:274:12:274:94 | s().val ... g , '') | tst.js:274:6:274:8 | arr | provenance | | | tst.js:275:9:275:11 | arr | tst.js:275:9:275:21 | arr.join(" ") | provenance | | nodes | tst.js:243:9:243:31 | s().rep ... ]/g,'') | semmle.label | s().rep ... ]/g,'') | @@ -24,7 +24,7 @@ nodes | tst.js:253:21:253:45 | s().rep ... /g, '') | semmle.label | s().rep ... /g, '') | | tst.js:254:32:254:56 | s().rep ... /g, '') | semmle.label | s().rep ... /g, '') | | tst.js:270:61:270:85 | s().rep ... /g, '') | semmle.label | s().rep ... /g, '') | -| tst.js:274:6:274:94 | arr | semmle.label | arr | +| tst.js:274:6:274:8 | arr | semmle.label | arr | | tst.js:274:12:274:94 | s().val ... g , '') | semmle.label | s().val ... g , '') | | tst.js:275:9:275:11 | arr | semmle.label | arr | | tst.js:275:9:275:21 | arr.join(" ") | semmle.label | arr.join(" ") | diff --git a/javascript/ql/test/query-tests/Security/CWE-117/LogInjection.expected b/javascript/ql/test/query-tests/Security/CWE-117/LogInjection.expected index 42417a6ac8de..6b192117593a 100644 --- a/javascript/ql/test/query-tests/Security/CWE-117/LogInjection.expected +++ b/javascript/ql/test/query-tests/Security/CWE-117/LogInjection.expected @@ -24,35 +24,35 @@ | logInjectionBad.js:129:42:129:50 | RegExp.$1 | logInjectionBad.js:128:30:128:36 | req.url | logInjectionBad.js:129:42:129:50 | RegExp.$1 | Log entry depends on a $@. | logInjectionBad.js:128:30:128:36 | req.url | user-provided value | edges | logInjectionBad.js:7:25:7:32 | username | logInjectionBad.js:8:38:8:45 | username | provenance | | -| logInjectionBad.js:19:9:19:36 | q | logInjectionBad.js:20:20:20:20 | q | provenance | | -| logInjectionBad.js:19:13:19:36 | url.par ... , true) | logInjectionBad.js:19:9:19:36 | q | provenance | | +| logInjectionBad.js:19:9:19:9 | q | logInjectionBad.js:20:20:20:20 | q | provenance | | +| logInjectionBad.js:19:13:19:36 | url.par ... , true) | logInjectionBad.js:19:9:19:9 | q | provenance | | | logInjectionBad.js:19:23:19:29 | req.url | logInjectionBad.js:19:13:19:36 | url.par ... , true) | provenance | | -| logInjectionBad.js:20:9:20:35 | username | logInjectionBad.js:22:34:22:41 | username | provenance | | -| logInjectionBad.js:20:9:20:35 | username | logInjectionBad.js:23:37:23:44 | username | provenance | | -| logInjectionBad.js:20:9:20:35 | username | logInjectionBad.js:24:35:24:42 | username | provenance | | -| logInjectionBad.js:20:9:20:35 | username | logInjectionBad.js:25:36:25:43 | username | provenance | | -| logInjectionBad.js:20:9:20:35 | username | logInjectionBad.js:28:24:28:31 | username | provenance | | -| logInjectionBad.js:20:20:20:20 | q | logInjectionBad.js:20:9:20:35 | username | provenance | | +| logInjectionBad.js:20:9:20:16 | username | logInjectionBad.js:22:34:22:41 | username | provenance | | +| logInjectionBad.js:20:9:20:16 | username | logInjectionBad.js:23:37:23:44 | username | provenance | | +| logInjectionBad.js:20:9:20:16 | username | logInjectionBad.js:24:35:24:42 | username | provenance | | +| logInjectionBad.js:20:9:20:16 | username | logInjectionBad.js:25:36:25:43 | username | provenance | | +| logInjectionBad.js:20:9:20:16 | username | logInjectionBad.js:28:24:28:31 | username | provenance | | +| logInjectionBad.js:20:20:20:20 | q | logInjectionBad.js:20:9:20:16 | username | provenance | | | logInjectionBad.js:22:34:22:41 | username | logInjectionBad.js:22:18:22:43 | `[INFO] ... rname}` | provenance | | | logInjectionBad.js:28:9:28:32 | exceptional return of check_u ... ername) | logInjectionBad.js:29:14:29:18 | error | provenance | | | logInjectionBad.js:28:24:28:31 | username | logInjectionBad.js:7:25:7:32 | username | provenance | | | logInjectionBad.js:28:24:28:31 | username | logInjectionBad.js:28:9:28:32 | exceptional return of check_u ... ername) | provenance | | | logInjectionBad.js:29:14:29:18 | error | logInjectionBad.js:30:42:30:46 | error | provenance | | | logInjectionBad.js:30:42:30:46 | error | logInjectionBad.js:30:23:30:49 | `[ERROR ... rror}"` | provenance | | -| logInjectionBad.js:46:9:46:36 | q | logInjectionBad.js:47:20:47:20 | q | provenance | | -| logInjectionBad.js:46:13:46:36 | url.par ... , true) | logInjectionBad.js:46:9:46:36 | q | provenance | | +| logInjectionBad.js:46:9:46:9 | q | logInjectionBad.js:47:20:47:20 | q | provenance | | +| logInjectionBad.js:46:13:46:36 | url.par ... , true) | logInjectionBad.js:46:9:46:9 | q | provenance | | | logInjectionBad.js:46:23:46:29 | req.url | logInjectionBad.js:46:13:46:36 | url.par ... , true) | provenance | | -| logInjectionBad.js:47:9:47:35 | username | logInjectionBad.js:49:46:49:53 | username | provenance | | -| logInjectionBad.js:47:9:47:35 | username | logInjectionBad.js:50:39:50:46 | username | provenance | | -| logInjectionBad.js:47:9:47:35 | username | logInjectionBad.js:51:48:51:55 | username | provenance | | -| logInjectionBad.js:47:9:47:35 | username | logInjectionBad.js:52:37:52:44 | username | provenance | | -| logInjectionBad.js:47:9:47:35 | username | logInjectionBad.js:53:27:53:34 | username | provenance | | -| logInjectionBad.js:47:9:47:35 | username | logInjectionBad.js:54:43:54:50 | username | provenance | | -| logInjectionBad.js:47:9:47:35 | username | logInjectionBad.js:55:48:55:55 | username | provenance | | -| logInjectionBad.js:47:9:47:35 | username | logInjectionBad.js:56:47:56:54 | username | provenance | | -| logInjectionBad.js:47:9:47:35 | username | logInjectionBad.js:57:40:57:47 | username | provenance | | -| logInjectionBad.js:47:9:47:35 | username | logInjectionBad.js:58:50:58:57 | username | provenance | | -| logInjectionBad.js:47:20:47:20 | q | logInjectionBad.js:47:9:47:35 | username | provenance | | +| logInjectionBad.js:47:9:47:16 | username | logInjectionBad.js:49:46:49:53 | username | provenance | | +| logInjectionBad.js:47:9:47:16 | username | logInjectionBad.js:50:39:50:46 | username | provenance | | +| logInjectionBad.js:47:9:47:16 | username | logInjectionBad.js:51:48:51:55 | username | provenance | | +| logInjectionBad.js:47:9:47:16 | username | logInjectionBad.js:52:37:52:44 | username | provenance | | +| logInjectionBad.js:47:9:47:16 | username | logInjectionBad.js:53:27:53:34 | username | provenance | | +| logInjectionBad.js:47:9:47:16 | username | logInjectionBad.js:54:43:54:50 | username | provenance | | +| logInjectionBad.js:47:9:47:16 | username | logInjectionBad.js:55:48:55:55 | username | provenance | | +| logInjectionBad.js:47:9:47:16 | username | logInjectionBad.js:56:47:56:54 | username | provenance | | +| logInjectionBad.js:47:9:47:16 | username | logInjectionBad.js:57:40:57:47 | username | provenance | | +| logInjectionBad.js:47:9:47:16 | username | logInjectionBad.js:58:50:58:57 | username | provenance | | +| logInjectionBad.js:47:20:47:20 | q | logInjectionBad.js:47:9:47:16 | username | provenance | | | logInjectionBad.js:49:46:49:53 | username | logInjectionBad.js:49:18:49:54 | ansiCol ... ername) | provenance | | | logInjectionBad.js:50:39:50:46 | username | logInjectionBad.js:50:18:50:47 | colors. ... ername) | provenance | | | logInjectionBad.js:51:27:51:56 | colors. ... ername) | logInjectionBad.js:51:18:51:61 | wrapAns ... e), 20) | provenance | | @@ -68,18 +68,18 @@ edges | logInjectionBad.js:57:40:57:47 | username | logInjectionBad.js:57:17:57:48 | chalk.u ... ername) | provenance | | | logInjectionBad.js:58:27:58:58 | chalk.u ... ername) | logInjectionBad.js:58:17:58:59 | stripAn ... rname)) | provenance | | | logInjectionBad.js:58:50:58:57 | username | logInjectionBad.js:58:27:58:58 | chalk.u ... ername) | provenance | | -| logInjectionBad.js:63:9:63:36 | q | logInjectionBad.js:64:20:64:20 | q | provenance | | -| logInjectionBad.js:63:13:63:36 | url.par ... , true) | logInjectionBad.js:63:9:63:36 | q | provenance | | +| logInjectionBad.js:63:9:63:9 | q | logInjectionBad.js:64:20:64:20 | q | provenance | | +| logInjectionBad.js:63:13:63:36 | url.par ... , true) | logInjectionBad.js:63:9:63:9 | q | provenance | | | logInjectionBad.js:63:23:63:29 | req.url | logInjectionBad.js:63:13:63:36 | url.par ... , true) | provenance | | -| logInjectionBad.js:64:9:64:35 | username | logInjectionBad.js:66:35:66:42 | username | provenance | | -| logInjectionBad.js:64:20:64:20 | q | logInjectionBad.js:64:9:64:35 | username | provenance | | +| logInjectionBad.js:64:9:64:16 | username | logInjectionBad.js:66:35:66:42 | username | provenance | | +| logInjectionBad.js:64:20:64:20 | q | logInjectionBad.js:64:9:64:16 | username | provenance | | | logInjectionBad.js:66:35:66:42 | username | logInjectionBad.js:66:17:66:43 | prettyj ... ername) | provenance | | -| logInjectionBad.js:72:9:72:36 | q | logInjectionBad.js:73:20:73:20 | q | provenance | | -| logInjectionBad.js:72:13:72:36 | url.par ... , true) | logInjectionBad.js:72:9:72:36 | q | provenance | | +| logInjectionBad.js:72:9:72:9 | q | logInjectionBad.js:73:20:73:20 | q | provenance | | +| logInjectionBad.js:72:13:72:36 | url.par ... , true) | logInjectionBad.js:72:9:72:9 | q | provenance | | | logInjectionBad.js:72:23:72:29 | req.url | logInjectionBad.js:72:13:72:36 | url.par ... , true) | provenance | | -| logInjectionBad.js:73:9:73:35 | username | logInjectionBad.js:75:15:75:22 | username | provenance | | -| logInjectionBad.js:73:9:73:35 | username | logInjectionBad.js:75:15:75:22 | username | provenance | | -| logInjectionBad.js:73:20:73:20 | q | logInjectionBad.js:73:9:73:35 | username | provenance | | +| logInjectionBad.js:73:9:73:16 | username | logInjectionBad.js:75:15:75:22 | username | provenance | | +| logInjectionBad.js:73:9:73:16 | username | logInjectionBad.js:75:15:75:22 | username | provenance | | +| logInjectionBad.js:73:20:73:20 | q | logInjectionBad.js:73:9:73:16 | username | provenance | | | logInjectionBad.js:75:15:75:22 | username | logInjectionBad.js:77:5:85:5 | functio ... ;\\n } [username] | provenance | | | logInjectionBad.js:75:15:75:22 | username | logInjectionBad.js:87:5:94:5 | functio ... ;\\n } [username] | provenance | | | logInjectionBad.js:75:15:75:22 | username | logInjectionBad.js:96:5:103:5 | functio ... ;\\n } [username] | provenance | | @@ -88,21 +88,21 @@ edges | logInjectionBad.js:87:5:94:5 | functio ... ;\\n } [username] | logInjectionBad.js:91:26:91:33 | username | provenance | | | logInjectionBad.js:96:5:103:5 | functio ... ;\\n } [username] | logInjectionBad.js:99:26:99:33 | username | provenance | | | logInjectionBad.js:105:5:118:5 | functio ... ;\\n } [username] | logInjectionBad.js:113:37:113:44 | username | provenance | | -| logInjectionBad.js:122:9:122:58 | username | logInjectionBad.js:123:20:123:27 | username | provenance | | -| logInjectionBad.js:122:20:122:43 | url.par ... , true) | logInjectionBad.js:122:9:122:58 | username | provenance | | +| logInjectionBad.js:122:9:122:16 | username | logInjectionBad.js:123:20:123:27 | username | provenance | | +| logInjectionBad.js:122:20:122:43 | url.par ... , true) | logInjectionBad.js:122:9:122:16 | username | provenance | | | logInjectionBad.js:122:30:122:36 | req.url | logInjectionBad.js:122:20:122:43 | url.par ... , true) | provenance | | -| logInjectionBad.js:123:9:123:46 | otherStr | logInjectionBad.js:124:17:124:24 | otherStr | provenance | | +| logInjectionBad.js:123:9:123:16 | otherStr | logInjectionBad.js:124:17:124:24 | otherStr | provenance | | | logInjectionBad.js:123:20:123:27 | username | logInjectionBad.js:123:20:123:43 | usernam ... (/.*/g) | provenance | | -| logInjectionBad.js:123:20:123:43 | usernam ... (/.*/g) | logInjectionBad.js:123:9:123:46 | otherStr | provenance | | +| logInjectionBad.js:123:20:123:43 | usernam ... (/.*/g) | logInjectionBad.js:123:9:123:16 | otherStr | provenance | | | logInjectionBad.js:128:20:128:43 | url.par ... , true) | logInjectionBad.js:129:42:129:50 | RegExp.$1 | provenance | | | logInjectionBad.js:128:30:128:36 | req.url | logInjectionBad.js:128:20:128:43 | url.par ... , true) | provenance | | nodes | logInjectionBad.js:7:25:7:32 | username | semmle.label | username | | logInjectionBad.js:8:38:8:45 | username | semmle.label | username | -| logInjectionBad.js:19:9:19:36 | q | semmle.label | q | +| logInjectionBad.js:19:9:19:9 | q | semmle.label | q | | logInjectionBad.js:19:13:19:36 | url.par ... , true) | semmle.label | url.par ... , true) | | logInjectionBad.js:19:23:19:29 | req.url | semmle.label | req.url | -| logInjectionBad.js:20:9:20:35 | username | semmle.label | username | +| logInjectionBad.js:20:9:20:16 | username | semmle.label | username | | logInjectionBad.js:20:20:20:20 | q | semmle.label | q | | logInjectionBad.js:22:18:22:43 | `[INFO] ... rname}` | semmle.label | `[INFO] ... rname}` | | logInjectionBad.js:22:34:22:41 | username | semmle.label | username | @@ -114,10 +114,10 @@ nodes | logInjectionBad.js:29:14:29:18 | error | semmle.label | error | | logInjectionBad.js:30:23:30:49 | `[ERROR ... rror}"` | semmle.label | `[ERROR ... rror}"` | | logInjectionBad.js:30:42:30:46 | error | semmle.label | error | -| logInjectionBad.js:46:9:46:36 | q | semmle.label | q | +| logInjectionBad.js:46:9:46:9 | q | semmle.label | q | | logInjectionBad.js:46:13:46:36 | url.par ... , true) | semmle.label | url.par ... , true) | | logInjectionBad.js:46:23:46:29 | req.url | semmle.label | req.url | -| logInjectionBad.js:47:9:47:35 | username | semmle.label | username | +| logInjectionBad.js:47:9:47:16 | username | semmle.label | username | | logInjectionBad.js:47:20:47:20 | q | semmle.label | q | | logInjectionBad.js:49:18:49:54 | ansiCol ... ername) | semmle.label | ansiCol ... ername) | | logInjectionBad.js:49:46:49:53 | username | semmle.label | username | @@ -144,17 +144,17 @@ nodes | logInjectionBad.js:58:17:58:59 | stripAn ... rname)) | semmle.label | stripAn ... rname)) | | logInjectionBad.js:58:27:58:58 | chalk.u ... ername) | semmle.label | chalk.u ... ername) | | logInjectionBad.js:58:50:58:57 | username | semmle.label | username | -| logInjectionBad.js:63:9:63:36 | q | semmle.label | q | +| logInjectionBad.js:63:9:63:9 | q | semmle.label | q | | logInjectionBad.js:63:13:63:36 | url.par ... , true) | semmle.label | url.par ... , true) | | logInjectionBad.js:63:23:63:29 | req.url | semmle.label | req.url | -| logInjectionBad.js:64:9:64:35 | username | semmle.label | username | +| logInjectionBad.js:64:9:64:16 | username | semmle.label | username | | logInjectionBad.js:64:20:64:20 | q | semmle.label | q | | logInjectionBad.js:66:17:66:43 | prettyj ... ername) | semmle.label | prettyj ... ername) | | logInjectionBad.js:66:35:66:42 | username | semmle.label | username | -| logInjectionBad.js:72:9:72:36 | q | semmle.label | q | +| logInjectionBad.js:72:9:72:9 | q | semmle.label | q | | logInjectionBad.js:72:13:72:36 | url.par ... , true) | semmle.label | url.par ... , true) | | logInjectionBad.js:72:23:72:29 | req.url | semmle.label | req.url | -| logInjectionBad.js:73:9:73:35 | username | semmle.label | username | +| logInjectionBad.js:73:9:73:16 | username | semmle.label | username | | logInjectionBad.js:73:20:73:20 | q | semmle.label | q | | logInjectionBad.js:75:15:75:22 | username | semmle.label | username | | logInjectionBad.js:75:15:75:22 | username | semmle.label | username | @@ -166,10 +166,10 @@ nodes | logInjectionBad.js:99:26:99:33 | username | semmle.label | username | | logInjectionBad.js:105:5:118:5 | functio ... ;\\n } [username] | semmle.label | functio ... ;\\n } [username] | | logInjectionBad.js:113:37:113:44 | username | semmle.label | username | -| logInjectionBad.js:122:9:122:58 | username | semmle.label | username | +| logInjectionBad.js:122:9:122:16 | username | semmle.label | username | | logInjectionBad.js:122:20:122:43 | url.par ... , true) | semmle.label | url.par ... , true) | | logInjectionBad.js:122:30:122:36 | req.url | semmle.label | req.url | -| logInjectionBad.js:123:9:123:46 | otherStr | semmle.label | otherStr | +| logInjectionBad.js:123:9:123:16 | otherStr | semmle.label | otherStr | | logInjectionBad.js:123:20:123:27 | username | semmle.label | username | | logInjectionBad.js:123:20:123:43 | usernam ... (/.*/g) | semmle.label | usernam ... (/.*/g) | | logInjectionBad.js:124:17:124:24 | otherStr | semmle.label | otherStr | diff --git a/javascript/ql/test/query-tests/Security/CWE-200/FileAccessToHttp.expected b/javascript/ql/test/query-tests/Security/CWE-200/FileAccessToHttp.expected index bde27032d4f2..74324c0ebcfd 100644 --- a/javascript/ql/test/query-tests/Security/CWE-200/FileAccessToHttp.expected +++ b/javascript/ql/test/query-tests/Security/CWE-200/FileAccessToHttp.expected @@ -13,28 +13,28 @@ | sentAsHeaders.js:14:20:19:9 | {\\n ... } | sentAsHeaders.js:10:79:10:84 | buffer | sentAsHeaders.js:14:20:19:9 | {\\n ... } | Outbound network request depends on $@. | sentAsHeaders.js:10:79:10:84 | buffer | file data | | sentAsHeaders.js:20:20:25:9 | {\\n ... } | sentAsHeaders.js:10:79:10:84 | buffer | sentAsHeaders.js:20:20:25:9 | {\\n ... } | Outbound network request depends on $@. | sentAsHeaders.js:10:79:10:84 | buffer | file data | edges -| FileAccessToHttp.js:4:5:4:47 | content | FileAccessToHttp.js:9:23:9:29 | content | provenance | | -| FileAccessToHttp.js:4:15:4:47 | fs.read ... "utf8") | FileAccessToHttp.js:4:5:4:47 | content | provenance | | +| FileAccessToHttp.js:4:5:4:11 | content | FileAccessToHttp.js:9:23:9:29 | content | provenance | | +| FileAccessToHttp.js:4:15:4:47 | fs.read ... "utf8") | FileAccessToHttp.js:4:5:4:11 | content | provenance | | | FileAccessToHttp.js:9:12:9:31 | { Referer: content } [Referer] | FileAccessToHttp.js:5:11:10:1 | {\\n hos ... ent }\\n} | provenance | | | FileAccessToHttp.js:9:23:9:29 | content | FileAccessToHttp.js:9:12:9:31 | { Referer: content } [Referer] | provenance | | -| FileAccessToHttp.js:16:11:16:56 | content | FileAccessToHttp.js:22:27:22:33 | content | provenance | | -| FileAccessToHttp.js:16:21:16:56 | await f ... "utf8") | FileAccessToHttp.js:16:11:16:56 | content | provenance | | +| FileAccessToHttp.js:16:11:16:17 | content | FileAccessToHttp.js:22:27:22:33 | content | provenance | | +| FileAccessToHttp.js:16:21:16:56 | await f ... "utf8") | FileAccessToHttp.js:16:11:16:17 | content | provenance | | | FileAccessToHttp.js:22:16:22:35 | { Referer: content } [Referer] | FileAccessToHttp.js:18:15:23:5 | {\\n ... }\\n } | provenance | | | FileAccessToHttp.js:22:27:22:33 | content | FileAccessToHttp.js:22:16:22:35 | { Referer: content } [Referer] | provenance | | -| FileAccessToHttp.js:34:9:34:57 | buffer | FileAccessToHttp.js:40:25:40:30 | buffer | provenance | | -| FileAccessToHttp.js:34:18:34:57 | [Buffer ... (1024)] | FileAccessToHttp.js:34:9:34:57 | buffer | provenance | | +| FileAccessToHttp.js:34:9:34:14 | buffer | FileAccessToHttp.js:40:25:40:30 | buffer | provenance | | +| FileAccessToHttp.js:34:18:34:57 | [Buffer ... (1024)] | FileAccessToHttp.js:34:9:34:14 | buffer | provenance | | | FileAccessToHttp.js:40:14:40:32 | { Referer: buffer } [Referer] | FileAccessToHttp.js:36:13:41:3 | {\\n h ... r }\\n } | provenance | | | FileAccessToHttp.js:40:25:40:30 | buffer | FileAccessToHttp.js:40:14:40:32 | { Referer: buffer } [Referer] | provenance | | -| FileAccessToHttp.js:43:9:43:36 | buffer1 | FileAccessToHttp.js:49:25:49:31 | buffer1 | provenance | | -| FileAccessToHttp.js:43:19:43:36 | Buffer.alloc(1024) | FileAccessToHttp.js:43:9:43:36 | buffer1 | provenance | | +| FileAccessToHttp.js:43:9:43:15 | buffer1 | FileAccessToHttp.js:49:25:49:31 | buffer1 | provenance | | +| FileAccessToHttp.js:43:19:43:36 | Buffer.alloc(1024) | FileAccessToHttp.js:43:9:43:15 | buffer1 | provenance | | | FileAccessToHttp.js:49:14:49:65 | { Refer ... ing() } [Referer] | FileAccessToHttp.js:45:13:50:3 | {\\n h ... ) }\\n } | provenance | | | FileAccessToHttp.js:49:25:49:31 | buffer1 | FileAccessToHttp.js:49:25:49:52 | buffer1 ... sRead1) | provenance | | | FileAccessToHttp.js:49:25:49:31 | buffer1 | FileAccessToHttp.js:49:25:49:52 | buffer1 ... sRead1) [ArrayElement] | provenance | | | FileAccessToHttp.js:49:25:49:52 | buffer1 ... sRead1) | FileAccessToHttp.js:49:25:49:63 | buffer1 ... tring() | provenance | | | FileAccessToHttp.js:49:25:49:52 | buffer1 ... sRead1) [ArrayElement] | FileAccessToHttp.js:49:25:49:63 | buffer1 ... tring() | provenance | | | FileAccessToHttp.js:49:25:49:63 | buffer1 ... tring() | FileAccessToHttp.js:49:14:49:65 | { Refer ... ing() } [Referer] | provenance | | -| FileAccessToHttp.js:52:9:52:36 | buffer2 | FileAccessToHttp.js:53:17:53:23 | buffer2 | provenance | | -| FileAccessToHttp.js:52:19:52:36 | Buffer.alloc(1024) | FileAccessToHttp.js:52:9:52:36 | buffer2 | provenance | | +| FileAccessToHttp.js:52:9:52:15 | buffer2 | FileAccessToHttp.js:53:17:53:23 | buffer2 | provenance | | +| FileAccessToHttp.js:52:19:52:36 | Buffer.alloc(1024) | FileAccessToHttp.js:52:9:52:15 | buffer2 | provenance | | | FileAccessToHttp.js:53:17:53:23 | buffer2 | FileAccessToHttp.js:58:27:58:33 | buffer2 | provenance | | | FileAccessToHttp.js:58:16:58:67 | { Refer ... ing() } [Referer] | FileAccessToHttp.js:54:15:59:5 | {\\n ... }\\n } | provenance | | | FileAccessToHttp.js:58:27:58:33 | buffer2 | FileAccessToHttp.js:58:27:58:54 | buffer2 ... sRead2) | provenance | | @@ -42,28 +42,28 @@ edges | FileAccessToHttp.js:58:27:58:54 | buffer2 ... sRead2) | FileAccessToHttp.js:58:27:58:65 | buffer2 ... tring() | provenance | | | FileAccessToHttp.js:58:27:58:54 | buffer2 ... sRead2) [ArrayElement] | FileAccessToHttp.js:58:27:58:65 | buffer2 ... tring() | provenance | | | FileAccessToHttp.js:58:27:58:65 | buffer2 ... tring() | FileAccessToHttp.js:58:16:58:67 | { Refer ... ing() } [Referer] | provenance | | -| bufferRead.js:12:13:12:43 | buffer | bufferRead.js:13:21:13:26 | buffer | provenance | | -| bufferRead.js:12:13:12:43 | buffer | bufferRead.js:13:32:13:37 | buffer | provenance | | -| bufferRead.js:12:22:12:43 | new Buf ... s.size) | bufferRead.js:12:13:12:43 | buffer | provenance | | +| bufferRead.js:12:13:12:18 | buffer | bufferRead.js:13:21:13:26 | buffer | provenance | | +| bufferRead.js:12:13:12:18 | buffer | bufferRead.js:13:32:13:37 | buffer | provenance | | +| bufferRead.js:12:22:12:43 | new Buf ... s.size) | bufferRead.js:12:13:12:18 | buffer | provenance | | | bufferRead.js:13:21:13:26 | buffer | bufferRead.js:13:32:13:37 | buffer | provenance | | | bufferRead.js:13:32:13:37 | buffer | bufferRead.js:15:26:15:31 | buffer | provenance | | -| bufferRead.js:15:15:15:62 | postData | bufferRead.js:32:21:32:28 | postData | provenance | | +| bufferRead.js:15:15:15:22 | postData | bufferRead.js:32:21:32:28 | postData | provenance | | | bufferRead.js:15:26:15:31 | buffer | bufferRead.js:15:26:15:62 | buffer. ... esRead) | provenance | | -| bufferRead.js:15:26:15:62 | buffer. ... esRead) | bufferRead.js:15:15:15:62 | postData | provenance | | +| bufferRead.js:15:26:15:62 | buffer. ... esRead) | bufferRead.js:15:15:15:22 | postData | provenance | | | googlecompiler.js:7:19:7:28 | codestring | googlecompiler.js:14:21:14:30 | codestring | provenance | | -| googlecompiler.js:9:7:15:4 | post_data | googlecompiler.js:37:18:37:26 | post_data | provenance | | -| googlecompiler.js:9:19:15:4 | queryst ... dy\\n }) | googlecompiler.js:9:7:15:4 | post_data | provenance | | +| googlecompiler.js:9:7:9:15 | post_data | googlecompiler.js:37:18:37:26 | post_data | provenance | | +| googlecompiler.js:9:19:15:4 | queryst ... dy\\n }) | googlecompiler.js:9:7:9:15 | post_data | provenance | | | googlecompiler.js:9:41:15:3 | {\\n ... ody\\n } [js_code] | googlecompiler.js:9:19:15:4 | queryst ... dy\\n }) | provenance | | | googlecompiler.js:14:21:14:30 | codestring | googlecompiler.js:9:41:15:3 | {\\n ... ody\\n } [js_code] | provenance | | | googlecompiler.js:43:54:43:57 | data | googlecompiler.js:55:14:55:17 | data | provenance | | | googlecompiler.js:55:14:55:17 | data | googlecompiler.js:7:19:7:28 | codestring | provenance | | -| readFileSync.js:5:5:5:39 | data | readFileSync.js:7:11:7:14 | data | provenance | | -| readFileSync.js:5:12:5:39 | fs.read ... t.txt") | readFileSync.js:5:5:5:39 | data | provenance | | -| readFileSync.js:7:7:7:25 | s | readFileSync.js:25:18:25:18 | s | provenance | | +| readFileSync.js:5:5:5:8 | data | readFileSync.js:7:11:7:14 | data | provenance | | +| readFileSync.js:5:12:5:39 | fs.read ... t.txt") | readFileSync.js:5:5:5:8 | data | provenance | | +| readFileSync.js:7:7:7:7 | s | readFileSync.js:25:18:25:18 | s | provenance | | | readFileSync.js:7:11:7:14 | data | readFileSync.js:7:11:7:25 | data.toString() | provenance | | -| readFileSync.js:7:11:7:25 | data.toString() | readFileSync.js:7:7:7:25 | s | provenance | | -| readStreamRead.js:13:13:13:35 | chunk | readStreamRead.js:29:19:29:23 | chunk | provenance | | -| readStreamRead.js:13:21:13:35 | readable.read() | readStreamRead.js:13:13:13:35 | chunk | provenance | | +| readFileSync.js:7:11:7:25 | data.toString() | readFileSync.js:7:7:7:7 | s | provenance | | +| readStreamRead.js:13:13:13:17 | chunk | readStreamRead.js:29:19:29:23 | chunk | provenance | | +| readStreamRead.js:13:21:13:35 | readable.read() | readStreamRead.js:13:13:13:17 | chunk | provenance | | | request.js:6:19:6:26 | jsonData | request.js:8:12:8:19 | jsonData | provenance | | | request.js:8:12:8:19 | jsonData | request.js:8:11:8:20 | {jsonData} | provenance | | | request.js:13:18:13:24 | xmlData | request.js:22:11:22:17 | xmlData | provenance | | @@ -73,14 +73,14 @@ edges | request.js:43:51:43:54 | data | request.js:50:13:50:16 | data | provenance | | | request.js:50:13:50:16 | data | request.js:13:18:13:24 | xmlData | provenance | | | sentAsHeaders.js:10:79:10:84 | buffer | sentAsHeaders.js:11:23:11:28 | buffer | provenance | | -| sentAsHeaders.js:11:13:11:59 | content | sentAsHeaders.js:12:19:12:25 | content | provenance | | +| sentAsHeaders.js:11:13:11:19 | content | sentAsHeaders.js:12:19:12:25 | content | provenance | | | sentAsHeaders.js:11:23:11:28 | buffer | sentAsHeaders.js:11:23:11:59 | buffer. ... esRead) | provenance | | -| sentAsHeaders.js:11:23:11:59 | buffer. ... esRead) | sentAsHeaders.js:11:13:11:59 | content | provenance | | -| sentAsHeaders.js:12:9:12:81 | content | sentAsHeaders.js:18:47:18:53 | content | provenance | | -| sentAsHeaders.js:12:9:12:81 | content | sentAsHeaders.js:24:47:24:53 | content | provenance | | +| sentAsHeaders.js:11:23:11:59 | buffer. ... esRead) | sentAsHeaders.js:11:13:11:19 | content | provenance | | +| sentAsHeaders.js:12:9:12:15 | content | sentAsHeaders.js:18:47:18:53 | content | provenance | | +| sentAsHeaders.js:12:9:12:15 | content | sentAsHeaders.js:24:47:24:53 | content | provenance | | | sentAsHeaders.js:12:19:12:25 | content | sentAsHeaders.js:12:19:12:74 | content ... =", "") | provenance | | | sentAsHeaders.js:12:19:12:74 | content ... =", "") | sentAsHeaders.js:12:19:12:81 | content ... .trim() | provenance | | -| sentAsHeaders.js:12:19:12:81 | content ... .trim() | sentAsHeaders.js:12:9:12:81 | content | provenance | | +| sentAsHeaders.js:12:19:12:81 | content ... .trim() | sentAsHeaders.js:12:9:12:15 | content | provenance | | | sentAsHeaders.js:18:20:18:55 | { Refer ... ntent } [Referer] | sentAsHeaders.js:14:20:19:9 | {\\n ... } | provenance | | | sentAsHeaders.js:18:31:18:53 | "http:/ ... content | sentAsHeaders.js:18:20:18:55 | { Refer ... ntent } [Referer] | provenance | | | sentAsHeaders.js:18:47:18:53 | content | sentAsHeaders.js:18:31:18:53 | "http:/ ... content | provenance | | @@ -88,22 +88,22 @@ edges | sentAsHeaders.js:24:31:24:53 | "http:/ ... content | sentAsHeaders.js:24:20:24:55 | { Refer ... ntent } [Referer] | provenance | | | sentAsHeaders.js:24:47:24:53 | content | sentAsHeaders.js:24:31:24:53 | "http:/ ... content | provenance | | nodes -| FileAccessToHttp.js:4:5:4:47 | content | semmle.label | content | +| FileAccessToHttp.js:4:5:4:11 | content | semmle.label | content | | FileAccessToHttp.js:4:15:4:47 | fs.read ... "utf8") | semmle.label | fs.read ... "utf8") | | FileAccessToHttp.js:5:11:10:1 | {\\n hos ... ent }\\n} | semmle.label | {\\n hos ... ent }\\n} | | FileAccessToHttp.js:9:12:9:31 | { Referer: content } [Referer] | semmle.label | { Referer: content } [Referer] | | FileAccessToHttp.js:9:23:9:29 | content | semmle.label | content | -| FileAccessToHttp.js:16:11:16:56 | content | semmle.label | content | +| FileAccessToHttp.js:16:11:16:17 | content | semmle.label | content | | FileAccessToHttp.js:16:21:16:56 | await f ... "utf8") | semmle.label | await f ... "utf8") | | FileAccessToHttp.js:18:15:23:5 | {\\n ... }\\n } | semmle.label | {\\n ... }\\n } | | FileAccessToHttp.js:22:16:22:35 | { Referer: content } [Referer] | semmle.label | { Referer: content } [Referer] | | FileAccessToHttp.js:22:27:22:33 | content | semmle.label | content | -| FileAccessToHttp.js:34:9:34:57 | buffer | semmle.label | buffer | +| FileAccessToHttp.js:34:9:34:14 | buffer | semmle.label | buffer | | FileAccessToHttp.js:34:18:34:57 | [Buffer ... (1024)] | semmle.label | [Buffer ... (1024)] | | FileAccessToHttp.js:36:13:41:3 | {\\n h ... r }\\n } | semmle.label | {\\n h ... r }\\n } | | FileAccessToHttp.js:40:14:40:32 | { Referer: buffer } [Referer] | semmle.label | { Referer: buffer } [Referer] | | FileAccessToHttp.js:40:25:40:30 | buffer | semmle.label | buffer | -| FileAccessToHttp.js:43:9:43:36 | buffer1 | semmle.label | buffer1 | +| FileAccessToHttp.js:43:9:43:15 | buffer1 | semmle.label | buffer1 | | FileAccessToHttp.js:43:19:43:36 | Buffer.alloc(1024) | semmle.label | Buffer.alloc(1024) | | FileAccessToHttp.js:45:13:50:3 | {\\n h ... ) }\\n } | semmle.label | {\\n h ... ) }\\n } | | FileAccessToHttp.js:49:14:49:65 | { Refer ... ing() } [Referer] | semmle.label | { Refer ... ing() } [Referer] | @@ -111,7 +111,7 @@ nodes | FileAccessToHttp.js:49:25:49:52 | buffer1 ... sRead1) | semmle.label | buffer1 ... sRead1) | | FileAccessToHttp.js:49:25:49:52 | buffer1 ... sRead1) [ArrayElement] | semmle.label | buffer1 ... sRead1) [ArrayElement] | | FileAccessToHttp.js:49:25:49:63 | buffer1 ... tring() | semmle.label | buffer1 ... tring() | -| FileAccessToHttp.js:52:9:52:36 | buffer2 | semmle.label | buffer2 | +| FileAccessToHttp.js:52:9:52:15 | buffer2 | semmle.label | buffer2 | | FileAccessToHttp.js:52:19:52:36 | Buffer.alloc(1024) | semmle.label | Buffer.alloc(1024) | | FileAccessToHttp.js:53:17:53:23 | buffer2 | semmle.label | buffer2 | | FileAccessToHttp.js:54:15:59:5 | {\\n ... }\\n } | semmle.label | {\\n ... }\\n } | @@ -120,29 +120,29 @@ nodes | FileAccessToHttp.js:58:27:58:54 | buffer2 ... sRead2) | semmle.label | buffer2 ... sRead2) | | FileAccessToHttp.js:58:27:58:54 | buffer2 ... sRead2) [ArrayElement] | semmle.label | buffer2 ... sRead2) [ArrayElement] | | FileAccessToHttp.js:58:27:58:65 | buffer2 ... tring() | semmle.label | buffer2 ... tring() | -| bufferRead.js:12:13:12:43 | buffer | semmle.label | buffer | +| bufferRead.js:12:13:12:18 | buffer | semmle.label | buffer | | bufferRead.js:12:22:12:43 | new Buf ... s.size) | semmle.label | new Buf ... s.size) | | bufferRead.js:13:21:13:26 | buffer | semmle.label | buffer | | bufferRead.js:13:32:13:37 | buffer | semmle.label | buffer | -| bufferRead.js:15:15:15:62 | postData | semmle.label | postData | +| bufferRead.js:15:15:15:22 | postData | semmle.label | postData | | bufferRead.js:15:26:15:31 | buffer | semmle.label | buffer | | bufferRead.js:15:26:15:62 | buffer. ... esRead) | semmle.label | buffer. ... esRead) | | bufferRead.js:32:21:32:28 | postData | semmle.label | postData | | googlecompiler.js:7:19:7:28 | codestring | semmle.label | codestring | -| googlecompiler.js:9:7:15:4 | post_data | semmle.label | post_data | +| googlecompiler.js:9:7:9:15 | post_data | semmle.label | post_data | | googlecompiler.js:9:19:15:4 | queryst ... dy\\n }) | semmle.label | queryst ... dy\\n }) | | googlecompiler.js:9:41:15:3 | {\\n ... ody\\n } [js_code] | semmle.label | {\\n ... ody\\n } [js_code] | | googlecompiler.js:14:21:14:30 | codestring | semmle.label | codestring | | googlecompiler.js:37:18:37:26 | post_data | semmle.label | post_data | | googlecompiler.js:43:54:43:57 | data | semmle.label | data | | googlecompiler.js:55:14:55:17 | data | semmle.label | data | -| readFileSync.js:5:5:5:39 | data | semmle.label | data | +| readFileSync.js:5:5:5:8 | data | semmle.label | data | | readFileSync.js:5:12:5:39 | fs.read ... t.txt") | semmle.label | fs.read ... t.txt") | -| readFileSync.js:7:7:7:25 | s | semmle.label | s | +| readFileSync.js:7:7:7:7 | s | semmle.label | s | | readFileSync.js:7:11:7:14 | data | semmle.label | data | | readFileSync.js:7:11:7:25 | data.toString() | semmle.label | data.toString() | | readFileSync.js:25:18:25:18 | s | semmle.label | s | -| readStreamRead.js:13:13:13:35 | chunk | semmle.label | chunk | +| readStreamRead.js:13:13:13:17 | chunk | semmle.label | chunk | | readStreamRead.js:13:21:13:35 | readable.read() | semmle.label | readable.read() | | readStreamRead.js:29:19:29:23 | chunk | semmle.label | chunk | | request.js:6:19:6:26 | jsonData | semmle.label | jsonData | @@ -156,10 +156,10 @@ nodes | request.js:43:51:43:54 | data | semmle.label | data | | request.js:50:13:50:16 | data | semmle.label | data | | sentAsHeaders.js:10:79:10:84 | buffer | semmle.label | buffer | -| sentAsHeaders.js:11:13:11:59 | content | semmle.label | content | +| sentAsHeaders.js:11:13:11:19 | content | semmle.label | content | | sentAsHeaders.js:11:23:11:28 | buffer | semmle.label | buffer | | sentAsHeaders.js:11:23:11:59 | buffer. ... esRead) | semmle.label | buffer. ... esRead) | -| sentAsHeaders.js:12:9:12:81 | content | semmle.label | content | +| sentAsHeaders.js:12:9:12:15 | content | semmle.label | content | | sentAsHeaders.js:12:19:12:25 | content | semmle.label | content | | sentAsHeaders.js:12:19:12:74 | content ... =", "") | semmle.label | content ... =", "") | | sentAsHeaders.js:12:19:12:81 | content ... .trim() | semmle.label | content ... .trim() | diff --git a/javascript/ql/test/query-tests/Security/CWE-312/BuildArtifactLeak.expected b/javascript/ql/test/query-tests/Security/CWE-312/BuildArtifactLeak.expected index 37c0773b6974..2e8c7462e2de 100644 --- a/javascript/ql/test/query-tests/Security/CWE-312/BuildArtifactLeak.expected +++ b/javascript/ql/test/query-tests/Security/CWE-312/BuildArtifactLeak.expected @@ -1,14 +1,14 @@ edges | build-leaks.js:5:20:5:46 | JSON.st ... ss.env) | build-leaks.js:4:39:6:1 | {\\n " ... leak]\\n} | provenance | | | build-leaks.js:5:35:5:45 | process.env | build-leaks.js:5:20:5:46 | JSON.st ... ss.env) | provenance | | -| build-leaks.js:13:11:19:10 | raw | build-leaks.js:22:36:22:38 | raw | provenance | | -| build-leaks.js:13:17:19:10 | Object. ... }) | build-leaks.js:13:11:19:10 | raw | provenance | | +| build-leaks.js:13:11:13:13 | raw | build-leaks.js:22:36:22:38 | raw | provenance | | +| build-leaks.js:13:17:19:10 | Object. ... }) | build-leaks.js:13:11:13:13 | raw | provenance | | | build-leaks.js:15:13:15:15 | [post update] env | build-leaks.js:16:20:16:22 | env | provenance | | | build-leaks.js:15:24:15:34 | process.env | build-leaks.js:15:13:15:15 | [post update] env | provenance | Config | | build-leaks.js:16:20:16:22 | env | build-leaks.js:13:17:19:10 | Object. ... }) | provenance | | | build-leaks.js:16:20:16:22 | env | build-leaks.js:22:49:22:51 | env | provenance | | -| build-leaks.js:21:11:26:5 | stringifed [process.env] | build-leaks.js:30:22:30:31 | stringifed [process.env] | provenance | | -| build-leaks.js:21:24:26:5 | {\\n ... )\\n } [process.env] | build-leaks.js:21:11:26:5 | stringifed [process.env] | provenance | | +| build-leaks.js:21:11:21:20 | stringifed [process.env] | build-leaks.js:30:22:30:31 | stringifed [process.env] | provenance | | +| build-leaks.js:21:24:26:5 | {\\n ... )\\n } [process.env] | build-leaks.js:21:11:21:20 | stringifed [process.env] | provenance | | | build-leaks.js:22:24:25:14 | Object. ... }, {}) | build-leaks.js:21:24:26:5 | {\\n ... )\\n } [process.env] | provenance | | | build-leaks.js:22:36:22:38 | raw | build-leaks.js:22:24:25:14 | Object. ... }, {}) | provenance | Config | | build-leaks.js:22:36:22:38 | raw | build-leaks.js:22:49:22:51 | env | provenance | Config | @@ -19,20 +19,20 @@ edges | build-leaks.js:28:12:31:5 | {\\n ... d\\n } [stringified, process.env] | build-leaks.js:34:26:34:45 | getEnv('production') [stringified, process.env] | provenance | | | build-leaks.js:30:22:30:31 | stringifed [process.env] | build-leaks.js:28:12:31:5 | {\\n ... d\\n } [stringified, process.env] | provenance | | | build-leaks.js:34:26:34:45 | getEnv('production') [stringified, process.env] | build-leaks.js:34:26:34:57 | getEnv( ... ngified | provenance | | -| build-leaks.js:40:9:40:60 | pw | build-leaks.js:41:82:41:83 | pw | provenance | | -| build-leaks.js:40:14:40:60 | url.par ... assword | build-leaks.js:40:9:40:60 | pw | provenance | | +| build-leaks.js:40:9:40:10 | pw | build-leaks.js:41:82:41:83 | pw | provenance | | +| build-leaks.js:40:14:40:60 | url.par ... assword | build-leaks.js:40:9:40:10 | pw | provenance | | | build-leaks.js:41:67:41:84 | JSON.stringify(pw) | build-leaks.js:41:43:41:86 | { "proc ... y(pw) } | provenance | | | build-leaks.js:41:82:41:83 | pw | build-leaks.js:41:67:41:84 | JSON.stringify(pw) | provenance | | nodes | build-leaks.js:4:39:6:1 | {\\n " ... leak]\\n} | semmle.label | {\\n " ... leak]\\n} | | build-leaks.js:5:20:5:46 | JSON.st ... ss.env) | semmle.label | JSON.st ... ss.env) | | build-leaks.js:5:35:5:45 | process.env | semmle.label | process.env | -| build-leaks.js:13:11:19:10 | raw | semmle.label | raw | +| build-leaks.js:13:11:13:13 | raw | semmle.label | raw | | build-leaks.js:13:17:19:10 | Object. ... }) | semmle.label | Object. ... }) | | build-leaks.js:15:13:15:15 | [post update] env | semmle.label | [post update] env | | build-leaks.js:15:24:15:34 | process.env | semmle.label | process.env | | build-leaks.js:16:20:16:22 | env | semmle.label | env | -| build-leaks.js:21:11:26:5 | stringifed [process.env] | semmle.label | stringifed [process.env] | +| build-leaks.js:21:11:21:20 | stringifed [process.env] | semmle.label | stringifed [process.env] | | build-leaks.js:21:24:26:5 | {\\n ... )\\n } [process.env] | semmle.label | {\\n ... )\\n } [process.env] | | build-leaks.js:22:24:25:14 | Object. ... }, {}) | semmle.label | Object. ... }, {}) | | build-leaks.js:22:36:22:38 | raw | semmle.label | raw | @@ -45,7 +45,7 @@ nodes | build-leaks.js:30:22:30:31 | stringifed [process.env] | semmle.label | stringifed [process.env] | | build-leaks.js:34:26:34:45 | getEnv('production') [stringified, process.env] | semmle.label | getEnv('production') [stringified, process.env] | | build-leaks.js:34:26:34:57 | getEnv( ... ngified | semmle.label | getEnv( ... ngified | -| build-leaks.js:40:9:40:60 | pw | semmle.label | pw | +| build-leaks.js:40:9:40:10 | pw | semmle.label | pw | | build-leaks.js:40:14:40:60 | url.par ... assword | semmle.label | url.par ... assword | | build-leaks.js:41:43:41:86 | { "proc ... y(pw) } | semmle.label | { "proc ... y(pw) } | | build-leaks.js:41:67:41:84 | JSON.stringify(pw) | semmle.label | JSON.stringify(pw) | diff --git a/javascript/ql/test/query-tests/Security/CWE-312/CleartextLogging.expected b/javascript/ql/test/query-tests/Security/CWE-312/CleartextLogging.expected index 491c4359fe72..af9e0f485c2d 100644 --- a/javascript/ql/test/query-tests/Security/CWE-312/CleartextLogging.expected +++ b/javascript/ql/test/query-tests/Security/CWE-312/CleartextLogging.expected @@ -46,18 +46,18 @@ edges | passwords.js:10:11:10:18 | password | passwords.js:7:20:7:20 | x | provenance | | | passwords.js:14:31:14:38 | password | passwords.js:14:17:14:38 | name + ... assword | provenance | | | passwords.js:16:29:16:36 | password | passwords.js:16:17:16:38 | `${name ... sword}` | provenance | | -| passwords.js:18:9:20:5 | obj1 [password] | passwords.js:21:17:21:20 | obj1 | provenance | | -| passwords.js:18:16:20:5 | {\\n ... ]\\n } [password] | passwords.js:18:9:20:5 | obj1 [password] | provenance | | +| passwords.js:18:9:18:12 | obj1 [password] | passwords.js:21:17:21:20 | obj1 | provenance | | +| passwords.js:18:16:20:5 | {\\n ... ]\\n } [password] | passwords.js:18:9:18:12 | obj1 [password] | provenance | | | passwords.js:19:19:19:19 | x | passwords.js:18:16:20:5 | {\\n ... ]\\n } [password] | provenance | | -| passwords.js:23:9:25:5 | obj2 [x] | passwords.js:26:17:26:20 | obj2 | provenance | | -| passwords.js:23:16:25:5 | {\\n ... ]\\n } [x] | passwords.js:23:9:25:5 | obj2 [x] | provenance | | +| passwords.js:23:9:23:12 | obj2 [x] | passwords.js:26:17:26:20 | obj2 | provenance | | +| passwords.js:23:16:25:5 | {\\n ... ]\\n } [x] | passwords.js:23:9:23:12 | obj2 [x] | provenance | | | passwords.js:24:12:24:19 | password | passwords.js:23:16:25:5 | {\\n ... ]\\n } [x] | provenance | | -| passwords.js:77:9:77:55 | temp [encryptedPassword] | passwords.js:78:17:78:20 | temp [encryptedPassword] | provenance | | -| passwords.js:77:16:77:55 | { encry ... sword } [encryptedPassword] | passwords.js:77:9:77:55 | temp [encryptedPassword] | provenance | | +| passwords.js:77:9:77:12 | temp [encryptedPassword] | passwords.js:78:17:78:20 | temp [encryptedPassword] | provenance | | +| passwords.js:77:16:77:55 | { encry ... sword } [encryptedPassword] | passwords.js:77:9:77:12 | temp [encryptedPassword] | provenance | | | passwords.js:77:37:77:53 | req.body.password | passwords.js:77:16:77:55 | { encry ... sword } [encryptedPassword] | provenance | | | passwords.js:78:17:78:20 | temp [encryptedPassword] | passwords.js:78:17:78:38 | temp.en ... assword | provenance | | -| passwords.js:80:9:80:25 | secret | passwords.js:81:24:81:29 | secret | provenance | | -| passwords.js:80:18:80:25 | password | passwords.js:80:9:80:25 | secret | provenance | | +| passwords.js:80:9:80:14 | secret | passwords.js:81:24:81:29 | secret | provenance | | +| passwords.js:80:18:80:25 | password | passwords.js:80:9:80:14 | secret | provenance | | | passwords.js:81:24:81:29 | secret | passwords.js:81:17:81:31 | `pw: ${secret}` | provenance | | | passwords.js:93:39:93:46 | password | passwords.js:93:21:93:46 | "Passwo ... assword | provenance | | | passwords.js:98:39:98:46 | password | passwords.js:98:21:98:46 | "Passwo ... assword | provenance | | @@ -69,14 +69,14 @@ edges | passwords.js:122:31:122:49 | password.toString() | passwords.js:122:17:122:49 | name + ... tring() | provenance | | | passwords.js:123:31:123:38 | password | passwords.js:123:31:123:48 | password.valueOf() | provenance | | | passwords.js:123:31:123:48 | password.valueOf() | passwords.js:123:17:123:48 | name + ... lueOf() | provenance | | -| passwords.js:127:9:132:5 | config [password] | passwords.js:135:17:135:22 | config | provenance | | -| passwords.js:127:9:132:5 | config [x] | passwords.js:135:17:135:22 | config | provenance | | -| passwords.js:127:9:132:5 | config [x] | passwords.js:136:17:136:22 | config [x] | provenance | | -| passwords.js:127:9:132:5 | config [y] | passwords.js:135:17:135:22 | config | provenance | | -| passwords.js:127:9:132:5 | config [y] | passwords.js:137:17:137:22 | config [y] | provenance | | -| passwords.js:127:18:132:5 | {\\n ... ]\\n } [password] | passwords.js:127:9:132:5 | config [password] | provenance | | -| passwords.js:127:18:132:5 | {\\n ... ]\\n } [x] | passwords.js:127:9:132:5 | config [x] | provenance | | -| passwords.js:127:18:132:5 | {\\n ... ]\\n } [y] | passwords.js:127:9:132:5 | config [y] | provenance | | +| passwords.js:127:9:127:14 | config [password] | passwords.js:135:17:135:22 | config | provenance | | +| passwords.js:127:9:127:14 | config [x] | passwords.js:135:17:135:22 | config | provenance | | +| passwords.js:127:9:127:14 | config [x] | passwords.js:136:17:136:22 | config [x] | provenance | | +| passwords.js:127:9:127:14 | config [y] | passwords.js:135:17:135:22 | config | provenance | | +| passwords.js:127:9:127:14 | config [y] | passwords.js:137:17:137:22 | config [y] | provenance | | +| passwords.js:127:18:132:5 | {\\n ... ]\\n } [password] | passwords.js:127:9:127:14 | config [password] | provenance | | +| passwords.js:127:18:132:5 | {\\n ... ]\\n } [x] | passwords.js:127:9:127:14 | config [x] | provenance | | +| passwords.js:127:18:132:5 | {\\n ... ]\\n } [y] | passwords.js:127:9:127:14 | config [y] | provenance | | | passwords.js:128:19:128:19 | x | passwords.js:127:18:132:5 | {\\n ... ]\\n } [password] | provenance | | | passwords.js:130:12:130:19 | password | passwords.js:127:18:132:5 | {\\n ... ]\\n } [x] | provenance | | | passwords.js:131:12:131:24 | getPassword() | passwords.js:127:18:132:5 | {\\n ... ]\\n } [y] | provenance | | @@ -90,8 +90,8 @@ edges | passwords.js:142:26:142:34 | arguments [0] | passwords.js:142:26:142:34 | [apply call taint node] | provenance | | | passwords.js:142:26:142:34 | arguments [ArrayElement] | passwords.js:142:26:142:34 | [apply call taint node] | provenance | | | passwords.js:142:26:142:34 | arguments [ArrayElement] | passwords.js:142:26:142:34 | [apply call taint node] | provenance | | -| passwords.js:146:9:148:5 | config [x] | passwords.js:149:21:149:26 | config [x] | provenance | | -| passwords.js:146:18:148:5 | {\\n ... ]\\n } [x] | passwords.js:146:9:148:5 | config [x] | provenance | | +| passwords.js:146:9:146:14 | config [x] | passwords.js:149:21:149:26 | config [x] | provenance | | +| passwords.js:146:18:148:5 | {\\n ... ]\\n } [x] | passwords.js:146:9:146:14 | config [x] | provenance | | | passwords.js:147:12:147:19 | password | passwords.js:146:18:148:5 | {\\n ... ]\\n } [x] | provenance | | | passwords.js:149:21:149:26 | config [x] | passwords.js:149:21:149:28 | config.x | provenance | | | passwords.js:149:21:149:28 | config.x | passwords.js:142:26:142:34 | arguments | provenance | | @@ -102,9 +102,9 @@ edges | passwords.js:150:21:150:31 | process.env | passwords.js:142:26:142:34 | arguments | provenance | Config | | passwords.js:150:21:150:31 | process.env | passwords.js:142:26:142:34 | arguments | provenance | Config | | passwords.js:150:21:150:31 | process.env | passwords.js:142:26:142:34 | arguments [0] | provenance | | -| passwords.js:152:9:152:63 | procdesc | passwords.js:154:21:154:28 | procdesc | provenance | | +| passwords.js:152:9:152:16 | procdesc | passwords.js:154:21:154:28 | procdesc | provenance | | | passwords.js:152:20:152:44 | Util.in ... ss.env) | passwords.js:152:20:152:63 | Util.in ... /g, '') | provenance | | -| passwords.js:152:20:152:63 | Util.in ... /g, '') | passwords.js:152:9:152:63 | procdesc | provenance | | +| passwords.js:152:20:152:63 | Util.in ... /g, '') | passwords.js:152:9:152:16 | procdesc | provenance | | | passwords.js:152:33:152:43 | process.env | passwords.js:152:20:152:44 | Util.in ... ss.env) | provenance | | | passwords.js:154:21:154:28 | procdesc | passwords.js:142:26:142:34 | arguments | provenance | | | passwords.js:154:21:154:28 | procdesc | passwords.js:142:26:142:34 | arguments | provenance | Config | @@ -131,20 +131,20 @@ nodes | passwords.js:14:31:14:38 | password | semmle.label | password | | passwords.js:16:17:16:38 | `${name ... sword}` | semmle.label | `${name ... sword}` | | passwords.js:16:29:16:36 | password | semmle.label | password | -| passwords.js:18:9:20:5 | obj1 [password] | semmle.label | obj1 [password] | +| passwords.js:18:9:18:12 | obj1 [password] | semmle.label | obj1 [password] | | passwords.js:18:16:20:5 | {\\n ... ]\\n } [password] | semmle.label | {\\n ... ]\\n } [password] | | passwords.js:19:19:19:19 | x | semmle.label | x | | passwords.js:21:17:21:20 | obj1 | semmle.label | obj1 | -| passwords.js:23:9:25:5 | obj2 [x] | semmle.label | obj2 [x] | +| passwords.js:23:9:23:12 | obj2 [x] | semmle.label | obj2 [x] | | passwords.js:23:16:25:5 | {\\n ... ]\\n } [x] | semmle.label | {\\n ... ]\\n } [x] | | passwords.js:24:12:24:19 | password | semmle.label | password | | passwords.js:26:17:26:20 | obj2 | semmle.label | obj2 | -| passwords.js:77:9:77:55 | temp [encryptedPassword] | semmle.label | temp [encryptedPassword] | +| passwords.js:77:9:77:12 | temp [encryptedPassword] | semmle.label | temp [encryptedPassword] | | passwords.js:77:16:77:55 | { encry ... sword } [encryptedPassword] | semmle.label | { encry ... sword } [encryptedPassword] | | passwords.js:77:37:77:53 | req.body.password | semmle.label | req.body.password | | passwords.js:78:17:78:20 | temp [encryptedPassword] | semmle.label | temp [encryptedPassword] | | passwords.js:78:17:78:38 | temp.en ... assword | semmle.label | temp.en ... assword | -| passwords.js:80:9:80:25 | secret | semmle.label | secret | +| passwords.js:80:9:80:14 | secret | semmle.label | secret | | passwords.js:80:18:80:25 | password | semmle.label | password | | passwords.js:81:17:81:31 | `pw: ${secret}` | semmle.label | `pw: ${secret}` | | passwords.js:81:24:81:29 | secret | semmle.label | secret | @@ -166,9 +166,9 @@ nodes | passwords.js:123:17:123:48 | name + ... lueOf() | semmle.label | name + ... lueOf() | | passwords.js:123:31:123:38 | password | semmle.label | password | | passwords.js:123:31:123:48 | password.valueOf() | semmle.label | password.valueOf() | -| passwords.js:127:9:132:5 | config [password] | semmle.label | config [password] | -| passwords.js:127:9:132:5 | config [x] | semmle.label | config [x] | -| passwords.js:127:9:132:5 | config [y] | semmle.label | config [y] | +| passwords.js:127:9:127:14 | config [password] | semmle.label | config [password] | +| passwords.js:127:9:127:14 | config [x] | semmle.label | config [x] | +| passwords.js:127:9:127:14 | config [y] | semmle.label | config [y] | | passwords.js:127:18:132:5 | {\\n ... ]\\n } [password] | semmle.label | {\\n ... ]\\n } [password] | | passwords.js:127:18:132:5 | {\\n ... ]\\n } [x] | semmle.label | {\\n ... ]\\n } [x] | | passwords.js:127:18:132:5 | {\\n ... ]\\n } [y] | semmle.label | {\\n ... ]\\n } [y] | @@ -187,13 +187,13 @@ nodes | passwords.js:142:26:142:34 | arguments [0] | semmle.label | arguments [0] | | passwords.js:142:26:142:34 | arguments [ArrayElement] | semmle.label | arguments [ArrayElement] | | passwords.js:142:26:142:34 | arguments [ArrayElement] | semmle.label | arguments [ArrayElement] | -| passwords.js:146:9:148:5 | config [x] | semmle.label | config [x] | +| passwords.js:146:9:146:14 | config [x] | semmle.label | config [x] | | passwords.js:146:18:148:5 | {\\n ... ]\\n } [x] | semmle.label | {\\n ... ]\\n } [x] | | passwords.js:147:12:147:19 | password | semmle.label | password | | passwords.js:149:21:149:26 | config [x] | semmle.label | config [x] | | passwords.js:149:21:149:28 | config.x | semmle.label | config.x | | passwords.js:150:21:150:31 | process.env | semmle.label | process.env | -| passwords.js:152:9:152:63 | procdesc | semmle.label | procdesc | +| passwords.js:152:9:152:16 | procdesc | semmle.label | procdesc | | passwords.js:152:20:152:44 | Util.in ... ss.env) | semmle.label | Util.in ... ss.env) | | passwords.js:152:20:152:63 | Util.in ... /g, '') | semmle.label | Util.in ... /g, '') | | passwords.js:152:33:152:43 | process.env | semmle.label | process.env | diff --git a/javascript/ql/test/query-tests/Security/CWE-312/CleartextStorage.expected b/javascript/ql/test/query-tests/Security/CWE-312/CleartextStorage.expected index fcb6c03d006a..035ea1cae57d 100644 --- a/javascript/ql/test/query-tests/Security/CWE-312/CleartextStorage.expected +++ b/javascript/ql/test/query-tests/Security/CWE-312/CleartextStorage.expected @@ -10,17 +10,17 @@ | tst-webstorage.js:3:20:3:32 | data.password | tst-webstorage.js:3:20:3:32 | data.password | tst-webstorage.js:3:20:3:32 | data.password | This stores sensitive data returned by $@ as clear text. | tst-webstorage.js:3:20:3:32 | data.password | an access to password | | tst-webstorage.js:4:29:4:41 | data.password | tst-webstorage.js:4:29:4:41 | data.password | tst-webstorage.js:4:29:4:41 | data.password | This stores sensitive data returned by $@ as clear text. | tst-webstorage.js:4:29:4:41 | data.password | an access to password | edges -| CleartextStorage2.js:5:7:5:58 | pw | CleartextStorage2.js:7:33:7:34 | pw | provenance | | -| CleartextStorage2.js:5:12:5:58 | url.par ... assword | CleartextStorage2.js:5:7:5:58 | pw | provenance | | +| CleartextStorage2.js:5:7:5:8 | pw | CleartextStorage2.js:7:33:7:34 | pw | provenance | | +| CleartextStorage2.js:5:12:5:58 | url.par ... assword | CleartextStorage2.js:5:7:5:8 | pw | provenance | | | CleartextStorage2.js:7:33:7:34 | pw | CleartextStorage2.js:7:19:7:34 | 'password=' + pw | provenance | | -| CleartextStorage.js:5:7:5:40 | pw | CleartextStorage.js:6:26:6:27 | pw | provenance | | -| CleartextStorage.js:5:12:5:40 | req.par ... sword") | CleartextStorage.js:5:7:5:40 | pw | provenance | | +| CleartextStorage.js:5:7:5:8 | pw | CleartextStorage.js:6:26:6:27 | pw | provenance | | +| CleartextStorage.js:5:12:5:40 | req.par ... sword") | CleartextStorage.js:5:7:5:8 | pw | provenance | | nodes -| CleartextStorage2.js:5:7:5:58 | pw | semmle.label | pw | +| CleartextStorage2.js:5:7:5:8 | pw | semmle.label | pw | | CleartextStorage2.js:5:12:5:58 | url.par ... assword | semmle.label | url.par ... assword | | CleartextStorage2.js:7:19:7:34 | 'password=' + pw | semmle.label | 'password=' + pw | | CleartextStorage2.js:7:33:7:34 | pw | semmle.label | pw | -| CleartextStorage.js:5:7:5:40 | pw | semmle.label | pw | +| CleartextStorage.js:5:7:5:8 | pw | semmle.label | pw | | CleartextStorage.js:5:12:5:40 | req.par ... sword") | semmle.label | req.par ... sword") | | CleartextStorage.js:6:26:6:27 | pw | semmle.label | pw | | tst-angularjs.js:3:32:3:45 | data1.password | semmle.label | data1.password | diff --git a/javascript/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected b/javascript/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected index 660a49e6bb2a..f7e3f04dbb0a 100644 --- a/javascript/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected +++ b/javascript/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected @@ -5,11 +5,11 @@ | tst.js:22:21:22:30 | secretText | tst.js:3:18:3:24 | trusted | tst.js:22:21:22:30 | secretText | $@ depends on $@. | tst.js:21:22:21:60 | crypto. ... ', key) | A broken or weak cryptographic algorithm | tst.js:3:18:3:24 | trusted | sensitive data from an access to trusted | | tst.js:22:21:22:30 | secretText | tst.js:22:21:22:30 | secretText | tst.js:22:21:22:30 | secretText | $@ depends on $@. | tst.js:21:22:21:60 | crypto. ... ', key) | A broken or weak cryptographic algorithm | tst.js:22:21:22:30 | secretText | sensitive data from an access to secretText | edges -| tst.js:3:5:3:24 | secretText | tst.js:11:17:11:26 | secretText | provenance | | -| tst.js:3:5:3:24 | secretText | tst.js:22:21:22:30 | secretText | provenance | | -| tst.js:3:18:3:24 | trusted | tst.js:3:5:3:24 | secretText | provenance | | +| tst.js:3:5:3:14 | secretText | tst.js:11:17:11:26 | secretText | provenance | | +| tst.js:3:5:3:14 | secretText | tst.js:22:21:22:30 | secretText | provenance | | +| tst.js:3:18:3:24 | trusted | tst.js:3:5:3:14 | secretText | provenance | | nodes -| tst.js:3:5:3:24 | secretText | semmle.label | secretText | +| tst.js:3:5:3:14 | secretText | semmle.label | secretText | | tst.js:3:18:3:24 | trusted | semmle.label | trusted | | tst.js:11:17:11:26 | secretText | semmle.label | secretText | | tst.js:17:17:17:25 | o.trusted | semmle.label | o.trusted | diff --git a/javascript/ql/test/query-tests/Security/CWE-338/InsecureRandomness.expected b/javascript/ql/test/query-tests/Security/CWE-338/InsecureRandomness.expected index fb24179ae561..cce22e3eee7a 100644 --- a/javascript/ql/test/query-tests/Security/CWE-338/InsecureRandomness.expected +++ b/javascript/ql/test/query-tests/Security/CWE-338/InsecureRandomness.expected @@ -21,24 +21,24 @@ | tst.js:118:23:118:63 | Math.fl ... 00_000) | tst.js:118:34:118:46 | Math.random() | tst.js:118:23:118:63 | Math.fl ... 00_000) | This uses a cryptographically insecure random number generated at $@ in a security context. | tst.js:118:34:118:46 | Math.random() | Math.random() | | tst.js:120:16:120:28 | Math.random() | tst.js:120:16:120:28 | Math.random() | tst.js:120:16:120:28 | Math.random() | This uses a cryptographically insecure random number generated at $@ in a security context. | tst.js:120:16:120:28 | Math.random() | Math.random() | | tst.js:121:18:121:30 | Math.random() | tst.js:121:18:121:30 | Math.random() | tst.js:121:18:121:30 | Math.random() | This uses a cryptographically insecure random number generated at $@ in a security context. | tst.js:121:18:121:30 | Math.random() | Math.random() | -| tst.js:136:9:136:67 | password | tst.js:136:38:136:50 | Math.random() | tst.js:136:9:136:67 | password | This uses a cryptographically insecure random number generated at $@ in a security context. | tst.js:136:38:136:50 | Math.random() | Math.random() | +| tst.js:136:9:136:16 | password | tst.js:136:38:136:50 | Math.random() | tst.js:136:9:136:16 | password | This uses a cryptographically insecure random number generated at $@ in a security context. | tst.js:136:38:136:50 | Math.random() | Math.random() | edges | tst.js:6:31:6:43 | Math.random() | tst.js:6:20:6:43 | "prefix ... andom() | provenance | Config | -| tst.js:19:9:19:36 | suffix | tst.js:20:31:20:36 | suffix | provenance | | +| tst.js:19:9:19:14 | suffix | tst.js:20:31:20:36 | suffix | provenance | | | tst.js:19:18:19:30 | Math.random() | tst.js:19:18:19:36 | Math.random() % 255 | provenance | Config | -| tst.js:19:18:19:36 | Math.random() % 255 | tst.js:19:9:19:36 | suffix | provenance | | +| tst.js:19:18:19:36 | Math.random() % 255 | tst.js:19:9:19:14 | suffix | provenance | | | tst.js:20:31:20:36 | suffix | tst.js:20:20:20:36 | "prefix" + suffix | provenance | Config | -| tst.js:28:9:28:26 | pw | tst.js:29:20:29:21 | pw | provenance | | -| tst.js:28:14:28:26 | Math.random() | tst.js:28:9:28:26 | pw | provenance | | +| tst.js:28:9:28:10 | pw | tst.js:29:20:29:21 | pw | provenance | | +| tst.js:28:14:28:26 | Math.random() | tst.js:28:9:28:10 | pw | provenance | | | tst.js:41:21:41:33 | Math.random() | tst.js:41:20:41:33 | !Math.random() | provenance | Config | | tst.js:61:22:61:34 | Math.random() | tst.js:61:17:61:34 | '' + Math.random() | provenance | Config | | tst.js:66:29:66:41 | Math.random() | tst.js:66:18:66:42 | Math.fl ... ndom()) | provenance | Config | -| tst.js:71:9:71:48 | rand | tst.js:72:34:72:37 | rand | provenance | | -| tst.js:71:16:71:48 | Math.fl ... 999999) | tst.js:71:9:71:48 | rand | provenance | | +| tst.js:71:9:71:12 | rand | tst.js:72:34:72:37 | rand | provenance | | +| tst.js:71:16:71:48 | Math.fl ... 999999) | tst.js:71:9:71:12 | rand | provenance | | | tst.js:71:27:71:39 | Math.random() | tst.js:71:27:71:47 | Math.ra ... 9999999 | provenance | Config | | tst.js:71:27:71:47 | Math.ra ... 9999999 | tst.js:71:16:71:48 | Math.fl ... 999999) | provenance | Config | -| tst.js:72:9:72:48 | concat | tst.js:73:23:73:28 | concat | provenance | | -| tst.js:72:18:72:48 | ts.toSt ... tring() | tst.js:72:9:72:48 | concat | provenance | | +| tst.js:72:9:72:14 | concat | tst.js:73:23:73:28 | concat | provenance | | +| tst.js:72:18:72:48 | ts.toSt ... tring() | tst.js:72:9:72:14 | concat | provenance | | | tst.js:72:34:72:37 | rand | tst.js:72:34:72:48 | rand.toString() | provenance | Config | | tst.js:72:34:72:48 | rand.toString() | tst.js:72:18:72:48 | ts.toSt ... tring() | provenance | Config | | tst.js:77:16:77:21 | secret | tst.js:77:16:77:21 | secret | provenance | | @@ -51,7 +51,7 @@ edges | tst.js:117:26:117:54 | Math.ra ... 000_000 | tst.js:117:15:117:55 | Math.fl ... 00_000) | provenance | Config | | tst.js:118:34:118:46 | Math.random() | tst.js:118:34:118:62 | Math.ra ... 000_000 | provenance | Config | | tst.js:118:34:118:62 | Math.ra ... 000_000 | tst.js:118:23:118:63 | Math.fl ... 00_000) | provenance | Config | -| tst.js:136:21:136:67 | chars[M ... ength)] | tst.js:136:9:136:67 | password | provenance | Config | +| tst.js:136:21:136:67 | chars[M ... ength)] | tst.js:136:9:136:16 | password | provenance | Config | | tst.js:136:27:136:66 | Math.fl ... length) | tst.js:136:21:136:67 | chars[M ... ength)] | provenance | Config | | tst.js:136:38:136:50 | Math.random() | tst.js:136:38:136:65 | Math.ra ... .length | provenance | Config | | tst.js:136:38:136:65 | Math.ra ... .length | tst.js:136:27:136:66 | Math.fl ... length) | provenance | Config | @@ -60,12 +60,12 @@ nodes | tst.js:6:20:6:43 | "prefix ... andom() | semmle.label | "prefix ... andom() | | tst.js:6:31:6:43 | Math.random() | semmle.label | Math.random() | | tst.js:10:20:10:32 | Math.random() | semmle.label | Math.random() | -| tst.js:19:9:19:36 | suffix | semmle.label | suffix | +| tst.js:19:9:19:14 | suffix | semmle.label | suffix | | tst.js:19:18:19:30 | Math.random() | semmle.label | Math.random() | | tst.js:19:18:19:36 | Math.random() % 255 | semmle.label | Math.random() % 255 | | tst.js:20:20:20:36 | "prefix" + suffix | semmle.label | "prefix" + suffix | | tst.js:20:31:20:36 | suffix | semmle.label | suffix | -| tst.js:28:9:28:26 | pw | semmle.label | pw | +| tst.js:28:9:28:10 | pw | semmle.label | pw | | tst.js:28:14:28:26 | Math.random() | semmle.label | Math.random() | | tst.js:29:20:29:21 | pw | semmle.label | pw | | tst.js:41:20:41:33 | !Math.random() | semmle.label | !Math.random() | @@ -77,11 +77,11 @@ nodes | tst.js:61:22:61:34 | Math.random() | semmle.label | Math.random() | | tst.js:66:18:66:42 | Math.fl ... ndom()) | semmle.label | Math.fl ... ndom()) | | tst.js:66:29:66:41 | Math.random() | semmle.label | Math.random() | -| tst.js:71:9:71:48 | rand | semmle.label | rand | +| tst.js:71:9:71:12 | rand | semmle.label | rand | | tst.js:71:16:71:48 | Math.fl ... 999999) | semmle.label | Math.fl ... 999999) | | tst.js:71:27:71:39 | Math.random() | semmle.label | Math.random() | | tst.js:71:27:71:47 | Math.ra ... 9999999 | semmle.label | Math.ra ... 9999999 | -| tst.js:72:9:72:48 | concat | semmle.label | concat | +| tst.js:72:9:72:14 | concat | semmle.label | concat | | tst.js:72:18:72:48 | ts.toSt ... tring() | semmle.label | ts.toSt ... tring() | | tst.js:72:34:72:37 | rand | semmle.label | rand | | tst.js:72:34:72:48 | rand.toString() | semmle.label | rand.toString() | @@ -106,7 +106,7 @@ nodes | tst.js:118:34:118:62 | Math.ra ... 000_000 | semmle.label | Math.ra ... 000_000 | | tst.js:120:16:120:28 | Math.random() | semmle.label | Math.random() | | tst.js:121:18:121:30 | Math.random() | semmle.label | Math.random() | -| tst.js:136:9:136:67 | password | semmle.label | password | +| tst.js:136:9:136:16 | password | semmle.label | password | | tst.js:136:21:136:67 | chars[M ... ength)] | semmle.label | chars[M ... ength)] | | tst.js:136:27:136:66 | Math.fl ... length) | semmle.label | Math.fl ... length) | | tst.js:136:38:136:50 | Math.random() | semmle.label | Math.random() | diff --git a/javascript/ql/test/query-tests/Security/CWE-346/CorsMisconfigurationForCredentials.expected b/javascript/ql/test/query-tests/Security/CWE-346/CorsMisconfigurationForCredentials.expected index 34b731a12d18..f879a9c865b0 100644 --- a/javascript/ql/test/query-tests/Security/CWE-346/CorsMisconfigurationForCredentials.expected +++ b/javascript/ql/test/query-tests/Security/CWE-346/CorsMisconfigurationForCredentials.expected @@ -3,11 +3,11 @@ | tst.js:18:50:18:53 | null | tst.js:18:50:18:53 | null | tst.js:18:50:18:53 | null | $@ leak vulnerability due to a $@. | tst.js:19:5:19:59 | res.set ... , true) | Credential | tst.js:18:50:18:53 | null | misconfigured CORS header value | | tst.js:23:50:23:55 | "null" | tst.js:23:50:23:55 | "null" | tst.js:23:50:23:55 | "null" | $@ leak vulnerability due to a $@. | tst.js:24:5:24:59 | res.set ... , true) | Credential | tst.js:23:50:23:55 | "null" | misconfigured CORS header value | edges -| tst.js:12:9:12:54 | origin | tst.js:13:50:13:55 | origin | provenance | | -| tst.js:12:18:12:41 | url.par ... , true) | tst.js:12:9:12:54 | origin | provenance | | +| tst.js:12:9:12:14 | origin | tst.js:13:50:13:55 | origin | provenance | | +| tst.js:12:18:12:41 | url.par ... , true) | tst.js:12:9:12:14 | origin | provenance | | | tst.js:12:28:12:34 | req.url | tst.js:12:18:12:41 | url.par ... , true) | provenance | | nodes -| tst.js:12:9:12:54 | origin | semmle.label | origin | +| tst.js:12:9:12:14 | origin | semmle.label | origin | | tst.js:12:18:12:41 | url.par ... , true) | semmle.label | url.par ... , true) | | tst.js:12:28:12:34 | req.url | semmle.label | req.url | | tst.js:13:50:13:55 | origin | semmle.label | origin | diff --git a/javascript/ql/test/query-tests/Security/CWE-377/InsecureTemporaryFile.expected b/javascript/ql/test/query-tests/Security/CWE-377/InsecureTemporaryFile.expected index 29e82a609567..adc9540b630c 100644 --- a/javascript/ql/test/query-tests/Security/CWE-377/InsecureTemporaryFile.expected +++ b/javascript/ql/test/query-tests/Security/CWE-377/InsecureTemporaryFile.expected @@ -5,30 +5,30 @@ | insecure-temporary-file.js:26:22:26:29 | tmpPath2 | insecure-temporary-file.js:25:32:25:42 | os.tmpdir() | insecure-temporary-file.js:26:22:26:29 | tmpPath2 | Insecure creation of file in $@. | insecure-temporary-file.js:25:32:25:42 | os.tmpdir() | the os temp dir | | insecure-temporary-file.js:28:17:28:24 | tmpPath2 | insecure-temporary-file.js:25:32:25:42 | os.tmpdir() | insecure-temporary-file.js:28:17:28:24 | tmpPath2 | Insecure creation of file in $@. | insecure-temporary-file.js:25:32:25:42 | os.tmpdir() | the os temp dir | edges -| insecure-temporary-file.js:7:9:11:5 | tmpLocation | insecure-temporary-file.js:13:22:13:32 | tmpLocation | provenance | | -| insecure-temporary-file.js:7:23:11:5 | path.jo ... )\\n ) | insecure-temporary-file.js:7:9:11:5 | tmpLocation | provenance | | +| insecure-temporary-file.js:7:9:7:19 | tmpLocation | insecure-temporary-file.js:13:22:13:32 | tmpLocation | provenance | | +| insecure-temporary-file.js:7:23:11:5 | path.jo ... )\\n ) | insecure-temporary-file.js:7:9:7:19 | tmpLocation | provenance | | | insecure-temporary-file.js:8:21:8:31 | os.tmpdir() | insecure-temporary-file.js:7:23:11:5 | path.jo ... )\\n ) | provenance | | -| insecure-temporary-file.js:15:9:15:34 | tmpPath | insecure-temporary-file.js:17:32:17:38 | tmpPath | provenance | | -| insecure-temporary-file.js:15:9:15:34 | tmpPath | insecure-temporary-file.js:23:32:23:38 | tmpPath | provenance | | -| insecure-temporary-file.js:15:19:15:34 | "/tmp/something" | insecure-temporary-file.js:15:9:15:34 | tmpPath | provenance | | +| insecure-temporary-file.js:15:9:15:15 | tmpPath | insecure-temporary-file.js:17:32:17:38 | tmpPath | provenance | | +| insecure-temporary-file.js:15:9:15:15 | tmpPath | insecure-temporary-file.js:23:32:23:38 | tmpPath | provenance | | +| insecure-temporary-file.js:15:19:15:34 | "/tmp/something" | insecure-temporary-file.js:15:9:15:15 | tmpPath | provenance | | | insecure-temporary-file.js:17:32:17:38 | tmpPath | insecure-temporary-file.js:17:22:17:49 | path.jo ... /foo/") | provenance | | | insecure-temporary-file.js:23:32:23:38 | tmpPath | insecure-temporary-file.js:23:22:23:49 | path.jo ... /foo/") | provenance | | -| insecure-temporary-file.js:25:11:25:92 | tmpPath2 | insecure-temporary-file.js:26:22:26:29 | tmpPath2 | provenance | | -| insecure-temporary-file.js:25:11:25:92 | tmpPath2 | insecure-temporary-file.js:28:17:28:24 | tmpPath2 | provenance | | -| insecure-temporary-file.js:25:22:25:92 | path.jo ... )}.md`) | insecure-temporary-file.js:25:11:25:92 | tmpPath2 | provenance | | +| insecure-temporary-file.js:25:11:25:18 | tmpPath2 | insecure-temporary-file.js:26:22:26:29 | tmpPath2 | provenance | | +| insecure-temporary-file.js:25:11:25:18 | tmpPath2 | insecure-temporary-file.js:28:17:28:24 | tmpPath2 | provenance | | +| insecure-temporary-file.js:25:22:25:92 | path.jo ... )}.md`) | insecure-temporary-file.js:25:11:25:18 | tmpPath2 | provenance | | | insecure-temporary-file.js:25:32:25:42 | os.tmpdir() | insecure-temporary-file.js:25:22:25:92 | path.jo ... )}.md`) | provenance | | nodes -| insecure-temporary-file.js:7:9:11:5 | tmpLocation | semmle.label | tmpLocation | +| insecure-temporary-file.js:7:9:7:19 | tmpLocation | semmle.label | tmpLocation | | insecure-temporary-file.js:7:23:11:5 | path.jo ... )\\n ) | semmle.label | path.jo ... )\\n ) | | insecure-temporary-file.js:8:21:8:31 | os.tmpdir() | semmle.label | os.tmpdir() | | insecure-temporary-file.js:13:22:13:32 | tmpLocation | semmle.label | tmpLocation | -| insecure-temporary-file.js:15:9:15:34 | tmpPath | semmle.label | tmpPath | +| insecure-temporary-file.js:15:9:15:15 | tmpPath | semmle.label | tmpPath | | insecure-temporary-file.js:15:19:15:34 | "/tmp/something" | semmle.label | "/tmp/something" | | insecure-temporary-file.js:17:22:17:49 | path.jo ... /foo/") | semmle.label | path.jo ... /foo/") | | insecure-temporary-file.js:17:32:17:38 | tmpPath | semmle.label | tmpPath | | insecure-temporary-file.js:23:22:23:49 | path.jo ... /foo/") | semmle.label | path.jo ... /foo/") | | insecure-temporary-file.js:23:32:23:38 | tmpPath | semmle.label | tmpPath | -| insecure-temporary-file.js:25:11:25:92 | tmpPath2 | semmle.label | tmpPath2 | +| insecure-temporary-file.js:25:11:25:18 | tmpPath2 | semmle.label | tmpPath2 | | insecure-temporary-file.js:25:22:25:92 | path.jo ... )}.md`) | semmle.label | path.jo ... )}.md`) | | insecure-temporary-file.js:25:32:25:42 | os.tmpdir() | semmle.label | os.tmpdir() | | insecure-temporary-file.js:26:22:26:29 | tmpPath2 | semmle.label | tmpPath2 | diff --git a/javascript/ql/test/query-tests/Security/CWE-400/ReDoS/PolynomialReDoS.expected b/javascript/ql/test/query-tests/Security/CWE-400/ReDoS/PolynomialReDoS.expected index 7484e72c3f0a..d2de005f42ab 100644 --- a/javascript/ql/test/query-tests/Security/CWE-400/ReDoS/PolynomialReDoS.expected +++ b/javascript/ql/test/query-tests/Security/CWE-400/ReDoS/PolynomialReDoS.expected @@ -111,9 +111,9 @@ edges | lib/lib.js:35:28:35:31 | name | lib/lib.js:36:13:36:16 | name | provenance | | | lib/lib.js:41:32:41:35 | name | lib/lib.js:42:17:42:20 | name | provenance | | | lib/lib.js:41:32:41:35 | name | lib/lib.js:44:12:44:15 | name | provenance | | -| lib/lib.js:44:5:44:25 | name | lib/lib.js:45:17:45:20 | name | provenance | | +| lib/lib.js:44:5:44:8 | name | lib/lib.js:45:17:45:20 | name | provenance | | | lib/lib.js:44:12:44:15 | name | lib/lib.js:44:12:44:25 | name.substr(1) | provenance | | -| lib/lib.js:44:12:44:25 | name.substr(1) | lib/lib.js:44:5:44:25 | name | provenance | | +| lib/lib.js:44:12:44:25 | name.substr(1) | lib/lib.js:44:5:44:8 | name | provenance | | | lib/lib.js:52:22:52:25 | name | lib/lib.js:53:16:53:19 | name | provenance | | | lib/moduleLib/moduleLib.js:1:28:1:31 | name | lib/moduleLib/moduleLib.js:2:13:2:16 | name | provenance | | | lib/otherLib/js/src/index.js:1:28:1:31 | name | lib/otherLib/js/src/index.js:2:13:2:16 | name | provenance | | @@ -131,160 +131,160 @@ edges | lib/subLib5/subclass.js:4:10:4:13 | name | lib/subLib5/subclass.js:5:16:5:19 | name | provenance | | | lib/subLib6/index.js:1:32:1:35 | name | lib/subLib6/index.js:2:14:2:17 | name | provenance | | | lib/sublib/factory.js:12:26:12:29 | name | lib/sublib/factory.js:13:24:13:27 | name | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:7:2:7:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:7:2:7:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:8:2:8:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:8:2:8:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:9:2:9:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:9:2:9:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:10:2:10:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:11:2:11:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:11:2:11:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:12:2:12:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:12:2:12:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:13:2:13:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:14:2:14:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:15:2:15:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:15:2:15:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:16:2:16:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:16:2:16:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:17:23:17:29 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:17:23:17:29 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:18:2:18:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:18:2:18:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:19:2:19:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:19:2:19:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:20:2:20:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:20:2:20:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:21:6:21:12 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:25:2:25:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:25:2:25:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:26:2:26:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:27:77:27:83 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:28:76:28:82 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:30:2:30:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:30:2:30:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:31:2:31:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:32:2:32:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:33:2:33:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:33:2:33:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:34:2:34:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:36:2:36:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:36:2:36:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:37:2:37:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:37:2:37:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:38:2:38:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:38:2:38:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:40:2:40:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:40:2:40:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:41:2:41:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:43:2:43:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:43:2:43:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:44:2:44:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:46:9:46:15 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:47:2:47:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:48:2:48:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:48:2:48:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:50:14:50:20 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:50:14:50:20 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:51:26:51:32 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:51:26:51:32 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:52:22:52:28 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:52:22:52:28 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:53:21:53:27 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:53:21:53:27 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:54:22:54:28 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:54:22:54:28 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:55:23:55:29 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:55:23:55:29 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:56:22:56:28 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:56:22:56:28 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:57:25:57:31 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:57:25:57:31 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:58:21:58:27 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:58:21:58:27 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:59:23:59:29 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:59:23:59:29 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:60:17:60:23 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:61:18:61:24 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:62:17:62:23 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:62:17:62:23 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:63:21:63:27 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:63:21:63:27 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:64:24:64:30 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:64:24:64:30 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:65:24:65:30 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:65:24:65:30 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:66:19:66:25 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:66:19:66:25 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:67:18:67:24 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:67:18:67:24 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:71:2:71:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:71:2:71:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:73:2:73:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:73:2:73:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:75:2:75:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:75:2:75:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:77:2:77:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:77:2:77:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:80:2:80:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:80:2:80:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:81:2:81:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:81:2:81:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:82:2:82:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:83:2:83:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:84:2:84:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:86:2:86:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:86:2:86:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:88:2:88:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:88:2:88:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:89:2:89:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:89:2:89:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:90:2:90:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:90:2:90:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:91:2:91:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:92:2:92:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:94:2:94:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:94:2:94:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:95:2:95:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:95:2:95:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:96:2:96:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:96:2:96:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:98:2:98:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:98:2:98:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:100:2:100:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:100:2:100:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:101:2:101:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:101:2:101:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:102:2:102:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:102:2:102:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:103:2:103:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:103:2:103:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:104:2:104:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:104:2:104:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:105:2:105:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:107:2:107:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:107:2:107:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:108:2:108:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:108:2:108:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:109:2:109:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:109:2:109:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:111:2:111:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:111:2:111:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:112:2:112:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:112:2:112:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:114:2:114:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:114:2:114:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:116:2:116:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:116:2:116:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:118:2:118:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:118:2:118:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:127:2:127:8 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:129:17:129:23 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:132:18:132:24 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:135:21:135:27 | tainted | provenance | | -| polynomial-redos.js:5:6:5:32 | tainted | polynomial-redos.js:138:5:138:11 | tainted | provenance | | -| polynomial-redos.js:5:16:5:32 | req.query.tainted | polynomial-redos.js:5:6:5:32 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:7:2:7:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:7:2:7:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:8:2:8:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:8:2:8:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:9:2:9:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:9:2:9:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:10:2:10:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:11:2:11:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:11:2:11:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:12:2:12:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:12:2:12:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:13:2:13:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:14:2:14:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:15:2:15:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:15:2:15:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:16:2:16:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:16:2:16:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:17:23:17:29 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:17:23:17:29 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:18:2:18:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:18:2:18:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:19:2:19:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:19:2:19:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:20:2:20:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:20:2:20:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:21:6:21:12 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:25:2:25:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:25:2:25:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:26:2:26:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:27:77:27:83 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:28:76:28:82 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:30:2:30:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:30:2:30:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:31:2:31:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:32:2:32:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:33:2:33:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:33:2:33:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:34:2:34:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:36:2:36:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:36:2:36:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:37:2:37:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:37:2:37:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:38:2:38:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:38:2:38:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:40:2:40:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:40:2:40:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:41:2:41:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:43:2:43:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:43:2:43:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:44:2:44:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:46:9:46:15 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:47:2:47:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:48:2:48:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:48:2:48:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:50:14:50:20 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:50:14:50:20 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:51:26:51:32 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:51:26:51:32 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:52:22:52:28 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:52:22:52:28 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:53:21:53:27 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:53:21:53:27 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:54:22:54:28 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:54:22:54:28 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:55:23:55:29 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:55:23:55:29 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:56:22:56:28 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:56:22:56:28 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:57:25:57:31 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:57:25:57:31 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:58:21:58:27 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:58:21:58:27 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:59:23:59:29 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:59:23:59:29 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:60:17:60:23 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:61:18:61:24 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:62:17:62:23 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:62:17:62:23 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:63:21:63:27 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:63:21:63:27 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:64:24:64:30 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:64:24:64:30 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:65:24:65:30 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:65:24:65:30 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:66:19:66:25 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:66:19:66:25 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:67:18:67:24 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:67:18:67:24 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:71:2:71:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:71:2:71:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:73:2:73:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:73:2:73:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:75:2:75:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:75:2:75:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:77:2:77:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:77:2:77:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:80:2:80:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:80:2:80:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:81:2:81:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:81:2:81:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:82:2:82:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:83:2:83:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:84:2:84:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:86:2:86:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:86:2:86:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:88:2:88:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:88:2:88:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:89:2:89:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:89:2:89:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:90:2:90:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:90:2:90:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:91:2:91:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:92:2:92:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:94:2:94:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:94:2:94:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:95:2:95:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:95:2:95:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:96:2:96:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:96:2:96:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:98:2:98:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:98:2:98:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:100:2:100:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:100:2:100:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:101:2:101:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:101:2:101:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:102:2:102:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:102:2:102:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:103:2:103:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:103:2:103:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:104:2:104:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:104:2:104:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:105:2:105:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:107:2:107:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:107:2:107:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:108:2:108:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:108:2:108:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:109:2:109:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:109:2:109:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:111:2:111:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:111:2:111:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:112:2:112:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:112:2:112:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:114:2:114:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:114:2:114:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:116:2:116:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:116:2:116:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:118:2:118:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:118:2:118:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:127:2:127:8 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:129:17:129:23 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:132:18:132:24 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:135:21:135:27 | tainted | provenance | | +| polynomial-redos.js:5:6:5:12 | tainted | polynomial-redos.js:138:5:138:11 | tainted | provenance | | +| polynomial-redos.js:5:16:5:32 | req.query.tainted | polynomial-redos.js:5:6:5:12 | tainted | provenance | | | polynomial-redos.js:7:2:7:8 | tainted | polynomial-redos.js:8:2:8:8 | tainted | provenance | | | polynomial-redos.js:7:2:7:8 | tainted | polynomial-redos.js:8:2:8:8 | tainted | provenance | | | polynomial-redos.js:8:2:8:8 | tainted | polynomial-redos.js:9:2:9:8 | tainted | provenance | | @@ -435,27 +435,27 @@ edges | polynomial-redos.js:118:2:118:8 | tainted | polynomial-redos.js:121:18:121:24 | tainted | provenance | | | polynomial-redos.js:118:2:118:8 | tainted | polynomial-redos.js:127:2:127:8 | tainted | provenance | | | polynomial-redos.js:120:2:125:3 | (functi ... os]\\n\\t}) [tainted] | polynomial-redos.js:121:18:121:24 | tainted | provenance | | -| polynomial-redos.js:121:7:121:55 | replaced | polynomial-redos.js:123:13:123:20 | replaced | provenance | | +| polynomial-redos.js:121:7:121:14 | replaced | polynomial-redos.js:123:13:123:20 | replaced | provenance | | | polynomial-redos.js:121:18:121:24 | tainted | polynomial-redos.js:121:18:121:55 | tainted ... /g, '') | provenance | | -| polynomial-redos.js:121:18:121:55 | tainted ... /g, '') | polynomial-redos.js:121:7:121:55 | replaced | provenance | | -| polynomial-redos.js:123:3:123:20 | result | polynomial-redos.js:124:12:124:17 | result | provenance | | -| polynomial-redos.js:123:13:123:20 | replaced | polynomial-redos.js:123:3:123:20 | result | provenance | | +| polynomial-redos.js:121:18:121:55 | tainted ... /g, '') | polynomial-redos.js:121:7:121:14 | replaced | provenance | | +| polynomial-redos.js:123:3:123:8 | result | polynomial-redos.js:124:12:124:17 | result | provenance | | +| polynomial-redos.js:123:13:123:20 | replaced | polynomial-redos.js:123:3:123:8 | result | provenance | | | polynomial-redos.js:127:2:127:8 | tainted | polynomial-redos.js:129:17:129:23 | tainted | provenance | | -| polynomial-redos.js:129:6:129:42 | modified | polynomial-redos.js:130:2:130:9 | modified | provenance | | +| polynomial-redos.js:129:6:129:13 | modified | polynomial-redos.js:130:2:130:9 | modified | provenance | | | polynomial-redos.js:129:17:129:23 | tainted | polynomial-redos.js:129:17:129:42 | tainted ... g, "b") | provenance | | | polynomial-redos.js:129:17:129:23 | tainted | polynomial-redos.js:132:18:132:24 | tainted | provenance | | -| polynomial-redos.js:129:17:129:42 | tainted ... g, "b") | polynomial-redos.js:129:6:129:42 | modified | provenance | | -| polynomial-redos.js:132:6:132:50 | modified2 | polynomial-redos.js:133:2:133:10 | modified2 | provenance | | +| polynomial-redos.js:129:17:129:42 | tainted ... g, "b") | polynomial-redos.js:129:6:129:13 | modified | provenance | | +| polynomial-redos.js:132:6:132:14 | modified2 | polynomial-redos.js:133:2:133:10 | modified2 | provenance | | | polynomial-redos.js:132:18:132:24 | tainted | polynomial-redos.js:132:18:132:50 | tainted ... g, "e") | provenance | | | polynomial-redos.js:132:18:132:24 | tainted | polynomial-redos.js:135:21:135:27 | tainted | provenance | | -| polynomial-redos.js:132:18:132:50 | tainted ... g, "e") | polynomial-redos.js:132:6:132:50 | modified2 | provenance | | -| polynomial-redos.js:135:9:135:47 | modified3 | polynomial-redos.js:136:5:136:13 | modified3 | provenance | | -| polynomial-redos.js:135:9:135:47 | modified3 | polynomial-redos.js:140:2:140:10 | modified3 | provenance | | -| polynomial-redos.js:135:9:135:47 | modified3 | polynomial-redos.js:141:2:141:10 | modified3 | provenance | | -| polynomial-redos.js:135:9:135:47 | modified3 | polynomial-redos.js:142:2:142:10 | modified3 | provenance | | +| polynomial-redos.js:132:18:132:50 | tainted ... g, "e") | polynomial-redos.js:132:6:132:14 | modified2 | provenance | | +| polynomial-redos.js:135:9:135:17 | modified3 | polynomial-redos.js:136:5:136:13 | modified3 | provenance | | +| polynomial-redos.js:135:9:135:17 | modified3 | polynomial-redos.js:140:2:140:10 | modified3 | provenance | | +| polynomial-redos.js:135:9:135:17 | modified3 | polynomial-redos.js:141:2:141:10 | modified3 | provenance | | +| polynomial-redos.js:135:9:135:17 | modified3 | polynomial-redos.js:142:2:142:10 | modified3 | provenance | | | polynomial-redos.js:135:21:135:27 | tainted | polynomial-redos.js:135:21:135:47 | tainted ... /g, "") | provenance | | | polynomial-redos.js:135:21:135:27 | tainted | polynomial-redos.js:138:5:138:11 | tainted | provenance | | -| polynomial-redos.js:135:21:135:47 | tainted ... /g, "") | polynomial-redos.js:135:9:135:47 | modified3 | provenance | | +| polynomial-redos.js:135:21:135:47 | tainted ... /g, "") | polynomial-redos.js:135:9:135:17 | modified3 | provenance | | nodes | lib/closure.js:3:21:3:21 | x | semmle.label | x | | lib/closure.js:4:16:4:16 | x | semmle.label | x | @@ -472,7 +472,7 @@ nodes | lib/lib.js:36:13:36:16 | name | semmle.label | name | | lib/lib.js:41:32:41:35 | name | semmle.label | name | | lib/lib.js:42:17:42:20 | name | semmle.label | name | -| lib/lib.js:44:5:44:25 | name | semmle.label | name | +| lib/lib.js:44:5:44:8 | name | semmle.label | name | | lib/lib.js:44:12:44:15 | name | semmle.label | name | | lib/lib.js:44:12:44:25 | name.substr(1) | semmle.label | name.substr(1) | | lib/lib.js:45:17:45:20 | name | semmle.label | name | @@ -505,7 +505,7 @@ nodes | lib/subLib6/index.js:2:14:2:17 | name | semmle.label | name | | lib/sublib/factory.js:12:26:12:29 | name | semmle.label | name | | lib/sublib/factory.js:13:24:13:27 | name | semmle.label | name | -| polynomial-redos.js:5:6:5:32 | tainted | semmle.label | tainted | +| polynomial-redos.js:5:6:5:12 | tainted | semmle.label | tainted | | polynomial-redos.js:5:16:5:32 | req.query.tainted | semmle.label | req.query.tainted | | polynomial-redos.js:7:2:7:8 | tainted | semmle.label | tainted | | polynomial-redos.js:7:2:7:8 | tainted | semmle.label | tainted | @@ -658,22 +658,22 @@ nodes | polynomial-redos.js:118:2:118:8 | tainted | semmle.label | tainted | | polynomial-redos.js:118:2:118:8 | tainted | semmle.label | tainted | | polynomial-redos.js:120:2:125:3 | (functi ... os]\\n\\t}) [tainted] | semmle.label | (functi ... os]\\n\\t}) [tainted] | -| polynomial-redos.js:121:7:121:55 | replaced | semmle.label | replaced | +| polynomial-redos.js:121:7:121:14 | replaced | semmle.label | replaced | | polynomial-redos.js:121:18:121:24 | tainted | semmle.label | tainted | | polynomial-redos.js:121:18:121:55 | tainted ... /g, '') | semmle.label | tainted ... /g, '') | -| polynomial-redos.js:123:3:123:20 | result | semmle.label | result | +| polynomial-redos.js:123:3:123:8 | result | semmle.label | result | | polynomial-redos.js:123:13:123:20 | replaced | semmle.label | replaced | | polynomial-redos.js:124:12:124:17 | result | semmle.label | result | | polynomial-redos.js:127:2:127:8 | tainted | semmle.label | tainted | -| polynomial-redos.js:129:6:129:42 | modified | semmle.label | modified | +| polynomial-redos.js:129:6:129:13 | modified | semmle.label | modified | | polynomial-redos.js:129:17:129:23 | tainted | semmle.label | tainted | | polynomial-redos.js:129:17:129:42 | tainted ... g, "b") | semmle.label | tainted ... g, "b") | | polynomial-redos.js:130:2:130:9 | modified | semmle.label | modified | -| polynomial-redos.js:132:6:132:50 | modified2 | semmle.label | modified2 | +| polynomial-redos.js:132:6:132:14 | modified2 | semmle.label | modified2 | | polynomial-redos.js:132:18:132:24 | tainted | semmle.label | tainted | | polynomial-redos.js:132:18:132:50 | tainted ... g, "e") | semmle.label | tainted ... g, "e") | | polynomial-redos.js:133:2:133:10 | modified2 | semmle.label | modified2 | -| polynomial-redos.js:135:9:135:47 | modified3 | semmle.label | modified3 | +| polynomial-redos.js:135:9:135:17 | modified3 | semmle.label | modified3 | | polynomial-redos.js:135:21:135:27 | tainted | semmle.label | tainted | | polynomial-redos.js:135:21:135:47 | tainted ... /g, "") | semmle.label | tainted ... /g, "") | | polynomial-redos.js:136:5:136:13 | modified3 | semmle.label | modified3 | diff --git a/javascript/ql/test/query-tests/Security/CWE-400/RemovePropertyInjection/RemotePropertyInjection.expected b/javascript/ql/test/query-tests/Security/CWE-400/RemovePropertyInjection/RemotePropertyInjection.expected index 9b486b593330..036c2e563cfa 100644 --- a/javascript/ql/test/query-tests/Security/CWE-400/RemovePropertyInjection/RemotePropertyInjection.expected +++ b/javascript/ql/test/query-tests/Security/CWE-400/RemovePropertyInjection/RemotePropertyInjection.expected @@ -5,21 +5,21 @@ | tst.js:16:10:16:13 | prop | tst.js:8:28:8:51 | req.que ... trolled | tst.js:16:10:16:13 | prop | A property name to write to depends on a $@. | tst.js:8:28:8:51 | req.que ... trolled | user-provided value | | tstNonExpr.js:8:17:8:23 | userVal | tstNonExpr.js:5:17:5:23 | req.url | tstNonExpr.js:8:17:8:23 | userVal | A header name depends on a $@. | tstNonExpr.js:5:17:5:23 | req.url | user-provided value | edges -| tst.js:8:6:8:52 | prop | tst.js:9:8:9:11 | prop | provenance | | -| tst.js:8:6:8:52 | prop | tst.js:13:15:13:18 | prop | provenance | | -| tst.js:8:6:8:52 | prop | tst.js:14:31:14:34 | prop | provenance | | -| tst.js:8:6:8:52 | prop | tst.js:16:10:16:13 | prop | provenance | | -| tst.js:8:13:8:52 | myCoolL ... rolled) | tst.js:8:6:8:52 | prop | provenance | | +| tst.js:8:6:8:9 | prop | tst.js:9:8:9:11 | prop | provenance | | +| tst.js:8:6:8:9 | prop | tst.js:13:15:13:18 | prop | provenance | | +| tst.js:8:6:8:9 | prop | tst.js:14:31:14:34 | prop | provenance | | +| tst.js:8:6:8:9 | prop | tst.js:16:10:16:13 | prop | provenance | | +| tst.js:8:13:8:52 | myCoolL ... rolled) | tst.js:8:6:8:9 | prop | provenance | | | tst.js:8:28:8:51 | req.que ... trolled | tst.js:8:13:8:52 | myCoolL ... rolled) | provenance | | | tst.js:8:28:8:51 | req.que ... trolled | tst.js:21:25:21:25 | x | provenance | | | tst.js:21:25:21:25 | x | tst.js:22:15:22:15 | x | provenance | | -| tst.js:22:6:22:15 | result | tst.js:23:9:23:14 | result | provenance | | -| tst.js:22:15:22:15 | x | tst.js:22:6:22:15 | result | provenance | | +| tst.js:22:6:22:11 | result | tst.js:23:9:23:14 | result | provenance | | +| tst.js:22:15:22:15 | x | tst.js:22:6:22:11 | result | provenance | | | tst.js:23:9:23:14 | result | tst.js:23:9:23:42 | result. ... length) | provenance | | -| tstNonExpr.js:5:7:5:23 | userVal | tstNonExpr.js:8:17:8:23 | userVal | provenance | | -| tstNonExpr.js:5:17:5:23 | req.url | tstNonExpr.js:5:7:5:23 | userVal | provenance | | +| tstNonExpr.js:5:7:5:13 | userVal | tstNonExpr.js:8:17:8:23 | userVal | provenance | | +| tstNonExpr.js:5:17:5:23 | req.url | tstNonExpr.js:5:7:5:13 | userVal | provenance | | nodes -| tst.js:8:6:8:52 | prop | semmle.label | prop | +| tst.js:8:6:8:9 | prop | semmle.label | prop | | tst.js:8:13:8:52 | myCoolL ... rolled) | semmle.label | myCoolL ... rolled) | | tst.js:8:28:8:51 | req.que ... trolled | semmle.label | req.que ... trolled | | tst.js:9:8:9:11 | prop | semmle.label | prop | @@ -27,11 +27,11 @@ nodes | tst.js:14:31:14:34 | prop | semmle.label | prop | | tst.js:16:10:16:13 | prop | semmle.label | prop | | tst.js:21:25:21:25 | x | semmle.label | x | -| tst.js:22:6:22:15 | result | semmle.label | result | +| tst.js:22:6:22:11 | result | semmle.label | result | | tst.js:22:15:22:15 | x | semmle.label | x | | tst.js:23:9:23:14 | result | semmle.label | result | | tst.js:23:9:23:42 | result. ... length) | semmle.label | result. ... length) | -| tstNonExpr.js:5:7:5:23 | userVal | semmle.label | userVal | +| tstNonExpr.js:5:7:5:13 | userVal | semmle.label | userVal | | tstNonExpr.js:5:17:5:23 | req.url | semmle.label | req.url | | tstNonExpr.js:8:17:8:23 | userVal | semmle.label | userVal | subpaths diff --git a/javascript/ql/test/query-tests/Security/CWE-506/HardcodedDataInterpretedAsCode.expected b/javascript/ql/test/query-tests/Security/CWE-506/HardcodedDataInterpretedAsCode.expected index 85c44d009058..ffbc8cb2482e 100644 --- a/javascript/ql/test/query-tests/Security/CWE-506/HardcodedDataInterpretedAsCode.expected +++ b/javascript/ql/test/query-tests/Security/CWE-506/HardcodedDataInterpretedAsCode.expected @@ -14,12 +14,12 @@ edges | event-stream.js:6:22:6:22 | r | event-stream.js:6:10:6:30 | Buffer. ... "hex") | provenance | Config | | event-stream.js:9:13:9:36 | "2e2f74 ... 617461" | event-stream.js:5:12:5:12 | r | provenance | | | event-stream.js:9:13:9:36 | "2e2f74 ... 617461" | event-stream.js:9:11:9:37 | e("2e2f ... 17461") | provenance | Config | -| tst.js:1:5:1:88 | totallyHarmlessString | tst.js:2:18:2:38 | totally ... sString | provenance | | -| tst.js:1:29:1:88 | '636f6e ... 6e2729' | tst.js:1:5:1:88 | totallyHarmlessString | provenance | | +| tst.js:1:5:1:25 | totallyHarmlessString | tst.js:2:18:2:38 | totally ... sString | provenance | | +| tst.js:1:29:1:88 | '636f6e ... 6e2729' | tst.js:1:5:1:25 | totallyHarmlessString | provenance | | | tst.js:2:6:2:46 | Buffer. ... 'hex') | tst.js:2:6:2:57 | Buffer. ... tring() | provenance | Config | | tst.js:2:18:2:38 | totally ... sString | tst.js:2:6:2:46 | Buffer. ... 'hex') | provenance | Config | -| tst.js:5:5:5:23 | test | tst.js:7:8:7:11 | test | provenance | | -| tst.js:5:12:5:23 | "0123456789" | tst.js:5:5:5:23 | test | provenance | | +| tst.js:5:5:5:8 | test | tst.js:7:8:7:11 | test | provenance | | +| tst.js:5:12:5:23 | "0123456789" | tst.js:5:5:5:8 | test | provenance | | | tst.js:7:8:7:11 | test | tst.js:7:8:7:15 | test+"n" | provenance | Config | nodes | event-stream-orig.js:93:16:93:16 | r | semmle.label | r | @@ -34,12 +34,12 @@ nodes | event-stream.js:6:22:6:22 | r | semmle.label | r | | event-stream.js:9:11:9:37 | e("2e2f ... 17461") | semmle.label | e("2e2f ... 17461") | | event-stream.js:9:13:9:36 | "2e2f74 ... 617461" | semmle.label | "2e2f74 ... 617461" | -| tst.js:1:5:1:88 | totallyHarmlessString | semmle.label | totallyHarmlessString | +| tst.js:1:5:1:25 | totallyHarmlessString | semmle.label | totallyHarmlessString | | tst.js:1:29:1:88 | '636f6e ... 6e2729' | semmle.label | '636f6e ... 6e2729' | | tst.js:2:6:2:46 | Buffer. ... 'hex') | semmle.label | Buffer. ... 'hex') | | tst.js:2:6:2:57 | Buffer. ... tring() | semmle.label | Buffer. ... tring() | | tst.js:2:18:2:38 | totally ... sString | semmle.label | totally ... sString | -| tst.js:5:5:5:23 | test | semmle.label | test | +| tst.js:5:5:5:8 | test | semmle.label | test | | tst.js:5:12:5:23 | "0123456789" | semmle.label | "0123456789" | | tst.js:7:8:7:11 | test | semmle.label | test | | tst.js:7:8:7:15 | test+"n" | semmle.label | test+"n" | diff --git a/javascript/ql/test/query-tests/Security/CWE-522-DecompressionBombs/DecompressionBombs.expected b/javascript/ql/test/query-tests/Security/CWE-522-DecompressionBombs/DecompressionBombs.expected index 11c63c257e83..43fa4f8c6a82 100644 --- a/javascript/ql/test/query-tests/Security/CWE-522-DecompressionBombs/DecompressionBombs.expected +++ b/javascript/ql/test/query-tests/Security/CWE-522-DecompressionBombs/DecompressionBombs.expected @@ -74,16 +74,16 @@ edges | pako.js:13:14:13:22 | req.files | pako.js:13:14:13:39 | req.fil ... le.data | provenance | | | pako.js:13:14:13:39 | req.fil ... le.data | pako.js:28:19:28:25 | zipFile | provenance | | | pako.js:17:19:17:25 | zipFile | pako.js:18:48:18:54 | zipFile | provenance | | -| pako.js:18:11:18:68 | myArray | pako.js:21:31:21:37 | myArray | provenance | | -| pako.js:18:21:18:68 | Buffer. ... uffer)) | pako.js:18:11:18:68 | myArray | provenance | | +| pako.js:18:11:18:17 | myArray | pako.js:21:31:21:37 | myArray | provenance | | +| pako.js:18:21:18:68 | Buffer. ... uffer)) | pako.js:18:11:18:17 | myArray | provenance | | | pako.js:18:33:18:67 | new Uin ... buffer) | pako.js:18:21:18:68 | Buffer. ... uffer)) | provenance | | | pako.js:18:48:18:54 | zipFile | pako.js:18:48:18:66 | zipFile.data.buffer | provenance | | | pako.js:18:48:18:66 | zipFile.data.buffer | pako.js:18:33:18:67 | new Uin ... buffer) | provenance | Config | | pako.js:28:19:28:25 | zipFile | pako.js:29:36:29:42 | zipFile | provenance | | -| pako.js:29:11:29:62 | myArray | pako.js:32:31:32:37 | myArray | provenance | | -| pako.js:29:11:29:62 | myArray [ArrayElement] | pako.js:32:31:32:37 | myArray | provenance | | -| pako.js:29:21:29:55 | new Uin ... buffer) | pako.js:29:11:29:62 | myArray | provenance | | -| pako.js:29:21:29:55 | new Uin ... buffer) [ArrayElement] | pako.js:29:11:29:62 | myArray [ArrayElement] | provenance | | +| pako.js:29:11:29:17 | myArray | pako.js:32:31:32:37 | myArray | provenance | | +| pako.js:29:11:29:17 | myArray [ArrayElement] | pako.js:32:31:32:37 | myArray | provenance | | +| pako.js:29:21:29:55 | new Uin ... buffer) | pako.js:29:11:29:17 | myArray | provenance | | +| pako.js:29:21:29:55 | new Uin ... buffer) [ArrayElement] | pako.js:29:11:29:17 | myArray [ArrayElement] | provenance | | | pako.js:29:36:29:42 | zipFile | pako.js:29:36:29:54 | zipFile.data.buffer | provenance | | | pako.js:29:36:29:54 | zipFile.data.buffer | pako.js:29:21:29:55 | new Uin ... buffer) | provenance | Config | | pako.js:29:36:29:54 | zipFile.data.buffer | pako.js:29:21:29:55 | new Uin ... buffer) [ArrayElement] | provenance | | @@ -132,8 +132,8 @@ edges | zlib.js:75:39:75:45 | zipFile | zlib.js:75:39:75:50 | zipFile.data | provenance | | | zlib.js:75:39:75:50 | zipFile.data | zlib.js:75:25:75:51 | Readabl ... e.data) | provenance | Config | | zlib.js:82:43:82:49 | zipFile | zlib.js:83:39:83:45 | zipFile | provenance | | -| zlib.js:83:11:83:51 | inputStream | zlib.js:86:9:86:19 | inputStream | provenance | | -| zlib.js:83:25:83:51 | Readabl ... e.data) | zlib.js:83:11:83:51 | inputStream | provenance | | +| zlib.js:83:11:83:21 | inputStream | zlib.js:86:9:86:19 | inputStream | provenance | | +| zlib.js:83:25:83:51 | Readabl ... e.data) | zlib.js:83:11:83:21 | inputStream | provenance | | | zlib.js:83:39:83:45 | zipFile | zlib.js:83:39:83:50 | zipFile.data | provenance | | | zlib.js:83:39:83:50 | zipFile.data | zlib.js:83:25:83:51 | Readabl ... e.data) | provenance | Config | | zlib.js:86:9:86:19 | inputStream | zlib.js:87:9:87:27 | zlib.createGunzip() | provenance | Config | @@ -178,15 +178,15 @@ nodes | pako.js:13:14:13:22 | req.files | semmle.label | req.files | | pako.js:13:14:13:39 | req.fil ... le.data | semmle.label | req.fil ... le.data | | pako.js:17:19:17:25 | zipFile | semmle.label | zipFile | -| pako.js:18:11:18:68 | myArray | semmle.label | myArray | +| pako.js:18:11:18:17 | myArray | semmle.label | myArray | | pako.js:18:21:18:68 | Buffer. ... uffer)) | semmle.label | Buffer. ... uffer)) | | pako.js:18:33:18:67 | new Uin ... buffer) | semmle.label | new Uin ... buffer) | | pako.js:18:48:18:54 | zipFile | semmle.label | zipFile | | pako.js:18:48:18:66 | zipFile.data.buffer | semmle.label | zipFile.data.buffer | | pako.js:21:31:21:37 | myArray | semmle.label | myArray | | pako.js:28:19:28:25 | zipFile | semmle.label | zipFile | -| pako.js:29:11:29:62 | myArray | semmle.label | myArray | -| pako.js:29:11:29:62 | myArray [ArrayElement] | semmle.label | myArray [ArrayElement] | +| pako.js:29:11:29:17 | myArray | semmle.label | myArray | +| pako.js:29:11:29:17 | myArray [ArrayElement] | semmle.label | myArray [ArrayElement] | | pako.js:29:21:29:55 | new Uin ... buffer) | semmle.label | new Uin ... buffer) | | pako.js:29:21:29:55 | new Uin ... buffer) [ArrayElement] | semmle.label | new Uin ... buffer) [ArrayElement] | | pako.js:29:36:29:42 | zipFile | semmle.label | zipFile | @@ -246,7 +246,7 @@ nodes | zlib.js:78:22:78:39 | zlib.createUnzip() | semmle.label | zlib.createUnzip() | | zlib.js:79:22:79:50 | zlib.cr ... press() | semmle.label | zlib.cr ... press() | | zlib.js:82:43:82:49 | zipFile | semmle.label | zipFile | -| zlib.js:83:11:83:51 | inputStream | semmle.label | inputStream | +| zlib.js:83:11:83:21 | inputStream | semmle.label | inputStream | | zlib.js:83:25:83:51 | Readabl ... e.data) | semmle.label | Readabl ... e.data) | | zlib.js:83:39:83:45 | zipFile | semmle.label | zipFile | | zlib.js:83:39:83:50 | zipFile.data | semmle.label | zipFile.data | diff --git a/javascript/ql/test/query-tests/Security/CWE-601/ClientSideUrlRedirect/ClientSideUrlRedirect.expected b/javascript/ql/test/query-tests/Security/CWE-601/ClientSideUrlRedirect/ClientSideUrlRedirect.expected index 243d4b25dfdc..d4617441802c 100644 --- a/javascript/ql/test/query-tests/Security/CWE-601/ClientSideUrlRedirect/ClientSideUrlRedirect.expected +++ b/javascript/ql/test/query-tests/Security/CWE-601/ClientSideUrlRedirect/ClientSideUrlRedirect.expected @@ -79,41 +79,41 @@ edges | react.js:31:43:31:64 | documen ... on.hash | react.js:31:43:31:74 | documen ... bstr(1) | provenance | Config | | react.js:37:43:37:64 | documen ... on.hash | react.js:37:43:37:74 | documen ... bstr(1) | provenance | Config | | react.js:43:19:43:40 | documen ... on.hash | react.js:43:19:43:50 | documen ... bstr(1) | provenance | Config | -| regexp-exec.js:4:11:4:20 | [, group1] | regexp-exec.js:4:11:4:57 | group1 | provenance | | -| regexp-exec.js:4:11:4:57 | group1 | regexp-exec.js:5:28:5:33 | group1 | provenance | | +| regexp-exec.js:4:11:4:20 | [, group1] | regexp-exec.js:4:14:4:19 | group1 | provenance | | +| regexp-exec.js:4:14:4:19 | group1 | regexp-exec.js:5:28:5:33 | group1 | provenance | | | regexp-exec.js:4:24:4:57 | /#(.*)/ ... n.href) | regexp-exec.js:4:11:4:20 | [, group1] | provenance | | | regexp-exec.js:4:37:4:56 | window.location.href | regexp-exec.js:4:24:4:57 | /#(.*)/ ... n.href) | provenance | Config | -| regexp-exec.js:9:11:9:20 | [, group1] | regexp-exec.js:9:11:9:58 | group1 | provenance | | -| regexp-exec.js:9:11:9:58 | group1 | regexp-exec.js:10:28:10:33 | group1 | provenance | | +| regexp-exec.js:9:11:9:20 | [, group1] | regexp-exec.js:9:14:9:19 | group1 | provenance | | +| regexp-exec.js:9:14:9:19 | group1 | regexp-exec.js:10:28:10:33 | group1 | provenance | | | regexp-exec.js:9:24:9:58 | /\\?(.*) ... n.href) | regexp-exec.js:9:11:9:20 | [, group1] | provenance | | | regexp-exec.js:9:38:9:57 | window.location.href | regexp-exec.js:9:24:9:58 | /\\?(.*) ... n.href) | provenance | Config | -| regexp-exec.js:29:11:29:20 | [, group1] | regexp-exec.js:29:11:29:58 | group1 | provenance | | -| regexp-exec.js:29:11:29:58 | group1 | regexp-exec.js:30:28:30:33 | group1 | provenance | | +| regexp-exec.js:29:11:29:20 | [, group1] | regexp-exec.js:29:14:29:19 | group1 | provenance | | +| regexp-exec.js:29:14:29:19 | group1 | regexp-exec.js:30:28:30:33 | group1 | provenance | | | regexp-exec.js:29:24:29:43 | window.location.href | regexp-exec.js:29:24:29:58 | window. ... #(.*)/) | provenance | Config | | regexp-exec.js:29:24:29:58 | window. ... #(.*)/) | regexp-exec.js:29:11:29:20 | [, group1] | provenance | | -| regexp-exec.js:34:11:34:20 | [, group1] | regexp-exec.js:34:11:34:64 | group1 | provenance | | -| regexp-exec.js:34:11:34:64 | group1 | regexp-exec.js:35:28:35:33 | group1 | provenance | | +| regexp-exec.js:34:11:34:20 | [, group1] | regexp-exec.js:34:14:34:19 | group1 | provenance | | +| regexp-exec.js:34:14:34:19 | group1 | regexp-exec.js:35:28:35:33 | group1 | provenance | | | regexp-exec.js:34:24:34:43 | window.location.href | regexp-exec.js:34:24:34:61 | window. ... #(.*)/) | provenance | Config | | regexp-exec.js:34:24:34:61 | window. ... #(.*)/) | regexp-exec.js:34:11:34:20 | [, group1] | provenance | | -| regexp-exec.js:39:11:39:20 | [, group1] | regexp-exec.js:39:11:39:71 | group1 | provenance | | -| regexp-exec.js:39:11:39:71 | group1 | regexp-exec.js:40:28:40:33 | group1 | provenance | | +| regexp-exec.js:39:11:39:20 | [, group1] | regexp-exec.js:39:14:39:19 | group1 | provenance | | +| regexp-exec.js:39:14:39:19 | group1 | regexp-exec.js:40:28:40:33 | group1 | provenance | | | regexp-exec.js:39:24:39:71 | new Reg ... n.href) | regexp-exec.js:39:11:39:20 | [, group1] | provenance | | | regexp-exec.js:39:51:39:70 | window.location.href | regexp-exec.js:39:24:39:71 | new Reg ... n.href) | provenance | Config | -| sanitizer.js:2:9:2:25 | url | sanitizer.js:4:27:4:29 | url | provenance | | -| sanitizer.js:2:9:2:25 | url | sanitizer.js:16:27:16:29 | url | provenance | | -| sanitizer.js:2:9:2:25 | url | sanitizer.js:19:27:19:29 | url | provenance | | -| sanitizer.js:2:9:2:25 | url | sanitizer.js:22:27:22:29 | url | provenance | | -| sanitizer.js:2:9:2:25 | url | sanitizer.js:25:27:25:29 | url | provenance | | -| sanitizer.js:2:9:2:25 | url | sanitizer.js:28:27:28:29 | url | provenance | | -| sanitizer.js:2:9:2:25 | url | sanitizer.js:31:27:31:29 | url | provenance | | -| sanitizer.js:2:9:2:25 | url | sanitizer.js:37:27:37:29 | url | provenance | | -| sanitizer.js:2:15:2:25 | window.name | sanitizer.js:2:9:2:25 | url | provenance | | -| tst2.js:2:7:2:33 | href | tst2.js:3:21:3:24 | href | provenance | | -| tst2.js:2:14:2:33 | window.location.href | tst2.js:2:7:2:33 | href | provenance | | +| sanitizer.js:2:9:2:11 | url | sanitizer.js:4:27:4:29 | url | provenance | | +| sanitizer.js:2:9:2:11 | url | sanitizer.js:16:27:16:29 | url | provenance | | +| sanitizer.js:2:9:2:11 | url | sanitizer.js:19:27:19:29 | url | provenance | | +| sanitizer.js:2:9:2:11 | url | sanitizer.js:22:27:22:29 | url | provenance | | +| sanitizer.js:2:9:2:11 | url | sanitizer.js:25:27:25:29 | url | provenance | | +| sanitizer.js:2:9:2:11 | url | sanitizer.js:28:27:28:29 | url | provenance | | +| sanitizer.js:2:9:2:11 | url | sanitizer.js:31:27:31:29 | url | provenance | | +| sanitizer.js:2:9:2:11 | url | sanitizer.js:37:27:37:29 | url | provenance | | +| sanitizer.js:2:15:2:25 | window.name | sanitizer.js:2:9:2:11 | url | provenance | | +| tst2.js:2:7:2:10 | href | tst2.js:3:21:3:24 | href | provenance | | +| tst2.js:2:14:2:33 | window.location.href | tst2.js:2:7:2:10 | href | provenance | | | tst2.js:3:21:3:24 | href | tst2.js:3:21:3:55 | href.su ... '?')+1) | provenance | Config | -| tst6.js:2:7:2:45 | redirect | tst6.js:3:21:3:28 | redirect | provenance | | -| tst6.js:2:7:2:45 | redirect | tst6.js:4:17:4:24 | redirect | provenance | | -| tst6.js:2:18:2:45 | $locati ... irect') | tst6.js:2:7:2:45 | redirect | provenance | | +| tst6.js:2:7:2:14 | redirect | tst6.js:3:21:3:28 | redirect | provenance | | +| tst6.js:2:7:2:14 | redirect | tst6.js:4:17:4:24 | redirect | provenance | | +| tst6.js:2:18:2:45 | $locati ... irect') | tst6.js:2:7:2:14 | redirect | provenance | | | tst6.js:5:21:5:48 | $locati ... irect') | tst6.js:5:21:5:56 | $locati ... + "foo" | provenance | | | tst7.js:1:12:1:35 | documen ... .search | tst7.js:1:12:1:48 | documen ... ring(1) | provenance | Config | | tst7.js:3:27:3:50 | documen ... .search | tst7.js:3:27:3:63 | documen ... ring(1) | provenance | Config | @@ -126,63 +126,63 @@ edges | tst10.js:8:27:8:63 | documen ... ring(1) | tst10.js:8:17:8:63 | '//foo' ... ring(1) | provenance | | | tst10.js:10:33:10:56 | documen ... .search | tst10.js:10:33:10:69 | documen ... ring(1) | provenance | Config | | tst10.js:10:33:10:69 | documen ... ring(1) | tst10.js:10:17:10:69 | 'https: ... ring(1) | provenance | | -| tst13.js:2:9:2:52 | payload | tst13.js:4:15:4:21 | payload | provenance | | -| tst13.js:2:9:2:52 | payload | tst13.js:8:21:8:27 | payload | provenance | | -| tst13.js:2:9:2:52 | payload | tst13.js:12:14:12:20 | payload | provenance | | -| tst13.js:2:9:2:52 | payload | tst13.js:16:17:16:23 | payload | provenance | | -| tst13.js:2:9:2:52 | payload | tst13.js:20:14:20:20 | payload | provenance | | -| tst13.js:2:9:2:52 | payload | tst13.js:24:14:24:20 | payload | provenance | | -| tst13.js:2:9:2:52 | payload | tst13.js:28:21:28:27 | payload | provenance | | -| tst13.js:2:9:2:52 | payload | tst13.js:32:17:32:23 | payload | provenance | | -| tst13.js:2:9:2:52 | payload | tst13.js:36:21:36:27 | payload | provenance | | -| tst13.js:2:9:2:52 | payload | tst13.js:40:15:40:21 | payload | provenance | | -| tst13.js:2:9:2:52 | payload | tst13.js:44:14:44:20 | payload | provenance | | +| tst13.js:2:9:2:15 | payload | tst13.js:4:15:4:21 | payload | provenance | | +| tst13.js:2:9:2:15 | payload | tst13.js:8:21:8:27 | payload | provenance | | +| tst13.js:2:9:2:15 | payload | tst13.js:12:14:12:20 | payload | provenance | | +| tst13.js:2:9:2:15 | payload | tst13.js:16:17:16:23 | payload | provenance | | +| tst13.js:2:9:2:15 | payload | tst13.js:20:14:20:20 | payload | provenance | | +| tst13.js:2:9:2:15 | payload | tst13.js:24:14:24:20 | payload | provenance | | +| tst13.js:2:9:2:15 | payload | tst13.js:28:21:28:27 | payload | provenance | | +| tst13.js:2:9:2:15 | payload | tst13.js:32:17:32:23 | payload | provenance | | +| tst13.js:2:9:2:15 | payload | tst13.js:36:21:36:27 | payload | provenance | | +| tst13.js:2:9:2:15 | payload | tst13.js:40:15:40:21 | payload | provenance | | +| tst13.js:2:9:2:15 | payload | tst13.js:44:14:44:20 | payload | provenance | | | tst13.js:2:19:2:42 | documen ... .search | tst13.js:2:19:2:52 | documen ... bstr(1) | provenance | Config | -| tst13.js:2:19:2:52 | documen ... bstr(1) | tst13.js:2:9:2:52 | payload | provenance | | +| tst13.js:2:19:2:52 | documen ... bstr(1) | tst13.js:2:9:2:15 | payload | provenance | | | tst13.js:49:32:49:32 | e | tst13.js:50:23:50:23 | e | provenance | | | tst13.js:52:34:52:34 | e | tst13.js:53:28:53:28 | e | provenance | | -| tst13.js:59:9:59:52 | payload | tst13.js:61:18:61:24 | payload | provenance | | +| tst13.js:59:9:59:15 | payload | tst13.js:61:18:61:24 | payload | provenance | | | tst13.js:59:19:59:42 | documen ... .search | tst13.js:59:19:59:52 | documen ... bstr(1) | provenance | Config | -| tst13.js:59:19:59:52 | documen ... bstr(1) | tst13.js:59:9:59:52 | payload | provenance | | -| tst13.js:65:9:65:49 | payload | tst13.js:67:21:67:27 | payload | provenance | | +| tst13.js:59:19:59:52 | documen ... bstr(1) | tst13.js:59:9:59:15 | payload | provenance | | +| tst13.js:65:9:65:15 | payload | tst13.js:67:21:67:27 | payload | provenance | | | tst13.js:65:19:65:39 | history ... on.hash | tst13.js:65:19:65:49 | history ... bstr(1) | provenance | | -| tst13.js:65:19:65:49 | history ... bstr(1) | tst13.js:65:9:65:49 | payload | provenance | | -| tst13.js:72:9:72:49 | payload | tst13.js:74:21:74:27 | payload | provenance | | +| tst13.js:65:19:65:49 | history ... bstr(1) | tst13.js:65:9:65:15 | payload | provenance | | +| tst13.js:72:9:72:15 | payload | tst13.js:74:21:74:27 | payload | provenance | | | tst13.js:72:19:72:39 | history ... on.hash | tst13.js:72:19:72:49 | history ... bstr(1) | provenance | | -| tst13.js:72:19:72:49 | history ... bstr(1) | tst13.js:72:9:72:49 | payload | provenance | | -| tst13.js:78:9:78:48 | url | tst13.js:80:21:80:23 | url | provenance | | -| tst13.js:78:9:78:48 | url | tst13.js:81:28:81:30 | url | provenance | | -| tst13.js:78:9:78:48 | url | tst13.js:82:27:82:29 | url | provenance | | -| tst13.js:78:9:78:48 | url | tst13.js:83:22:83:24 | url | provenance | | +| tst13.js:72:19:72:49 | history ... bstr(1) | tst13.js:72:9:72:15 | payload | provenance | | +| tst13.js:78:9:78:11 | url | tst13.js:80:21:80:23 | url | provenance | | +| tst13.js:78:9:78:11 | url | tst13.js:81:28:81:30 | url | provenance | | +| tst13.js:78:9:78:11 | url | tst13.js:82:27:82:29 | url | provenance | | +| tst13.js:78:9:78:11 | url | tst13.js:83:22:83:24 | url | provenance | | | tst13.js:78:15:78:38 | documen ... .search | tst13.js:78:15:78:48 | documen ... bstr(1) | provenance | Config | -| tst13.js:78:15:78:48 | documen ... bstr(1) | tst13.js:78:9:78:48 | url | provenance | | -| tst15.js:2:9:2:42 | url | tst15.js:3:23:3:25 | url | provenance | | -| tst15.js:2:9:2:42 | url | tst15.js:4:23:4:25 | url | provenance | | -| tst15.js:2:9:2:42 | url | tst15.js:5:23:5:25 | url | provenance | | +| tst13.js:78:15:78:48 | documen ... bstr(1) | tst13.js:78:9:78:11 | url | provenance | | +| tst15.js:2:9:2:11 | url | tst15.js:3:23:3:25 | url | provenance | | +| tst15.js:2:9:2:11 | url | tst15.js:4:23:4:25 | url | provenance | | +| tst15.js:2:9:2:11 | url | tst15.js:5:23:5:25 | url | provenance | | | tst15.js:2:15:2:31 | document.location | tst15.js:2:15:2:42 | documen ... tring() | provenance | | -| tst15.js:2:15:2:42 | documen ... tring() | tst15.js:2:9:2:42 | url | provenance | | +| tst15.js:2:15:2:42 | documen ... tring() | tst15.js:2:9:2:11 | url | provenance | | | tst15.js:3:23:3:25 | url | tst15.js:3:23:3:38 | url.substring(0) | provenance | | | tst15.js:3:23:3:38 | url.substring(0) | tst15.js:3:23:3:51 | url.sub ... ring(1) | provenance | Config | | tst15.js:4:23:4:25 | url | tst15.js:4:23:4:42 | url.substring(0, 10) | provenance | | | tst15.js:4:23:4:42 | url.substring(0, 10) | tst15.js:4:23:4:55 | url.sub ... ring(1) | provenance | Config | | tst15.js:5:23:5:25 | url | tst15.js:5:23:5:60 | url.sub ... ', 10)) | provenance | | | tst15.js:5:23:5:60 | url.sub ... ', 10)) | tst15.js:5:23:5:73 | url.sub ... ring(1) | provenance | Config | -| tst15.js:7:9:7:43 | url2 | tst15.js:8:23:8:26 | url2 | provenance | | -| tst15.js:7:9:7:43 | url2 | tst15.js:9:23:9:26 | url2 | provenance | | -| tst15.js:7:9:7:43 | url2 | tst15.js:10:23:10:26 | url2 | provenance | | +| tst15.js:7:9:7:12 | url2 | tst15.js:8:23:8:26 | url2 | provenance | | +| tst15.js:7:9:7:12 | url2 | tst15.js:9:23:9:26 | url2 | provenance | | +| tst15.js:7:9:7:12 | url2 | tst15.js:10:23:10:26 | url2 | provenance | | | tst15.js:7:16:7:32 | document.location | tst15.js:7:16:7:43 | documen ... tring() | provenance | | -| tst15.js:7:16:7:43 | documen ... tring() | tst15.js:7:9:7:43 | url2 | provenance | | +| tst15.js:7:16:7:43 | documen ... tring() | tst15.js:7:9:7:12 | url2 | provenance | | | tst15.js:8:23:8:26 | url2 | tst15.js:8:23:8:39 | url2.substring(0) | provenance | | | tst15.js:8:23:8:39 | url2.substring(0) | tst15.js:8:23:8:60 | url2.su ... nown()) | provenance | Config | | tst15.js:9:23:9:26 | url2 | tst15.js:9:23:9:43 | url2.su ... (0, 10) | provenance | | | tst15.js:9:23:9:43 | url2.su ... (0, 10) | tst15.js:9:23:9:64 | url2.su ... nown()) | provenance | Config | | tst15.js:10:23:10:26 | url2 | tst15.js:10:23:10:62 | url2.su ... ', 10)) | provenance | | | tst15.js:10:23:10:62 | url2.su ... ', 10)) | tst15.js:10:23:10:83 | url2.su ... nown()) | provenance | Config | -| tst15.js:12:9:12:52 | search | tst15.js:13:23:13:28 | search | provenance | | -| tst15.js:12:9:12:52 | search | tst15.js:14:23:14:28 | search | provenance | | -| tst15.js:12:9:12:52 | search | tst15.js:15:23:15:28 | search | provenance | | +| tst15.js:12:9:12:14 | search | tst15.js:13:23:13:28 | search | provenance | | +| tst15.js:12:9:12:14 | search | tst15.js:14:23:14:28 | search | provenance | | +| tst15.js:12:9:12:14 | search | tst15.js:15:23:15:28 | search | provenance | | | tst15.js:12:18:12:41 | documen ... .search | tst15.js:12:18:12:52 | documen ... tring() | provenance | | -| tst15.js:12:18:12:52 | documen ... tring() | tst15.js:12:9:12:52 | search | provenance | | +| tst15.js:12:18:12:52 | documen ... tring() | tst15.js:12:9:12:14 | search | provenance | | | tst15.js:13:23:13:28 | search | tst15.js:13:23:13:41 | search.substring(0) | provenance | | | tst15.js:13:23:13:41 | search.substring(0) | tst15.js:13:23:13:54 | search. ... ring(1) | provenance | Config | | tst15.js:14:23:14:28 | search | tst15.js:14:23:14:45 | search. ... (0, 10) | provenance | | @@ -208,9 +208,9 @@ edges | tst.js:19:34:19:55 | documen ... on.href | tst.js:19:20:19:56 | indirec ... n.href) | provenance | Config | | tst.js:23:22:23:79 | new Reg ... n.href) | tst.js:23:22:23:82 | new Reg ... ref)[1] | provenance | | | tst.js:23:62:23:78 | win.location.href | tst.js:23:22:23:79 | new Reg ... n.href) | provenance | Config | -| typed.ts:4:13:4:49 | params | typed.ts:5:25:5:30 | params | provenance | | +| typed.ts:4:13:4:18 | params | typed.ts:5:25:5:30 | params | provenance | | | typed.ts:4:22:4:36 | location.search | typed.ts:4:22:4:49 | locatio ... ring(1) | provenance | Config | -| typed.ts:4:22:4:49 | locatio ... ring(1) | typed.ts:4:13:4:49 | params | provenance | | +| typed.ts:4:22:4:49 | locatio ... ring(1) | typed.ts:4:13:4:18 | params | provenance | | | typed.ts:5:25:5:30 | params | typed.ts:7:24:7:34 | redirectUri | provenance | | | typed.ts:7:24:7:34 | redirectUri | typed.ts:8:33:8:43 | redirectUri | provenance | | | typed.ts:25:25:25:34 | loc.search | typed.ts:25:25:25:47 | loc.sea ... ring(1) | provenance | Config | @@ -236,31 +236,31 @@ nodes | react.js:43:19:43:40 | documen ... on.hash | semmle.label | documen ... on.hash | | react.js:43:19:43:50 | documen ... bstr(1) | semmle.label | documen ... bstr(1) | | regexp-exec.js:4:11:4:20 | [, group1] | semmle.label | [, group1] | -| regexp-exec.js:4:11:4:57 | group1 | semmle.label | group1 | +| regexp-exec.js:4:14:4:19 | group1 | semmle.label | group1 | | regexp-exec.js:4:24:4:57 | /#(.*)/ ... n.href) | semmle.label | /#(.*)/ ... n.href) | | regexp-exec.js:4:37:4:56 | window.location.href | semmle.label | window.location.href | | regexp-exec.js:5:28:5:33 | group1 | semmle.label | group1 | | regexp-exec.js:9:11:9:20 | [, group1] | semmle.label | [, group1] | -| regexp-exec.js:9:11:9:58 | group1 | semmle.label | group1 | +| regexp-exec.js:9:14:9:19 | group1 | semmle.label | group1 | | regexp-exec.js:9:24:9:58 | /\\?(.*) ... n.href) | semmle.label | /\\?(.*) ... n.href) | | regexp-exec.js:9:38:9:57 | window.location.href | semmle.label | window.location.href | | regexp-exec.js:10:28:10:33 | group1 | semmle.label | group1 | | regexp-exec.js:29:11:29:20 | [, group1] | semmle.label | [, group1] | -| regexp-exec.js:29:11:29:58 | group1 | semmle.label | group1 | +| regexp-exec.js:29:14:29:19 | group1 | semmle.label | group1 | | regexp-exec.js:29:24:29:43 | window.location.href | semmle.label | window.location.href | | regexp-exec.js:29:24:29:58 | window. ... #(.*)/) | semmle.label | window. ... #(.*)/) | | regexp-exec.js:30:28:30:33 | group1 | semmle.label | group1 | | regexp-exec.js:34:11:34:20 | [, group1] | semmle.label | [, group1] | -| regexp-exec.js:34:11:34:64 | group1 | semmle.label | group1 | +| regexp-exec.js:34:14:34:19 | group1 | semmle.label | group1 | | regexp-exec.js:34:24:34:43 | window.location.href | semmle.label | window.location.href | | regexp-exec.js:34:24:34:61 | window. ... #(.*)/) | semmle.label | window. ... #(.*)/) | | regexp-exec.js:35:28:35:33 | group1 | semmle.label | group1 | | regexp-exec.js:39:11:39:20 | [, group1] | semmle.label | [, group1] | -| regexp-exec.js:39:11:39:71 | group1 | semmle.label | group1 | +| regexp-exec.js:39:14:39:19 | group1 | semmle.label | group1 | | regexp-exec.js:39:24:39:71 | new Reg ... n.href) | semmle.label | new Reg ... n.href) | | regexp-exec.js:39:51:39:70 | window.location.href | semmle.label | window.location.href | | regexp-exec.js:40:28:40:33 | group1 | semmle.label | group1 | -| sanitizer.js:2:9:2:25 | url | semmle.label | url | +| sanitizer.js:2:9:2:11 | url | semmle.label | url | | sanitizer.js:2:15:2:25 | window.name | semmle.label | window.name | | sanitizer.js:4:27:4:29 | url | semmle.label | url | | sanitizer.js:16:27:16:29 | url | semmle.label | url | @@ -270,11 +270,11 @@ nodes | sanitizer.js:28:27:28:29 | url | semmle.label | url | | sanitizer.js:31:27:31:29 | url | semmle.label | url | | sanitizer.js:37:27:37:29 | url | semmle.label | url | -| tst2.js:2:7:2:33 | href | semmle.label | href | +| tst2.js:2:7:2:10 | href | semmle.label | href | | tst2.js:2:14:2:33 | window.location.href | semmle.label | window.location.href | | tst2.js:3:21:3:24 | href | semmle.label | href | | tst2.js:3:21:3:55 | href.su ... '?')+1) | semmle.label | href.su ... '?')+1) | -| tst6.js:2:7:2:45 | redirect | semmle.label | redirect | +| tst6.js:2:7:2:14 | redirect | semmle.label | redirect | | tst6.js:2:18:2:45 | $locati ... irect') | semmle.label | $locati ... irect') | | tst6.js:3:21:3:28 | redirect | semmle.label | redirect | | tst6.js:4:17:4:24 | redirect | semmle.label | redirect | @@ -298,7 +298,7 @@ nodes | tst10.js:10:17:10:69 | 'https: ... ring(1) | semmle.label | 'https: ... ring(1) | | tst10.js:10:33:10:56 | documen ... .search | semmle.label | documen ... .search | | tst10.js:10:33:10:69 | documen ... ring(1) | semmle.label | documen ... ring(1) | -| tst13.js:2:9:2:52 | payload | semmle.label | payload | +| tst13.js:2:9:2:15 | payload | semmle.label | payload | | tst13.js:2:19:2:42 | documen ... .search | semmle.label | documen ... .search | | tst13.js:2:19:2:52 | documen ... bstr(1) | semmle.label | documen ... bstr(1) | | tst13.js:4:15:4:21 | payload | semmle.label | payload | @@ -316,26 +316,26 @@ nodes | tst13.js:50:23:50:23 | e | semmle.label | e | | tst13.js:52:34:52:34 | e | semmle.label | e | | tst13.js:53:28:53:28 | e | semmle.label | e | -| tst13.js:59:9:59:52 | payload | semmle.label | payload | +| tst13.js:59:9:59:15 | payload | semmle.label | payload | | tst13.js:59:19:59:42 | documen ... .search | semmle.label | documen ... .search | | tst13.js:59:19:59:52 | documen ... bstr(1) | semmle.label | documen ... bstr(1) | | tst13.js:61:18:61:24 | payload | semmle.label | payload | -| tst13.js:65:9:65:49 | payload | semmle.label | payload | +| tst13.js:65:9:65:15 | payload | semmle.label | payload | | tst13.js:65:19:65:39 | history ... on.hash | semmle.label | history ... on.hash | | tst13.js:65:19:65:49 | history ... bstr(1) | semmle.label | history ... bstr(1) | | tst13.js:67:21:67:27 | payload | semmle.label | payload | -| tst13.js:72:9:72:49 | payload | semmle.label | payload | +| tst13.js:72:9:72:15 | payload | semmle.label | payload | | tst13.js:72:19:72:39 | history ... on.hash | semmle.label | history ... on.hash | | tst13.js:72:19:72:49 | history ... bstr(1) | semmle.label | history ... bstr(1) | | tst13.js:74:21:74:27 | payload | semmle.label | payload | -| tst13.js:78:9:78:48 | url | semmle.label | url | +| tst13.js:78:9:78:11 | url | semmle.label | url | | tst13.js:78:15:78:38 | documen ... .search | semmle.label | documen ... .search | | tst13.js:78:15:78:48 | documen ... bstr(1) | semmle.label | documen ... bstr(1) | | tst13.js:80:21:80:23 | url | semmle.label | url | | tst13.js:81:28:81:30 | url | semmle.label | url | | tst13.js:82:27:82:29 | url | semmle.label | url | | tst13.js:83:22:83:24 | url | semmle.label | url | -| tst15.js:2:9:2:42 | url | semmle.label | url | +| tst15.js:2:9:2:11 | url | semmle.label | url | | tst15.js:2:15:2:31 | document.location | semmle.label | document.location | | tst15.js:2:15:2:42 | documen ... tring() | semmle.label | documen ... tring() | | tst15.js:3:23:3:25 | url | semmle.label | url | @@ -347,7 +347,7 @@ nodes | tst15.js:5:23:5:25 | url | semmle.label | url | | tst15.js:5:23:5:60 | url.sub ... ', 10)) | semmle.label | url.sub ... ', 10)) | | tst15.js:5:23:5:73 | url.sub ... ring(1) | semmle.label | url.sub ... ring(1) | -| tst15.js:7:9:7:43 | url2 | semmle.label | url2 | +| tst15.js:7:9:7:12 | url2 | semmle.label | url2 | | tst15.js:7:16:7:32 | document.location | semmle.label | document.location | | tst15.js:7:16:7:43 | documen ... tring() | semmle.label | documen ... tring() | | tst15.js:8:23:8:26 | url2 | semmle.label | url2 | @@ -359,7 +359,7 @@ nodes | tst15.js:10:23:10:26 | url2 | semmle.label | url2 | | tst15.js:10:23:10:62 | url2.su ... ', 10)) | semmle.label | url2.su ... ', 10)) | | tst15.js:10:23:10:83 | url2.su ... nown()) | semmle.label | url2.su ... nown()) | -| tst15.js:12:9:12:52 | search | semmle.label | search | +| tst15.js:12:9:12:14 | search | semmle.label | search | | tst15.js:12:18:12:41 | documen ... .search | semmle.label | documen ... .search | | tst15.js:12:18:12:52 | documen ... tring() | semmle.label | documen ... tring() | | tst15.js:13:23:13:28 | search | semmle.label | search | @@ -400,7 +400,7 @@ nodes | tst.js:23:22:23:79 | new Reg ... n.href) | semmle.label | new Reg ... n.href) | | tst.js:23:22:23:82 | new Reg ... ref)[1] | semmle.label | new Reg ... ref)[1] | | tst.js:23:62:23:78 | win.location.href | semmle.label | win.location.href | -| typed.ts:4:13:4:49 | params | semmle.label | params | +| typed.ts:4:13:4:18 | params | semmle.label | params | | typed.ts:4:22:4:36 | location.search | semmle.label | location.search | | typed.ts:4:22:4:49 | locatio ... ring(1) | semmle.label | locatio ... ring(1) | | typed.ts:5:25:5:30 | params | semmle.label | params | diff --git a/javascript/ql/test/query-tests/Security/CWE-601/ServerSideUrlRedirect/ServerSideUrlRedirect.expected b/javascript/ql/test/query-tests/Security/CWE-601/ServerSideUrlRedirect/ServerSideUrlRedirect.expected index 34c12408de30..c8466a9560db 100644 --- a/javascript/ql/test/query-tests/Security/CWE-601/ServerSideUrlRedirect/ServerSideUrlRedirect.expected +++ b/javascript/ql/test/query-tests/Security/CWE-601/ServerSideUrlRedirect/ServerSideUrlRedirect.expected @@ -30,16 +30,16 @@ | react-native.js:8:17:8:23 | tainted | react-native.js:7:17:7:33 | req.param("code") | react-native.js:8:17:8:23 | tainted | Untrusted URL redirection depends on a $@. | react-native.js:7:17:7:33 | req.param("code") | user-provided value | | react-native.js:9:26:9:32 | tainted | react-native.js:7:17:7:33 | req.param("code") | react-native.js:9:26:9:32 | tainted | Untrusted URL redirection depends on a $@. | react-native.js:7:17:7:33 | req.param("code") | user-provided value | edges -| ServerSideUrlRedirectGood2.js:16:7:16:34 | target | ServerSideUrlRedirectGood2.js:18:18:18:23 | target | provenance | | -| ServerSideUrlRedirectGood2.js:16:16:16:34 | req.query["target"] | ServerSideUrlRedirectGood2.js:16:7:16:34 | target | provenance | | -| express.js:25:7:25:34 | target | express.js:30:18:30:23 | target | provenance | | -| express.js:25:7:25:34 | target | express.js:31:16:31:21 | target | provenance | | -| express.js:25:16:25:34 | req.param("target") | express.js:25:7:25:34 | target | provenance | | +| ServerSideUrlRedirectGood2.js:16:7:16:12 | target | ServerSideUrlRedirectGood2.js:18:18:18:23 | target | provenance | | +| ServerSideUrlRedirectGood2.js:16:16:16:34 | req.query["target"] | ServerSideUrlRedirectGood2.js:16:7:16:12 | target | provenance | | +| express.js:25:7:25:12 | target | express.js:30:18:30:23 | target | provenance | | +| express.js:25:7:25:12 | target | express.js:31:16:31:21 | target | provenance | | +| express.js:25:16:25:34 | req.param("target") | express.js:25:7:25:12 | target | provenance | | | express.js:35:69:35:87 | req.param('action') | express.js:35:16:35:108 | (req.pa ... ntacts" | provenance | | | express.js:68:19:68:37 | req.param("target") | express.js:68:16:68:43 | `${req. ... )}/foo` | provenance | | -| express.js:77:7:77:34 | target | express.js:83:18:83:23 | target | provenance | | -| express.js:77:7:77:34 | target | express.js:89:16:89:21 | target | provenance | | -| express.js:77:16:77:34 | req.param("target") | express.js:77:7:77:34 | target | provenance | | +| express.js:77:7:77:12 | target | express.js:83:18:83:23 | target | provenance | | +| express.js:77:7:77:12 | target | express.js:89:16:89:21 | target | provenance | | +| express.js:77:16:77:34 | req.param("target") | express.js:77:7:77:12 | target | provenance | | | express.js:109:16:109:63 | [req.qu ... ection] | express.js:109:16:109:72 | [req.qu ... oin('') | provenance | | | express.js:109:16:109:63 | [req.qu ... ection] [0] | express.js:109:16:109:72 | [req.qu ... oin('') | provenance | | | express.js:109:17:109:30 | req.query.page | express.js:109:16:109:63 | [req.qu ... ection] | provenance | | @@ -50,45 +50,45 @@ edges | express.js:124:22:124:36 | req.params.user | express.js:124:16:124:36 | '/' + r ... ms.user | provenance | | | express.js:125:23:125:37 | req.params.user | express.js:125:16:125:37 | '//' + ... ms.user | provenance | | | express.js:126:22:126:36 | req.params.user | express.js:126:16:126:36 | 'u' + r ... ms.user | provenance | | -| express.js:140:7:140:34 | target | express.js:145:18:145:23 | target | provenance | | -| express.js:140:7:140:34 | target | express.js:150:18:150:23 | target | provenance | | -| express.js:140:16:140:34 | req.param("target") | express.js:140:7:140:34 | target | provenance | | -| express.js:154:7:154:54 | myThing | express.js:155:16:155:22 | myThing | provenance | | -| express.js:154:7:154:54 | myThing [ArrayElement] | express.js:155:16:155:22 | myThing | provenance | | +| express.js:140:7:140:12 | target | express.js:145:18:145:23 | target | provenance | | +| express.js:140:7:140:12 | target | express.js:150:18:150:23 | target | provenance | | +| express.js:140:16:140:34 | req.param("target") | express.js:140:7:140:12 | target | provenance | | +| express.js:154:7:154:13 | myThing | express.js:155:16:155:22 | myThing | provenance | | +| express.js:154:7:154:13 | myThing [ArrayElement] | express.js:155:16:155:22 | myThing | provenance | | | express.js:154:17:154:41 | JSON.st ... .query) | express.js:154:17:154:54 | JSON.st ... (1, -1) | provenance | | | express.js:154:17:154:41 | JSON.st ... .query) | express.js:154:17:154:54 | JSON.st ... (1, -1) [ArrayElement] | provenance | | -| express.js:154:17:154:54 | JSON.st ... (1, -1) | express.js:154:7:154:54 | myThing | provenance | | -| express.js:154:17:154:54 | JSON.st ... (1, -1) [ArrayElement] | express.js:154:7:154:54 | myThing [ArrayElement] | provenance | | +| express.js:154:17:154:54 | JSON.st ... (1, -1) | express.js:154:7:154:13 | myThing | provenance | | +| express.js:154:17:154:54 | JSON.st ... (1, -1) [ArrayElement] | express.js:154:7:154:13 | myThing [ArrayElement] | provenance | | | express.js:154:32:154:40 | req.query | express.js:154:17:154:41 | JSON.st ... .query) | provenance | | -| koa.js:6:6:6:27 | url | koa.js:7:15:7:17 | url | provenance | | -| koa.js:6:6:6:27 | url | koa.js:8:18:8:20 | url | provenance | | -| koa.js:6:6:6:27 | url | koa.js:14:16:14:18 | url | provenance | | -| koa.js:6:6:6:27 | url | koa.js:20:16:20:18 | url | provenance | | -| koa.js:6:12:6:27 | ctx.query.target | koa.js:6:6:6:27 | url | provenance | | +| koa.js:6:6:6:8 | url | koa.js:7:15:7:17 | url | provenance | | +| koa.js:6:6:6:8 | url | koa.js:8:18:8:20 | url | provenance | | +| koa.js:6:6:6:8 | url | koa.js:14:16:14:18 | url | provenance | | +| koa.js:6:6:6:8 | url | koa.js:20:16:20:18 | url | provenance | | +| koa.js:6:12:6:27 | ctx.query.target | koa.js:6:6:6:8 | url | provenance | | | koa.js:8:18:8:20 | url | koa.js:8:15:8:26 | `${url}${x}` | provenance | | | next.ts:11:31:11:38 | req.body | next.ts:11:31:11:50 | req.body.callbackUrl | provenance | | -| node.js:5:7:5:52 | target | node.js:6:34:6:39 | target | provenance | | -| node.js:5:16:5:39 | url.par ... , true) | node.js:5:7:5:52 | target | provenance | | +| node.js:5:7:5:12 | target | node.js:6:34:6:39 | target | provenance | | +| node.js:5:16:5:39 | url.par ... , true) | node.js:5:7:5:12 | target | provenance | | | node.js:5:26:5:32 | req.url | node.js:5:16:5:39 | url.par ... , true) | provenance | | -| node.js:10:7:10:52 | target | node.js:13:40:13:45 | target | provenance | | -| node.js:10:16:10:39 | url.par ... , true) | node.js:10:7:10:52 | target | provenance | | +| node.js:10:7:10:12 | target | node.js:13:40:13:45 | target | provenance | | +| node.js:10:16:10:39 | url.par ... , true) | node.js:10:7:10:12 | target | provenance | | | node.js:10:26:10:32 | req.url | node.js:10:16:10:39 | url.par ... , true) | provenance | | | node.js:13:40:13:45 | target | node.js:13:34:13:45 | '/' + target | provenance | | -| node.js:27:7:27:52 | target | node.js:29:34:29:39 | target | provenance | | -| node.js:27:16:27:39 | url.par ... , true) | node.js:27:7:27:52 | target | provenance | | +| node.js:27:7:27:12 | target | node.js:29:34:29:39 | target | provenance | | +| node.js:27:16:27:39 | url.par ... , true) | node.js:27:7:27:12 | target | provenance | | | node.js:27:26:27:32 | req.url | node.js:27:16:27:39 | url.par ... , true) | provenance | | | node.js:29:34:29:39 | target | node.js:29:34:29:55 | target ... =" + me | provenance | | -| react-native.js:7:7:7:33 | tainted | react-native.js:8:17:8:23 | tainted | provenance | | -| react-native.js:7:7:7:33 | tainted | react-native.js:9:26:9:32 | tainted | provenance | | -| react-native.js:7:17:7:33 | req.param("code") | react-native.js:7:7:7:33 | tainted | provenance | | +| react-native.js:7:7:7:13 | tainted | react-native.js:8:17:8:23 | tainted | provenance | | +| react-native.js:7:7:7:13 | tainted | react-native.js:9:26:9:32 | tainted | provenance | | +| react-native.js:7:17:7:33 | req.param("code") | react-native.js:7:7:7:13 | tainted | provenance | | nodes | ServerSideUrlRedirect.js:4:16:4:34 | req.query["target"] | semmle.label | req.query["target"] | -| ServerSideUrlRedirectGood2.js:16:7:16:34 | target | semmle.label | target | +| ServerSideUrlRedirectGood2.js:16:7:16:12 | target | semmle.label | target | | ServerSideUrlRedirectGood2.js:16:16:16:34 | req.query["target"] | semmle.label | req.query["target"] | | ServerSideUrlRedirectGood2.js:18:18:18:23 | target | semmle.label | target | | express.js:6:16:6:34 | req.param("target") | semmle.label | req.param("target") | | express.js:10:26:10:44 | req.param("target") | semmle.label | req.param("target") | -| express.js:25:7:25:34 | target | semmle.label | target | +| express.js:25:7:25:12 | target | semmle.label | target | | express.js:25:16:25:34 | req.param("target") | semmle.label | req.param("target") | | express.js:30:18:30:23 | target | semmle.label | target | | express.js:31:16:31:21 | target | semmle.label | target | @@ -96,7 +96,7 @@ nodes | express.js:35:69:35:87 | req.param('action') | semmle.label | req.param('action') | | express.js:68:16:68:43 | `${req. ... )}/foo` | semmle.label | `${req. ... )}/foo` | | express.js:68:19:68:37 | req.param("target") | semmle.label | req.param("target") | -| express.js:77:7:77:34 | target | semmle.label | target | +| express.js:77:7:77:12 | target | semmle.label | target | | express.js:77:16:77:34 | req.param("target") | semmle.label | req.param("target") | | express.js:83:18:83:23 | target | semmle.label | target | | express.js:89:16:89:21 | target | semmle.label | target | @@ -115,18 +115,18 @@ nodes | express.js:126:22:126:36 | req.params.user | semmle.label | req.params.user | | express.js:133:16:133:28 | req.query.foo | semmle.label | req.query.foo | | express.js:136:16:136:24 | query.foo | semmle.label | query.foo | -| express.js:140:7:140:34 | target | semmle.label | target | +| express.js:140:7:140:12 | target | semmle.label | target | | express.js:140:16:140:34 | req.param("target") | semmle.label | req.param("target") | | express.js:145:18:145:23 | target | semmle.label | target | | express.js:150:18:150:23 | target | semmle.label | target | -| express.js:154:7:154:54 | myThing | semmle.label | myThing | -| express.js:154:7:154:54 | myThing [ArrayElement] | semmle.label | myThing [ArrayElement] | +| express.js:154:7:154:13 | myThing | semmle.label | myThing | +| express.js:154:7:154:13 | myThing [ArrayElement] | semmle.label | myThing [ArrayElement] | | express.js:154:17:154:41 | JSON.st ... .query) | semmle.label | JSON.st ... .query) | | express.js:154:17:154:54 | JSON.st ... (1, -1) | semmle.label | JSON.st ... (1, -1) | | express.js:154:17:154:54 | JSON.st ... (1, -1) [ArrayElement] | semmle.label | JSON.st ... (1, -1) [ArrayElement] | | express.js:154:32:154:40 | req.query | semmle.label | req.query | | express.js:155:16:155:22 | myThing | semmle.label | myThing | -| koa.js:6:6:6:27 | url | semmle.label | url | +| koa.js:6:6:6:8 | url | semmle.label | url | | koa.js:6:12:6:27 | ctx.query.target | semmle.label | ctx.query.target | | koa.js:7:15:7:17 | url | semmle.label | url | | koa.js:8:15:8:26 | `${url}${x}` | semmle.label | `${url}${x}` | @@ -135,21 +135,21 @@ nodes | koa.js:20:16:20:18 | url | semmle.label | url | | next.ts:11:31:11:38 | req.body | semmle.label | req.body | | next.ts:11:31:11:50 | req.body.callbackUrl | semmle.label | req.body.callbackUrl | -| node.js:5:7:5:52 | target | semmle.label | target | +| node.js:5:7:5:12 | target | semmle.label | target | | node.js:5:16:5:39 | url.par ... , true) | semmle.label | url.par ... , true) | | node.js:5:26:5:32 | req.url | semmle.label | req.url | | node.js:6:34:6:39 | target | semmle.label | target | -| node.js:10:7:10:52 | target | semmle.label | target | +| node.js:10:7:10:12 | target | semmle.label | target | | node.js:10:16:10:39 | url.par ... , true) | semmle.label | url.par ... , true) | | node.js:10:26:10:32 | req.url | semmle.label | req.url | | node.js:13:34:13:45 | '/' + target | semmle.label | '/' + target | | node.js:13:40:13:45 | target | semmle.label | target | -| node.js:27:7:27:52 | target | semmle.label | target | +| node.js:27:7:27:12 | target | semmle.label | target | | node.js:27:16:27:39 | url.par ... , true) | semmle.label | url.par ... , true) | | node.js:27:26:27:32 | req.url | semmle.label | req.url | | node.js:29:34:29:39 | target | semmle.label | target | | node.js:29:34:29:55 | target ... =" + me | semmle.label | target ... =" + me | -| react-native.js:7:7:7:33 | tainted | semmle.label | tainted | +| react-native.js:7:7:7:13 | tainted | semmle.label | tainted | | react-native.js:7:17:7:33 | req.param("code") | semmle.label | req.param("code") | | react-native.js:8:17:8:23 | tainted | semmle.label | tainted | | react-native.js:9:26:9:32 | tainted | semmle.label | tainted | diff --git a/javascript/ql/test/query-tests/Security/CWE-611/Xxe.expected b/javascript/ql/test/query-tests/Security/CWE-611/Xxe.expected index 4b946c920428..07b6acfc3612 100644 --- a/javascript/ql/test/query-tests/Security/CWE-611/Xxe.expected +++ b/javascript/ql/test/query-tests/Security/CWE-611/Xxe.expected @@ -8,12 +8,12 @@ | libxml.sax.js:6:22:6:42 | req.par ... e-xml") | libxml.sax.js:6:22:6:42 | req.par ... e-xml") | libxml.sax.js:6:22:6:42 | req.par ... e-xml") | XML parsing depends on a $@ without guarding against external entity expansion. | libxml.sax.js:6:22:6:42 | req.par ... e-xml") | user-provided value | | libxml.saxpush.js:6:15:6:35 | req.par ... e-xml") | libxml.saxpush.js:6:15:6:35 | req.par ... e-xml") | libxml.saxpush.js:6:15:6:35 | req.par ... e-xml") | XML parsing depends on a $@ without guarding against external entity expansion. | libxml.saxpush.js:6:15:6:35 | req.par ... e-xml") | user-provided value | edges -| domparser.js:2:7:2:36 | src | domparser.js:10:55:10:57 | src | provenance | | -| domparser.js:2:7:2:36 | src | domparser.js:12:57:12:59 | src | provenance | | -| domparser.js:2:13:2:36 | documen ... .search | domparser.js:2:7:2:36 | src | provenance | | +| domparser.js:2:7:2:9 | src | domparser.js:10:55:10:57 | src | provenance | | +| domparser.js:2:7:2:9 | src | domparser.js:12:57:12:59 | src | provenance | | +| domparser.js:2:13:2:36 | documen ... .search | domparser.js:2:7:2:9 | src | provenance | | | libxml.noent.js:12:27:12:35 | req.files | libxml.noent.js:12:27:12:66 | req.fil ... 'utf8') | provenance | | nodes -| domparser.js:2:7:2:36 | src | semmle.label | src | +| domparser.js:2:7:2:9 | src | semmle.label | src | | domparser.js:2:13:2:36 | documen ... .search | semmle.label | documen ... .search | | domparser.js:10:55:10:57 | src | semmle.label | src | | domparser.js:12:57:12:59 | src | semmle.label | src | diff --git a/javascript/ql/test/query-tests/Security/CWE-643/XpathInjection.expected b/javascript/ql/test/query-tests/Security/CWE-643/XpathInjection.expected index 4ad42bcdc03e..e1db31c6f7ba 100644 --- a/javascript/ql/test/query-tests/Security/CWE-643/XpathInjection.expected +++ b/javascript/ql/test/query-tests/Security/CWE-643/XpathInjection.expected @@ -7,19 +7,19 @@ | tst.js:9:17:9:23 | tainted | tst.js:6:17:6:37 | req.par ... rName") | tst.js:9:17:9:23 | tainted | XPath expression depends on a $@. | tst.js:6:17:6:37 | req.par ... rName") | user-provided value | | tst.js:11:8:11:14 | tainted | tst.js:6:17:6:37 | req.par ... rName") | tst.js:11:8:11:14 | tainted | XPath expression depends on a $@. | tst.js:6:17:6:37 | req.par ... rName") | user-provided value | edges -| XpathInjectionBad.js:6:7:6:38 | userName | XpathInjectionBad.js:8:66:8:73 | userName | provenance | | -| XpathInjectionBad.js:6:18:6:38 | req.par ... rName") | XpathInjectionBad.js:6:7:6:38 | userName | provenance | | +| XpathInjectionBad.js:6:7:6:14 | userName | XpathInjectionBad.js:8:66:8:73 | userName | provenance | | +| XpathInjectionBad.js:6:18:6:38 | req.par ... rName") | XpathInjectionBad.js:6:7:6:14 | userName | provenance | | | XpathInjectionBad.js:8:66:8:73 | userName | XpathInjectionBad.js:8:34:8:96 | "//user ... text()" | provenance | | | tst2.js:1:13:1:34 | documen ... on.hash | tst2.js:1:13:1:47 | documen ... ring(1) | provenance | | | tst2.js:1:13:1:47 | documen ... ring(1) | tst2.js:2:27:2:31 | query | provenance | | | tst2.js:1:13:1:47 | documen ... ring(1) | tst2.js:3:19:3:23 | query | provenance | | -| tst.js:6:7:6:37 | tainted | tst.js:7:15:7:21 | tainted | provenance | | -| tst.js:6:7:6:37 | tainted | tst.js:8:16:8:22 | tainted | provenance | | -| tst.js:6:7:6:37 | tainted | tst.js:9:17:9:23 | tainted | provenance | | -| tst.js:6:7:6:37 | tainted | tst.js:11:8:11:14 | tainted | provenance | | -| tst.js:6:17:6:37 | req.par ... rName") | tst.js:6:7:6:37 | tainted | provenance | | +| tst.js:6:7:6:13 | tainted | tst.js:7:15:7:21 | tainted | provenance | | +| tst.js:6:7:6:13 | tainted | tst.js:8:16:8:22 | tainted | provenance | | +| tst.js:6:7:6:13 | tainted | tst.js:9:17:9:23 | tainted | provenance | | +| tst.js:6:7:6:13 | tainted | tst.js:11:8:11:14 | tainted | provenance | | +| tst.js:6:17:6:37 | req.par ... rName") | tst.js:6:7:6:13 | tainted | provenance | | nodes -| XpathInjectionBad.js:6:7:6:38 | userName | semmle.label | userName | +| XpathInjectionBad.js:6:7:6:14 | userName | semmle.label | userName | | XpathInjectionBad.js:6:18:6:38 | req.par ... rName") | semmle.label | req.par ... rName") | | XpathInjectionBad.js:8:34:8:96 | "//user ... text()" | semmle.label | "//user ... text()" | | XpathInjectionBad.js:8:66:8:73 | userName | semmle.label | userName | @@ -27,7 +27,7 @@ nodes | tst2.js:1:13:1:47 | documen ... ring(1) | semmle.label | documen ... ring(1) | | tst2.js:2:27:2:31 | query | semmle.label | query | | tst2.js:3:19:3:23 | query | semmle.label | query | -| tst.js:6:7:6:37 | tainted | semmle.label | tainted | +| tst.js:6:7:6:13 | tainted | semmle.label | tainted | | tst.js:6:17:6:37 | req.par ... rName") | semmle.label | req.par ... rName") | | tst.js:7:15:7:21 | tainted | semmle.label | tainted | | tst.js:8:16:8:22 | tainted | semmle.label | tainted | diff --git a/javascript/ql/test/query-tests/Security/CWE-730/Threat-models-disabled/RegExpInjection.expected b/javascript/ql/test/query-tests/Security/CWE-730/Threat-models-disabled/RegExpInjection.expected index 07225ec763e3..bdc3775dbb78 100644 --- a/javascript/ql/test/query-tests/Security/CWE-730/Threat-models-disabled/RegExpInjection.expected +++ b/javascript/ql/test/query-tests/Security/CWE-730/Threat-models-disabled/RegExpInjection.expected @@ -18,19 +18,19 @@ | RegExpInjection.js:95:14:95:22 | sanitized | RegExpInjection.js:92:15:92:32 | req.param("input") | RegExpInjection.js:95:14:95:22 | sanitized | This regular expression is constructed from a $@. | RegExpInjection.js:92:15:92:32 | req.param("input") | user-provided value | | tst.js:6:16:6:35 | "^"+ data.name + "$" | tst.js:5:16:5:29 | req.query.data | tst.js:6:16:6:35 | "^"+ data.name + "$" | This regular expression is constructed from a $@. | tst.js:5:16:5:29 | req.query.data | user-provided value | edges -| RegExpInjection.js:5:7:5:28 | key | RegExpInjection.js:7:31:7:33 | key | provenance | | -| RegExpInjection.js:5:7:5:28 | key | RegExpInjection.js:17:19:17:21 | key | provenance | | -| RegExpInjection.js:5:7:5:28 | key | RegExpInjection.js:18:19:18:21 | key | provenance | | -| RegExpInjection.js:5:7:5:28 | key | RegExpInjection.js:28:12:28:14 | key | provenance | | -| RegExpInjection.js:5:7:5:28 | key | RegExpInjection.js:49:14:49:16 | key | provenance | | -| RegExpInjection.js:5:13:5:28 | req.param("key") | RegExpInjection.js:5:7:5:28 | key | provenance | | -| RegExpInjection.js:5:31:5:56 | input | RegExpInjection.js:35:23:35:27 | input | provenance | | -| RegExpInjection.js:5:31:5:56 | input | RegExpInjection.js:36:26:36:30 | input | provenance | | -| RegExpInjection.js:5:31:5:56 | input | RegExpInjection.js:37:25:37:29 | input | provenance | | -| RegExpInjection.js:5:31:5:56 | input | RegExpInjection.js:40:24:40:28 | input | provenance | | -| RegExpInjection.js:5:31:5:56 | input | RegExpInjection.js:41:27:41:31 | input | provenance | | -| RegExpInjection.js:5:31:5:56 | input | RegExpInjection.js:42:26:42:30 | input | provenance | | -| RegExpInjection.js:5:39:5:56 | req.param("input") | RegExpInjection.js:5:31:5:56 | input | provenance | | +| RegExpInjection.js:5:7:5:9 | key | RegExpInjection.js:7:31:7:33 | key | provenance | | +| RegExpInjection.js:5:7:5:9 | key | RegExpInjection.js:17:19:17:21 | key | provenance | | +| RegExpInjection.js:5:7:5:9 | key | RegExpInjection.js:18:19:18:21 | key | provenance | | +| RegExpInjection.js:5:7:5:9 | key | RegExpInjection.js:28:12:28:14 | key | provenance | | +| RegExpInjection.js:5:7:5:9 | key | RegExpInjection.js:49:14:49:16 | key | provenance | | +| RegExpInjection.js:5:13:5:28 | req.param("key") | RegExpInjection.js:5:7:5:9 | key | provenance | | +| RegExpInjection.js:5:31:5:35 | input | RegExpInjection.js:35:23:35:27 | input | provenance | | +| RegExpInjection.js:5:31:5:35 | input | RegExpInjection.js:36:26:36:30 | input | provenance | | +| RegExpInjection.js:5:31:5:35 | input | RegExpInjection.js:37:25:37:29 | input | provenance | | +| RegExpInjection.js:5:31:5:35 | input | RegExpInjection.js:40:24:40:28 | input | provenance | | +| RegExpInjection.js:5:31:5:35 | input | RegExpInjection.js:41:27:41:31 | input | provenance | | +| RegExpInjection.js:5:31:5:35 | input | RegExpInjection.js:42:26:42:30 | input | provenance | | +| RegExpInjection.js:5:39:5:56 | req.param("input") | RegExpInjection.js:5:31:5:35 | input | provenance | | | RegExpInjection.js:7:31:7:33 | key | RegExpInjection.js:7:23:7:45 | "\\\\b" + ... (.*)\\n" | provenance | | | RegExpInjection.js:9:17:9:17 | s | RegExpInjection.js:10:26:10:26 | s | provenance | | | RegExpInjection.js:10:20:10:27 | wrap2(s) | RegExpInjection.js:10:12:10:27 | "\\\\b" + wrap2(s) | provenance | | @@ -50,25 +50,25 @@ edges | RegExpInjection.js:49:14:49:16 | key | RegExpInjection.js:49:14:49:27 | key.split(".") [ArrayElement] | provenance | | | RegExpInjection.js:49:14:49:27 | key.split(".") [ArrayElement] | RegExpInjection.js:49:14:49:42 | key.spl ... x => x) [ArrayElement] | provenance | | | RegExpInjection.js:49:14:49:42 | key.spl ... x => x) [ArrayElement] | RegExpInjection.js:49:14:49:52 | key.spl ... in("-") | provenance | | -| RegExpInjection.js:55:31:55:56 | input | RegExpInjection.js:59:14:59:18 | input | provenance | | -| RegExpInjection.js:55:39:55:56 | req.param("input") | RegExpInjection.js:55:31:55:56 | input | provenance | | -| RegExpInjection.js:77:7:77:32 | input | RegExpInjection.js:82:25:82:29 | input | provenance | | -| RegExpInjection.js:77:15:77:32 | req.param("input") | RegExpInjection.js:77:7:77:32 | input | provenance | | +| RegExpInjection.js:55:31:55:35 | input | RegExpInjection.js:59:14:59:18 | input | provenance | | +| RegExpInjection.js:55:39:55:56 | req.param("input") | RegExpInjection.js:55:31:55:35 | input | provenance | | +| RegExpInjection.js:77:7:77:11 | input | RegExpInjection.js:82:25:82:29 | input | provenance | | +| RegExpInjection.js:77:15:77:32 | req.param("input") | RegExpInjection.js:77:7:77:11 | input | provenance | | | RegExpInjection.js:82:25:82:29 | input | RegExpInjection.js:82:25:82:48 | input.r ... g, "\|") | provenance | | | RegExpInjection.js:82:25:82:48 | input.r ... g, "\|") | RegExpInjection.js:82:14:82:55 | "^.*\\.( ... + ")$" | provenance | | | RegExpInjection.js:88:20:88:31 | process.argv | RegExpInjection.js:88:16:88:49 | `^${pro ... r.app$` | provenance | | -| RegExpInjection.js:92:7:92:32 | input | RegExpInjection.js:94:19:94:23 | input | provenance | | -| RegExpInjection.js:92:15:92:32 | req.param("input") | RegExpInjection.js:92:7:92:32 | input | provenance | | -| RegExpInjection.js:94:7:94:106 | sanitized | RegExpInjection.js:95:14:95:22 | sanitized | provenance | | +| RegExpInjection.js:92:7:92:11 | input | RegExpInjection.js:94:19:94:23 | input | provenance | | +| RegExpInjection.js:92:15:92:32 | req.param("input") | RegExpInjection.js:92:7:92:11 | input | provenance | | +| RegExpInjection.js:94:7:94:15 | sanitized | RegExpInjection.js:95:14:95:22 | sanitized | provenance | | | RegExpInjection.js:94:19:94:23 | input | RegExpInjection.js:94:19:94:106 | input.r ... "\\\\$&") | provenance | | -| RegExpInjection.js:94:19:94:106 | input.r ... "\\\\$&") | RegExpInjection.js:94:7:94:106 | sanitized | provenance | | -| tst.js:5:9:5:29 | data | tst.js:6:21:6:24 | data | provenance | | -| tst.js:5:16:5:29 | req.query.data | tst.js:5:9:5:29 | data | provenance | | +| RegExpInjection.js:94:19:94:106 | input.r ... "\\\\$&") | RegExpInjection.js:94:7:94:15 | sanitized | provenance | | +| tst.js:5:9:5:12 | data | tst.js:6:21:6:24 | data | provenance | | +| tst.js:5:16:5:29 | req.query.data | tst.js:5:9:5:12 | data | provenance | | | tst.js:6:21:6:24 | data | tst.js:6:16:6:35 | "^"+ data.name + "$" | provenance | | nodes -| RegExpInjection.js:5:7:5:28 | key | semmle.label | key | +| RegExpInjection.js:5:7:5:9 | key | semmle.label | key | | RegExpInjection.js:5:13:5:28 | req.param("key") | semmle.label | req.param("key") | -| RegExpInjection.js:5:31:5:56 | input | semmle.label | input | +| RegExpInjection.js:5:31:5:35 | input | semmle.label | input | | RegExpInjection.js:5:39:5:56 | req.param("input") | semmle.label | req.param("input") | | RegExpInjection.js:7:23:7:45 | "\\\\b" + ... (.*)\\n" | semmle.label | "\\\\b" + ... (.*)\\n" | | RegExpInjection.js:7:31:7:33 | key | semmle.label | key | @@ -99,23 +99,23 @@ nodes | RegExpInjection.js:49:14:49:27 | key.split(".") [ArrayElement] | semmle.label | key.split(".") [ArrayElement] | | RegExpInjection.js:49:14:49:42 | key.spl ... x => x) [ArrayElement] | semmle.label | key.spl ... x => x) [ArrayElement] | | RegExpInjection.js:49:14:49:52 | key.spl ... in("-") | semmle.label | key.spl ... in("-") | -| RegExpInjection.js:55:31:55:56 | input | semmle.label | input | +| RegExpInjection.js:55:31:55:35 | input | semmle.label | input | | RegExpInjection.js:55:39:55:56 | req.param("input") | semmle.label | req.param("input") | | RegExpInjection.js:59:14:59:18 | input | semmle.label | input | -| RegExpInjection.js:77:7:77:32 | input | semmle.label | input | +| RegExpInjection.js:77:7:77:11 | input | semmle.label | input | | RegExpInjection.js:77:15:77:32 | req.param("input") | semmle.label | req.param("input") | | RegExpInjection.js:82:14:82:55 | "^.*\\.( ... + ")$" | semmle.label | "^.*\\.( ... + ")$" | | RegExpInjection.js:82:25:82:29 | input | semmle.label | input | | RegExpInjection.js:82:25:82:48 | input.r ... g, "\|") | semmle.label | input.r ... g, "\|") | | RegExpInjection.js:88:16:88:49 | `^${pro ... r.app$` | semmle.label | `^${pro ... r.app$` | | RegExpInjection.js:88:20:88:31 | process.argv | semmle.label | process.argv | -| RegExpInjection.js:92:7:92:32 | input | semmle.label | input | +| RegExpInjection.js:92:7:92:11 | input | semmle.label | input | | RegExpInjection.js:92:15:92:32 | req.param("input") | semmle.label | req.param("input") | -| RegExpInjection.js:94:7:94:106 | sanitized | semmle.label | sanitized | +| RegExpInjection.js:94:7:94:15 | sanitized | semmle.label | sanitized | | RegExpInjection.js:94:19:94:23 | input | semmle.label | input | | RegExpInjection.js:94:19:94:106 | input.r ... "\\\\$&") | semmle.label | input.r ... "\\\\$&") | | RegExpInjection.js:95:14:95:22 | sanitized | semmle.label | sanitized | -| tst.js:5:9:5:29 | data | semmle.label | data | +| tst.js:5:9:5:12 | data | semmle.label | data | | tst.js:5:16:5:29 | req.query.data | semmle.label | req.query.data | | tst.js:6:16:6:35 | "^"+ data.name + "$" | semmle.label | "^"+ data.name + "$" | | tst.js:6:21:6:24 | data | semmle.label | data | diff --git a/javascript/ql/test/query-tests/Security/CWE-730/Threat-models-enabled/RegExpInjection.expected b/javascript/ql/test/query-tests/Security/CWE-730/Threat-models-enabled/RegExpInjection.expected index 95c1c0df9eb8..ad2123f3d14d 100644 --- a/javascript/ql/test/query-tests/Security/CWE-730/Threat-models-enabled/RegExpInjection.expected +++ b/javascript/ql/test/query-tests/Security/CWE-730/Threat-models-enabled/RegExpInjection.expected @@ -8,27 +8,27 @@ edges | RegExpInjection.js:6:18:6:28 | process.env | RegExpInjection.js:6:14:6:48 | `^${pro ... r.app$` | provenance | | | RegExpInjection.js:8:18:8:28 | process.env | RegExpInjection.js:8:14:8:40 | `^${pro ... }/bin$` | provenance | | -| RegExpInjection.js:10:7:10:35 | envVar | RegExpInjection.js:11:14:11:19 | envVar | provenance | | -| RegExpInjection.js:10:16:10:26 | process.env | RegExpInjection.js:10:7:10:35 | envVar | provenance | | +| RegExpInjection.js:10:7:10:12 | envVar | RegExpInjection.js:11:14:11:19 | envVar | provenance | | +| RegExpInjection.js:10:16:10:26 | process.env | RegExpInjection.js:10:7:10:12 | envVar | provenance | | | RegExpInjection.js:14:18:14:29 | process.argv | RegExpInjection.js:14:14:14:47 | `^${pro ... r.app$` | provenance | | -| RegExpInjection.js:16:7:16:28 | argv | RegExpInjection.js:17:14:17:17 | argv | provenance | | -| RegExpInjection.js:16:14:16:25 | process.argv | RegExpInjection.js:16:7:16:28 | argv | provenance | | -| RegExpInjection.js:20:7:20:36 | userInput | RegExpInjection.js:21:14:21:22 | userInput | provenance | | -| RegExpInjection.js:20:19:20:36 | req.param("input") | RegExpInjection.js:20:7:20:36 | userInput | provenance | | +| RegExpInjection.js:16:7:16:10 | argv | RegExpInjection.js:17:14:17:17 | argv | provenance | | +| RegExpInjection.js:16:14:16:25 | process.argv | RegExpInjection.js:16:7:16:10 | argv | provenance | | +| RegExpInjection.js:20:7:20:15 | userInput | RegExpInjection.js:21:14:21:22 | userInput | provenance | | +| RegExpInjection.js:20:19:20:36 | req.param("input") | RegExpInjection.js:20:7:20:15 | userInput | provenance | | nodes | RegExpInjection.js:6:14:6:48 | `^${pro ... r.app$` | semmle.label | `^${pro ... r.app$` | | RegExpInjection.js:6:18:6:28 | process.env | semmle.label | process.env | | RegExpInjection.js:8:14:8:40 | `^${pro ... }/bin$` | semmle.label | `^${pro ... }/bin$` | | RegExpInjection.js:8:18:8:28 | process.env | semmle.label | process.env | -| RegExpInjection.js:10:7:10:35 | envVar | semmle.label | envVar | +| RegExpInjection.js:10:7:10:12 | envVar | semmle.label | envVar | | RegExpInjection.js:10:16:10:26 | process.env | semmle.label | process.env | | RegExpInjection.js:11:14:11:19 | envVar | semmle.label | envVar | | RegExpInjection.js:14:14:14:47 | `^${pro ... r.app$` | semmle.label | `^${pro ... r.app$` | | RegExpInjection.js:14:18:14:29 | process.argv | semmle.label | process.argv | -| RegExpInjection.js:16:7:16:28 | argv | semmle.label | argv | +| RegExpInjection.js:16:7:16:10 | argv | semmle.label | argv | | RegExpInjection.js:16:14:16:25 | process.argv | semmle.label | process.argv | | RegExpInjection.js:17:14:17:17 | argv | semmle.label | argv | -| RegExpInjection.js:20:7:20:36 | userInput | semmle.label | userInput | +| RegExpInjection.js:20:7:20:15 | userInput | semmle.label | userInput | | RegExpInjection.js:20:19:20:36 | req.param("input") | semmle.label | req.param("input") | | RegExpInjection.js:21:14:21:22 | userInput | semmle.label | userInput | subpaths diff --git a/javascript/ql/test/query-tests/Security/CWE-754/UnvalidatedDynamicMethodCall.expected b/javascript/ql/test/query-tests/Security/CWE-754/UnvalidatedDynamicMethodCall.expected index 74cb64bdb8d7..11aaf95922c7 100644 --- a/javascript/ql/test/query-tests/Security/CWE-754/UnvalidatedDynamicMethodCall.expected +++ b/javascript/ql/test/query-tests/Security/CWE-754/UnvalidatedDynamicMethodCall.expected @@ -16,82 +16,82 @@ | tst.js:50:5:50:6 | fn | tst.js:47:39:47:40 | ev | tst.js:50:5:50:6 | fn | Invocation of method with $@ name may dispatch to unexpected target and cause an exception. | tst.js:47:39:47:40 | ev | user-controlled | edges | UnsafeDynamicMethodAccess.js:5:37:5:38 | ev | UnsafeDynamicMethodAccess.js:6:30:6:31 | ev | provenance | | -| UnsafeDynamicMethodAccess.js:6:9:6:37 | message | UnsafeDynamicMethodAccess.js:15:9:15:15 | message | provenance | | -| UnsafeDynamicMethodAccess.js:6:19:6:37 | JSON.parse(ev.data) | UnsafeDynamicMethodAccess.js:6:9:6:37 | message | provenance | | +| UnsafeDynamicMethodAccess.js:6:9:6:15 | message | UnsafeDynamicMethodAccess.js:15:9:15:15 | message | provenance | | +| UnsafeDynamicMethodAccess.js:6:19:6:37 | JSON.parse(ev.data) | UnsafeDynamicMethodAccess.js:6:9:6:15 | message | provenance | | | UnsafeDynamicMethodAccess.js:6:30:6:31 | ev | UnsafeDynamicMethodAccess.js:6:30:6:36 | ev.data | provenance | Config | | UnsafeDynamicMethodAccess.js:6:30:6:36 | ev.data | UnsafeDynamicMethodAccess.js:6:19:6:37 | JSON.parse(ev.data) | provenance | Config | | UnsafeDynamicMethodAccess.js:15:9:15:15 | message | UnsafeDynamicMethodAccess.js:15:9:15:20 | message.name | provenance | Config | | UnsafeDynamicMethodAccess.js:15:9:15:20 | message.name | UnsafeDynamicMethodAccess.js:15:5:15:21 | obj[message.name] | provenance | Config | -| UnvalidatedDynamicMethodCall2.js:13:9:13:47 | action | UnvalidatedDynamicMethodCall2.js:14:13:14:18 | action | provenance | | -| UnvalidatedDynamicMethodCall2.js:13:18:13:47 | actions ... action) | UnvalidatedDynamicMethodCall2.js:13:9:13:47 | action | provenance | | +| UnvalidatedDynamicMethodCall2.js:13:9:13:14 | action | UnvalidatedDynamicMethodCall2.js:14:13:14:18 | action | provenance | | +| UnvalidatedDynamicMethodCall2.js:13:18:13:47 | actions ... action) | UnvalidatedDynamicMethodCall2.js:13:9:13:14 | action | provenance | | | UnvalidatedDynamicMethodCall2.js:13:30:13:46 | req.params.action | UnvalidatedDynamicMethodCall2.js:13:18:13:47 | actions ... action) | provenance | Config | -| UnvalidatedDynamicMethodCall.js:14:7:14:41 | action | UnvalidatedDynamicMethodCall.js:15:11:15:16 | action | provenance | | -| UnvalidatedDynamicMethodCall.js:14:16:14:41 | actions ... action] | UnvalidatedDynamicMethodCall.js:14:7:14:41 | action | provenance | | +| UnvalidatedDynamicMethodCall.js:14:7:14:12 | action | UnvalidatedDynamicMethodCall.js:15:11:15:16 | action | provenance | | +| UnvalidatedDynamicMethodCall.js:14:16:14:41 | actions ... action] | UnvalidatedDynamicMethodCall.js:14:7:14:12 | action | provenance | | | UnvalidatedDynamicMethodCall.js:14:24:14:40 | req.params.action | UnvalidatedDynamicMethodCall.js:14:16:14:41 | actions ... action] | provenance | Config | -| UnvalidatedDynamicMethodCallGood4.js:14:13:14:51 | action | UnvalidatedDynamicMethodCallGood4.js:15:17:15:22 | action | provenance | | -| UnvalidatedDynamicMethodCallGood4.js:14:22:14:51 | actions ... action) | UnvalidatedDynamicMethodCallGood4.js:14:13:14:51 | action | provenance | | +| UnvalidatedDynamicMethodCallGood4.js:14:13:14:18 | action | UnvalidatedDynamicMethodCallGood4.js:15:17:15:22 | action | provenance | | +| UnvalidatedDynamicMethodCallGood4.js:14:22:14:51 | actions ... action) | UnvalidatedDynamicMethodCallGood4.js:14:13:14:18 | action | provenance | | | UnvalidatedDynamicMethodCallGood4.js:14:34:14:50 | req.params.action | UnvalidatedDynamicMethodCallGood4.js:14:22:14:51 | actions ... action) | provenance | Config | | tst.js:6:39:6:40 | ev | tst.js:7:27:7:28 | ev | provenance | | | tst.js:6:39:6:40 | ev | tst.js:9:9:9:10 | ev | provenance | | -| tst.js:7:9:7:39 | name | tst.js:11:9:11:12 | name | provenance | | -| tst.js:7:9:7:39 | name | tst.js:17:18:17:21 | name | provenance | | -| tst.js:7:9:7:39 | name | tst.js:21:11:21:14 | name | provenance | | -| tst.js:7:9:7:39 | name | tst.js:26:11:26:14 | name | provenance | | -| tst.js:7:9:7:39 | name | tst.js:28:11:28:14 | name | provenance | | -| tst.js:7:9:7:39 | name | tst.js:34:21:34:24 | name | provenance | | +| tst.js:7:9:7:12 | name | tst.js:11:9:11:12 | name | provenance | | +| tst.js:7:9:7:12 | name | tst.js:17:18:17:21 | name | provenance | | +| tst.js:7:9:7:12 | name | tst.js:21:11:21:14 | name | provenance | | +| tst.js:7:9:7:12 | name | tst.js:26:11:26:14 | name | provenance | | +| tst.js:7:9:7:12 | name | tst.js:28:11:28:14 | name | provenance | | +| tst.js:7:9:7:12 | name | tst.js:34:21:34:24 | name | provenance | | | tst.js:7:16:7:34 | JSON.parse(ev.data) | tst.js:7:16:7:39 | JSON.pa ... a).name | provenance | Config | -| tst.js:7:16:7:39 | JSON.pa ... a).name | tst.js:7:9:7:39 | name | provenance | | +| tst.js:7:16:7:39 | JSON.pa ... a).name | tst.js:7:9:7:12 | name | provenance | | | tst.js:7:27:7:28 | ev | tst.js:7:27:7:33 | ev.data | provenance | Config | | tst.js:7:27:7:33 | ev.data | tst.js:7:16:7:34 | JSON.parse(ev.data) | provenance | Config | | tst.js:9:9:9:10 | ev | tst.js:9:9:9:15 | ev.data | provenance | Config | | tst.js:9:9:9:15 | ev.data | tst.js:9:5:9:16 | obj[ev.data] | provenance | Config | | tst.js:11:9:11:12 | name | tst.js:11:5:11:13 | obj[name] | provenance | Config | -| tst.js:17:9:17:22 | fn | tst.js:18:5:18:6 | fn | provenance | | -| tst.js:17:9:17:22 | fn | tst.js:20:7:20:8 | fn | provenance | | -| tst.js:17:9:17:22 | fn | tst.js:22:11:22:12 | fn | provenance | | -| tst.js:17:14:17:22 | obj[name] | tst.js:17:9:17:22 | fn | provenance | | +| tst.js:17:9:17:10 | fn | tst.js:18:5:18:6 | fn | provenance | | +| tst.js:17:9:17:10 | fn | tst.js:20:7:20:8 | fn | provenance | | +| tst.js:17:9:17:10 | fn | tst.js:22:11:22:12 | fn | provenance | | +| tst.js:17:14:17:22 | obj[name] | tst.js:17:9:17:10 | fn | provenance | | | tst.js:17:18:17:21 | name | tst.js:17:14:17:22 | obj[name] | provenance | Config | | tst.js:21:11:21:14 | name | tst.js:21:7:21:15 | obj[name] | provenance | Config | | tst.js:26:11:26:14 | name | tst.js:26:7:26:15 | obj[name] | provenance | Config | | tst.js:28:11:28:14 | name | tst.js:28:7:28:15 | obj[name] | provenance | Config | -| tst.js:34:9:34:24 | key | tst.js:35:9:35:11 | key | provenance | | -| tst.js:34:9:34:24 | key | tst.js:37:11:37:13 | key | provenance | | -| tst.js:34:15:34:24 | "$" + name | tst.js:34:9:34:24 | key | provenance | | +| tst.js:34:9:34:11 | key | tst.js:35:9:35:11 | key | provenance | | +| tst.js:34:9:34:11 | key | tst.js:37:11:37:13 | key | provenance | | +| tst.js:34:15:34:24 | "$" + name | tst.js:34:9:34:11 | key | provenance | | | tst.js:34:21:34:24 | name | tst.js:34:15:34:24 | "$" + name | provenance | Config | | tst.js:35:9:35:11 | key | tst.js:35:5:35:12 | obj[key] | provenance | Config | | tst.js:37:11:37:13 | key | tst.js:37:7:37:14 | obj[key] | provenance | Config | | tst.js:47:39:47:40 | ev | tst.js:48:27:48:28 | ev | provenance | | -| tst.js:48:9:48:39 | name | tst.js:49:19:49:22 | name | provenance | | +| tst.js:48:9:48:12 | name | tst.js:49:19:49:22 | name | provenance | | | tst.js:48:16:48:34 | JSON.parse(ev.data) | tst.js:48:16:48:39 | JSON.pa ... a).name | provenance | Config | -| tst.js:48:16:48:39 | JSON.pa ... a).name | tst.js:48:9:48:39 | name | provenance | | +| tst.js:48:16:48:39 | JSON.pa ... a).name | tst.js:48:9:48:12 | name | provenance | | | tst.js:48:27:48:28 | ev | tst.js:48:27:48:33 | ev.data | provenance | Config | | tst.js:48:27:48:33 | ev.data | tst.js:48:16:48:34 | JSON.parse(ev.data) | provenance | Config | -| tst.js:49:9:49:23 | fn | tst.js:50:5:50:6 | fn | provenance | | -| tst.js:49:14:49:23 | obj2[name] | tst.js:49:9:49:23 | fn | provenance | | +| tst.js:49:9:49:10 | fn | tst.js:50:5:50:6 | fn | provenance | | +| tst.js:49:14:49:23 | obj2[name] | tst.js:49:9:49:10 | fn | provenance | | | tst.js:49:19:49:22 | name | tst.js:49:14:49:23 | obj2[name] | provenance | Config | nodes | UnsafeDynamicMethodAccess.js:5:37:5:38 | ev | semmle.label | ev | -| UnsafeDynamicMethodAccess.js:6:9:6:37 | message | semmle.label | message | +| UnsafeDynamicMethodAccess.js:6:9:6:15 | message | semmle.label | message | | UnsafeDynamicMethodAccess.js:6:19:6:37 | JSON.parse(ev.data) | semmle.label | JSON.parse(ev.data) | | UnsafeDynamicMethodAccess.js:6:30:6:31 | ev | semmle.label | ev | | UnsafeDynamicMethodAccess.js:6:30:6:36 | ev.data | semmle.label | ev.data | | UnsafeDynamicMethodAccess.js:15:5:15:21 | obj[message.name] | semmle.label | obj[message.name] | | UnsafeDynamicMethodAccess.js:15:9:15:15 | message | semmle.label | message | | UnsafeDynamicMethodAccess.js:15:9:15:20 | message.name | semmle.label | message.name | -| UnvalidatedDynamicMethodCall2.js:13:9:13:47 | action | semmle.label | action | +| UnvalidatedDynamicMethodCall2.js:13:9:13:14 | action | semmle.label | action | | UnvalidatedDynamicMethodCall2.js:13:18:13:47 | actions ... action) | semmle.label | actions ... action) | | UnvalidatedDynamicMethodCall2.js:13:30:13:46 | req.params.action | semmle.label | req.params.action | | UnvalidatedDynamicMethodCall2.js:14:13:14:18 | action | semmle.label | action | -| UnvalidatedDynamicMethodCall.js:14:7:14:41 | action | semmle.label | action | +| UnvalidatedDynamicMethodCall.js:14:7:14:12 | action | semmle.label | action | | UnvalidatedDynamicMethodCall.js:14:16:14:41 | actions ... action] | semmle.label | actions ... action] | | UnvalidatedDynamicMethodCall.js:14:24:14:40 | req.params.action | semmle.label | req.params.action | | UnvalidatedDynamicMethodCall.js:15:11:15:16 | action | semmle.label | action | -| UnvalidatedDynamicMethodCallGood4.js:14:13:14:51 | action | semmle.label | action | +| UnvalidatedDynamicMethodCallGood4.js:14:13:14:18 | action | semmle.label | action | | UnvalidatedDynamicMethodCallGood4.js:14:22:14:51 | actions ... action) | semmle.label | actions ... action) | | UnvalidatedDynamicMethodCallGood4.js:14:34:14:50 | req.params.action | semmle.label | req.params.action | | UnvalidatedDynamicMethodCallGood4.js:15:17:15:22 | action | semmle.label | action | | tst.js:6:39:6:40 | ev | semmle.label | ev | -| tst.js:7:9:7:39 | name | semmle.label | name | +| tst.js:7:9:7:12 | name | semmle.label | name | | tst.js:7:16:7:34 | JSON.parse(ev.data) | semmle.label | JSON.parse(ev.data) | | tst.js:7:16:7:39 | JSON.pa ... a).name | semmle.label | JSON.pa ... a).name | | tst.js:7:27:7:28 | ev | semmle.label | ev | @@ -101,7 +101,7 @@ nodes | tst.js:9:9:9:15 | ev.data | semmle.label | ev.data | | tst.js:11:5:11:13 | obj[name] | semmle.label | obj[name] | | tst.js:11:9:11:12 | name | semmle.label | name | -| tst.js:17:9:17:22 | fn | semmle.label | fn | +| tst.js:17:9:17:10 | fn | semmle.label | fn | | tst.js:17:14:17:22 | obj[name] | semmle.label | obj[name] | | tst.js:17:18:17:21 | name | semmle.label | name | | tst.js:18:5:18:6 | fn | semmle.label | fn | @@ -113,7 +113,7 @@ nodes | tst.js:26:11:26:14 | name | semmle.label | name | | tst.js:28:7:28:15 | obj[name] | semmle.label | obj[name] | | tst.js:28:11:28:14 | name | semmle.label | name | -| tst.js:34:9:34:24 | key | semmle.label | key | +| tst.js:34:9:34:11 | key | semmle.label | key | | tst.js:34:15:34:24 | "$" + name | semmle.label | "$" + name | | tst.js:34:21:34:24 | name | semmle.label | name | | tst.js:35:5:35:12 | obj[key] | semmle.label | obj[key] | @@ -121,12 +121,12 @@ nodes | tst.js:37:7:37:14 | obj[key] | semmle.label | obj[key] | | tst.js:37:11:37:13 | key | semmle.label | key | | tst.js:47:39:47:40 | ev | semmle.label | ev | -| tst.js:48:9:48:39 | name | semmle.label | name | +| tst.js:48:9:48:12 | name | semmle.label | name | | tst.js:48:16:48:34 | JSON.parse(ev.data) | semmle.label | JSON.parse(ev.data) | | tst.js:48:16:48:39 | JSON.pa ... a).name | semmle.label | JSON.pa ... a).name | | tst.js:48:27:48:28 | ev | semmle.label | ev | | tst.js:48:27:48:33 | ev.data | semmle.label | ev.data | -| tst.js:49:9:49:23 | fn | semmle.label | fn | +| tst.js:49:9:49:10 | fn | semmle.label | fn | | tst.js:49:14:49:23 | obj2[name] | semmle.label | obj2[name] | | tst.js:49:19:49:22 | name | semmle.label | name | | tst.js:50:5:50:6 | fn | semmle.label | fn | diff --git a/javascript/ql/test/query-tests/Security/CWE-770/ResourceExhaustion/ResourceExhaustion.expected b/javascript/ql/test/query-tests/Security/CWE-770/ResourceExhaustion/ResourceExhaustion.expected index 0d90beb06695..886460544afe 100644 --- a/javascript/ql/test/query-tests/Security/CWE-770/ResourceExhaustion/ResourceExhaustion.expected +++ b/javascript/ql/test/query-tests/Security/CWE-770/ResourceExhaustion/ResourceExhaustion.expected @@ -20,46 +20,46 @@ | resource-exhaustion.js:88:16:88:16 | n | resource-exhaustion.js:5:21:5:27 | req.url | resource-exhaustion.js:88:16:88:16 | n | This creates a buffer with a user-controlled size from a $@. | resource-exhaustion.js:5:21:5:27 | req.url | user-provided value | | resource-exhaustion.js:92:18:92:18 | n | resource-exhaustion.js:5:21:5:27 | req.url | resource-exhaustion.js:92:18:92:18 | n | This creates a buffer with a user-controlled size from a $@. | resource-exhaustion.js:5:21:5:27 | req.url | user-provided value | edges -| documentaion-examples/ResourceExhaustion_timeout.js:5:6:5:59 | delay | documentaion-examples/ResourceExhaustion_timeout.js:7:16:7:20 | delay | provenance | | -| documentaion-examples/ResourceExhaustion_timeout.js:5:14:5:59 | parseIn ... .delay) | documentaion-examples/ResourceExhaustion_timeout.js:5:6:5:59 | delay | provenance | | +| documentaion-examples/ResourceExhaustion_timeout.js:5:6:5:10 | delay | documentaion-examples/ResourceExhaustion_timeout.js:7:16:7:20 | delay | provenance | | +| documentaion-examples/ResourceExhaustion_timeout.js:5:14:5:59 | parseIn ... .delay) | documentaion-examples/ResourceExhaustion_timeout.js:5:6:5:10 | delay | provenance | | | documentaion-examples/ResourceExhaustion_timeout.js:5:23:5:46 | url.par ... , true) | documentaion-examples/ResourceExhaustion_timeout.js:5:23:5:58 | url.par ... y.delay | provenance | | | documentaion-examples/ResourceExhaustion_timeout.js:5:23:5:58 | url.par ... y.delay | documentaion-examples/ResourceExhaustion_timeout.js:5:14:5:59 | parseIn ... .delay) | provenance | Config | | documentaion-examples/ResourceExhaustion_timeout.js:5:33:5:39 | req.url | documentaion-examples/ResourceExhaustion_timeout.js:5:23:5:46 | url.par ... , true) | provenance | | -| resource-exhaustion.js:5:7:5:42 | s | resource-exhaustion.js:6:20:6:20 | s | provenance | | -| resource-exhaustion.js:5:7:5:42 | s | resource-exhaustion.js:35:12:35:12 | s | provenance | | -| resource-exhaustion.js:5:7:5:42 | s | resource-exhaustion.js:82:17:82:17 | s | provenance | | -| resource-exhaustion.js:5:7:5:42 | s | resource-exhaustion.js:84:18:84:18 | s | provenance | | -| resource-exhaustion.js:5:11:5:34 | url.par ... , true) | resource-exhaustion.js:5:7:5:42 | s | provenance | | +| resource-exhaustion.js:5:7:5:7 | s | resource-exhaustion.js:6:20:6:20 | s | provenance | | +| resource-exhaustion.js:5:7:5:7 | s | resource-exhaustion.js:35:12:35:12 | s | provenance | | +| resource-exhaustion.js:5:7:5:7 | s | resource-exhaustion.js:82:17:82:17 | s | provenance | | +| resource-exhaustion.js:5:7:5:7 | s | resource-exhaustion.js:84:18:84:18 | s | provenance | | +| resource-exhaustion.js:5:11:5:34 | url.par ... , true) | resource-exhaustion.js:5:7:5:7 | s | provenance | | | resource-exhaustion.js:5:21:5:27 | req.url | resource-exhaustion.js:5:11:5:34 | url.par ... , true) | provenance | | -| resource-exhaustion.js:6:7:6:21 | n | resource-exhaustion.js:14:16:14:16 | n | provenance | | -| resource-exhaustion.js:6:7:6:21 | n | resource-exhaustion.js:15:22:15:22 | n | provenance | | -| resource-exhaustion.js:6:7:6:21 | n | resource-exhaustion.js:16:26:16:26 | n | provenance | | -| resource-exhaustion.js:6:7:6:21 | n | resource-exhaustion.js:20:20:20:20 | n | provenance | | -| resource-exhaustion.js:6:7:6:21 | n | resource-exhaustion.js:22:18:22:18 | n | provenance | | -| resource-exhaustion.js:6:7:6:21 | n | resource-exhaustion.js:27:9:27:9 | n | provenance | | -| resource-exhaustion.js:6:7:6:21 | n | resource-exhaustion.js:28:13:28:13 | n | provenance | | -| resource-exhaustion.js:6:7:6:21 | n | resource-exhaustion.js:29:9:29:9 | n | provenance | | -| resource-exhaustion.js:6:7:6:21 | n | resource-exhaustion.js:30:9:30:9 | n | provenance | | -| resource-exhaustion.js:6:7:6:21 | n | resource-exhaustion.js:31:9:31:9 | n | provenance | | -| resource-exhaustion.js:6:7:6:21 | n | resource-exhaustion.js:32:9:32:9 | n | provenance | | -| resource-exhaustion.js:6:7:6:21 | n | resource-exhaustion.js:34:12:34:12 | n | provenance | | -| resource-exhaustion.js:6:7:6:21 | n | resource-exhaustion.js:81:17:81:17 | n | provenance | | -| resource-exhaustion.js:6:7:6:21 | n | resource-exhaustion.js:83:18:83:18 | n | provenance | | -| resource-exhaustion.js:6:7:6:21 | n | resource-exhaustion.js:88:16:88:16 | n | provenance | | -| resource-exhaustion.js:6:7:6:21 | n | resource-exhaustion.js:92:18:92:18 | n | provenance | | -| resource-exhaustion.js:6:11:6:21 | parseInt(s) | resource-exhaustion.js:6:7:6:21 | n | provenance | | +| resource-exhaustion.js:6:7:6:7 | n | resource-exhaustion.js:14:16:14:16 | n | provenance | | +| resource-exhaustion.js:6:7:6:7 | n | resource-exhaustion.js:15:22:15:22 | n | provenance | | +| resource-exhaustion.js:6:7:6:7 | n | resource-exhaustion.js:16:26:16:26 | n | provenance | | +| resource-exhaustion.js:6:7:6:7 | n | resource-exhaustion.js:20:20:20:20 | n | provenance | | +| resource-exhaustion.js:6:7:6:7 | n | resource-exhaustion.js:22:18:22:18 | n | provenance | | +| resource-exhaustion.js:6:7:6:7 | n | resource-exhaustion.js:27:9:27:9 | n | provenance | | +| resource-exhaustion.js:6:7:6:7 | n | resource-exhaustion.js:28:13:28:13 | n | provenance | | +| resource-exhaustion.js:6:7:6:7 | n | resource-exhaustion.js:29:9:29:9 | n | provenance | | +| resource-exhaustion.js:6:7:6:7 | n | resource-exhaustion.js:30:9:30:9 | n | provenance | | +| resource-exhaustion.js:6:7:6:7 | n | resource-exhaustion.js:31:9:31:9 | n | provenance | | +| resource-exhaustion.js:6:7:6:7 | n | resource-exhaustion.js:32:9:32:9 | n | provenance | | +| resource-exhaustion.js:6:7:6:7 | n | resource-exhaustion.js:34:12:34:12 | n | provenance | | +| resource-exhaustion.js:6:7:6:7 | n | resource-exhaustion.js:81:17:81:17 | n | provenance | | +| resource-exhaustion.js:6:7:6:7 | n | resource-exhaustion.js:83:18:83:18 | n | provenance | | +| resource-exhaustion.js:6:7:6:7 | n | resource-exhaustion.js:88:16:88:16 | n | provenance | | +| resource-exhaustion.js:6:7:6:7 | n | resource-exhaustion.js:92:18:92:18 | n | provenance | | +| resource-exhaustion.js:6:11:6:21 | parseInt(s) | resource-exhaustion.js:6:7:6:7 | n | provenance | | | resource-exhaustion.js:6:20:6:20 | s | resource-exhaustion.js:6:11:6:21 | parseInt(s) | provenance | Config | nodes -| documentaion-examples/ResourceExhaustion_timeout.js:5:6:5:59 | delay | semmle.label | delay | +| documentaion-examples/ResourceExhaustion_timeout.js:5:6:5:10 | delay | semmle.label | delay | | documentaion-examples/ResourceExhaustion_timeout.js:5:14:5:59 | parseIn ... .delay) | semmle.label | parseIn ... .delay) | | documentaion-examples/ResourceExhaustion_timeout.js:5:23:5:46 | url.par ... , true) | semmle.label | url.par ... , true) | | documentaion-examples/ResourceExhaustion_timeout.js:5:23:5:58 | url.par ... y.delay | semmle.label | url.par ... y.delay | | documentaion-examples/ResourceExhaustion_timeout.js:5:33:5:39 | req.url | semmle.label | req.url | | documentaion-examples/ResourceExhaustion_timeout.js:7:16:7:20 | delay | semmle.label | delay | -| resource-exhaustion.js:5:7:5:42 | s | semmle.label | s | +| resource-exhaustion.js:5:7:5:7 | s | semmle.label | s | | resource-exhaustion.js:5:11:5:34 | url.par ... , true) | semmle.label | url.par ... , true) | | resource-exhaustion.js:5:21:5:27 | req.url | semmle.label | req.url | -| resource-exhaustion.js:6:7:6:21 | n | semmle.label | n | +| resource-exhaustion.js:6:7:6:7 | n | semmle.label | n | | resource-exhaustion.js:6:11:6:21 | parseInt(s) | semmle.label | parseInt(s) | | resource-exhaustion.js:6:20:6:20 | s | semmle.label | s | | resource-exhaustion.js:14:16:14:16 | n | semmle.label | n | diff --git a/javascript/ql/test/query-tests/Security/CWE-776/XmlBomb.expected b/javascript/ql/test/query-tests/Security/CWE-776/XmlBomb.expected index 2b4d41804915..08daa017fd5a 100644 --- a/javascript/ql/test/query-tests/Security/CWE-776/XmlBomb.expected +++ b/javascript/ql/test/query-tests/Security/CWE-776/XmlBomb.expected @@ -10,25 +10,25 @@ | libxml.sax.js:6:22:6:42 | req.par ... e-xml") | libxml.sax.js:6:22:6:42 | req.par ... e-xml") | libxml.sax.js:6:22:6:42 | req.par ... e-xml") | XML parsing depends on a $@ without guarding against uncontrolled entity expansion. | libxml.sax.js:6:22:6:42 | req.par ... e-xml") | user-provided value | | libxml.saxpush.js:6:15:6:35 | req.par ... e-xml") | libxml.saxpush.js:6:15:6:35 | req.par ... e-xml") | libxml.saxpush.js:6:15:6:35 | req.par ... e-xml") | XML parsing depends on a $@ without guarding against uncontrolled entity expansion. | libxml.saxpush.js:6:15:6:35 | req.par ... e-xml") | user-provided value | edges -| closure.js:2:7:2:36 | src | closure.js:3:24:3:26 | src | provenance | | -| closure.js:2:13:2:36 | documen ... .search | closure.js:2:7:2:36 | src | provenance | | -| domparser.js:2:7:2:36 | src | domparser.js:5:37:5:39 | src | provenance | | -| domparser.js:2:7:2:36 | src | domparser.js:9:55:9:57 | src | provenance | | -| domparser.js:2:7:2:36 | src | domparser.js:11:57:11:59 | src | provenance | | -| domparser.js:2:13:2:36 | documen ... .search | domparser.js:2:7:2:36 | src | provenance | | -| jquery.js:2:7:2:36 | src | jquery.js:4:14:4:16 | src | provenance | | -| jquery.js:2:13:2:36 | documen ... .search | jquery.js:2:7:2:36 | src | provenance | | +| closure.js:2:7:2:9 | src | closure.js:3:24:3:26 | src | provenance | | +| closure.js:2:13:2:36 | documen ... .search | closure.js:2:7:2:9 | src | provenance | | +| domparser.js:2:7:2:9 | src | domparser.js:5:37:5:39 | src | provenance | | +| domparser.js:2:7:2:9 | src | domparser.js:9:55:9:57 | src | provenance | | +| domparser.js:2:7:2:9 | src | domparser.js:11:57:11:59 | src | provenance | | +| domparser.js:2:13:2:36 | documen ... .search | domparser.js:2:7:2:9 | src | provenance | | +| jquery.js:2:7:2:9 | src | jquery.js:4:14:4:16 | src | provenance | | +| jquery.js:2:13:2:36 | documen ... .search | jquery.js:2:7:2:9 | src | provenance | | nodes -| closure.js:2:7:2:36 | src | semmle.label | src | +| closure.js:2:7:2:9 | src | semmle.label | src | | closure.js:2:13:2:36 | documen ... .search | semmle.label | documen ... .search | | closure.js:3:24:3:26 | src | semmle.label | src | -| domparser.js:2:7:2:36 | src | semmle.label | src | +| domparser.js:2:7:2:9 | src | semmle.label | src | | domparser.js:2:13:2:36 | documen ... .search | semmle.label | documen ... .search | | domparser.js:5:37:5:39 | src | semmle.label | src | | domparser.js:9:55:9:57 | src | semmle.label | src | | domparser.js:11:57:11:59 | src | semmle.label | src | | expat.js:6:16:6:36 | req.par ... e-xml") | semmle.label | req.par ... e-xml") | -| jquery.js:2:7:2:36 | src | semmle.label | src | +| jquery.js:2:7:2:9 | src | semmle.label | src | | jquery.js:2:13:2:36 | documen ... .search | semmle.label | documen ... .search | | jquery.js:4:14:4:16 | src | semmle.label | src | | libxml.js:5:21:5:41 | req.par ... e-xml") | semmle.label | req.par ... e-xml") | diff --git a/javascript/ql/test/query-tests/Security/CWE-798/HardcodedCredentials.expected b/javascript/ql/test/query-tests/Security/CWE-798/HardcodedCredentials.expected index 22311127d548..965e4e51e454 100644 --- a/javascript/ql/test/query-tests/Security/CWE-798/HardcodedCredentials.expected +++ b/javascript/ql/test/query-tests/Security/CWE-798/HardcodedCredentials.expected @@ -172,15 +172,15 @@ | __tests__/HardcodedCredentialsDemo.js:8:19:8:28 | 'hgfedcba' | __tests__/HardcodedCredentialsDemo.js:8:19:8:28 | 'hgfedcba' | __tests__/HardcodedCredentialsDemo.js:8:19:8:28 | 'hgfedcba' | The hard-coded value "hgfedcba" is used as $@. | __tests__/HardcodedCredentialsDemo.js:8:19:8:28 | 'hgfedcba' | password | edges | HardcodedCredentials.js:18:16:18:30 | "user:hgfedcba" | HardcodedCredentials.js:20:36:20:51 | getCredentials() | provenance | | -| HardcodedCredentials.js:171:11:171:25 | USER | HardcodedCredentials.js:173:35:173:38 | USER | provenance | | -| HardcodedCredentials.js:171:18:171:25 | 'sdsdag' | HardcodedCredentials.js:171:11:171:25 | USER | provenance | | -| HardcodedCredentials.js:172:11:172:25 | PASS | HardcodedCredentials.js:173:43:173:46 | PASS | provenance | | -| HardcodedCredentials.js:172:18:172:25 | 'sdsdag' | HardcodedCredentials.js:172:11:172:25 | PASS | provenance | | -| HardcodedCredentials.js:173:11:173:49 | AUTH | HardcodedCredentials.js:178:39:178:42 | AUTH | provenance | | -| HardcodedCredentials.js:173:11:173:49 | AUTH | HardcodedCredentials.js:188:39:188:42 | AUTH | provenance | | -| HardcodedCredentials.js:173:11:173:49 | AUTH | HardcodedCredentials.js:195:46:195:49 | AUTH | provenance | | -| HardcodedCredentials.js:173:11:173:49 | AUTH | HardcodedCredentials.js:204:44:204:47 | AUTH | provenance | | -| HardcodedCredentials.js:173:18:173:49 | base64. ... PASS}`) | HardcodedCredentials.js:173:11:173:49 | AUTH | provenance | | +| HardcodedCredentials.js:171:11:171:14 | USER | HardcodedCredentials.js:173:35:173:38 | USER | provenance | | +| HardcodedCredentials.js:171:18:171:25 | 'sdsdag' | HardcodedCredentials.js:171:11:171:14 | USER | provenance | | +| HardcodedCredentials.js:172:11:172:14 | PASS | HardcodedCredentials.js:173:43:173:46 | PASS | provenance | | +| HardcodedCredentials.js:172:18:172:25 | 'sdsdag' | HardcodedCredentials.js:172:11:172:14 | PASS | provenance | | +| HardcodedCredentials.js:173:11:173:14 | AUTH | HardcodedCredentials.js:178:39:178:42 | AUTH | provenance | | +| HardcodedCredentials.js:173:11:173:14 | AUTH | HardcodedCredentials.js:188:39:188:42 | AUTH | provenance | | +| HardcodedCredentials.js:173:11:173:14 | AUTH | HardcodedCredentials.js:195:46:195:49 | AUTH | provenance | | +| HardcodedCredentials.js:173:11:173:14 | AUTH | HardcodedCredentials.js:204:44:204:47 | AUTH | provenance | | +| HardcodedCredentials.js:173:18:173:49 | base64. ... PASS}`) | HardcodedCredentials.js:173:11:173:14 | AUTH | provenance | | | HardcodedCredentials.js:173:32:173:48 | `${USER}:${PASS}` | HardcodedCredentials.js:173:18:173:49 | base64. ... PASS}`) | provenance | Config | | HardcodedCredentials.js:173:35:173:38 | USER | HardcodedCredentials.js:173:32:173:48 | `${USER}:${PASS}` | provenance | Config | | HardcodedCredentials.js:173:43:173:46 | PASS | HardcodedCredentials.js:173:32:173:48 | `${USER}:${PASS}` | provenance | Config | @@ -188,54 +188,54 @@ edges | HardcodedCredentials.js:188:39:188:42 | AUTH | HardcodedCredentials.js:188:30:188:44 | `Basic ${AUTH}` | provenance | Config | | HardcodedCredentials.js:195:46:195:49 | AUTH | HardcodedCredentials.js:195:37:195:51 | `Basic ${AUTH}` | provenance | Config | | HardcodedCredentials.js:204:44:204:47 | AUTH | HardcodedCredentials.js:204:35:204:49 | `Basic ${AUTH}` | provenance | Config | -| HardcodedCredentials.js:214:11:214:25 | USER | HardcodedCredentials.js:216:35:216:38 | USER | provenance | | -| HardcodedCredentials.js:214:18:214:25 | 'sdsdag' | HardcodedCredentials.js:214:11:214:25 | USER | provenance | | -| HardcodedCredentials.js:215:11:215:25 | PASS | HardcodedCredentials.js:216:43:216:46 | PASS | provenance | | -| HardcodedCredentials.js:215:18:215:25 | 'sdsdag' | HardcodedCredentials.js:215:11:215:25 | PASS | provenance | | -| HardcodedCredentials.js:216:11:216:49 | AUTH | HardcodedCredentials.js:221:46:221:49 | AUTH | provenance | | -| HardcodedCredentials.js:216:18:216:49 | base64. ... PASS}`) | HardcodedCredentials.js:216:11:216:49 | AUTH | provenance | | +| HardcodedCredentials.js:214:11:214:14 | USER | HardcodedCredentials.js:216:35:216:38 | USER | provenance | | +| HardcodedCredentials.js:214:18:214:25 | 'sdsdag' | HardcodedCredentials.js:214:11:214:14 | USER | provenance | | +| HardcodedCredentials.js:215:11:215:14 | PASS | HardcodedCredentials.js:216:43:216:46 | PASS | provenance | | +| HardcodedCredentials.js:215:18:215:25 | 'sdsdag' | HardcodedCredentials.js:215:11:215:14 | PASS | provenance | | +| HardcodedCredentials.js:216:11:216:14 | AUTH | HardcodedCredentials.js:221:46:221:49 | AUTH | provenance | | +| HardcodedCredentials.js:216:18:216:49 | base64. ... PASS}`) | HardcodedCredentials.js:216:11:216:14 | AUTH | provenance | | | HardcodedCredentials.js:216:32:216:48 | `${USER}:${PASS}` | HardcodedCredentials.js:216:18:216:49 | base64. ... PASS}`) | provenance | Config | | HardcodedCredentials.js:216:35:216:38 | USER | HardcodedCredentials.js:216:32:216:48 | `${USER}:${PASS}` | provenance | Config | | HardcodedCredentials.js:216:43:216:46 | PASS | HardcodedCredentials.js:216:32:216:48 | `${USER}:${PASS}` | provenance | Config | | HardcodedCredentials.js:221:46:221:49 | AUTH | HardcodedCredentials.js:221:37:221:51 | `Basic ${AUTH}` | provenance | Config | -| HardcodedCredentials.js:231:11:231:29 | username | HardcodedCredentials.js:237:47:237:54 | username | provenance | | -| HardcodedCredentials.js:231:22:231:29 | 'sdsdag' | HardcodedCredentials.js:231:11:231:29 | username | provenance | | +| HardcodedCredentials.js:231:11:231:18 | username | HardcodedCredentials.js:237:47:237:54 | username | provenance | | +| HardcodedCredentials.js:231:22:231:29 | 'sdsdag' | HardcodedCredentials.js:231:11:231:18 | username | provenance | | | HardcodedCredentials.js:237:35:237:72 | Buffer. ... ssword) | HardcodedCredentials.js:237:35:237:91 | Buffer. ... ase64') | provenance | Config | | HardcodedCredentials.js:237:35:237:91 | Buffer. ... ase64') | HardcodedCredentials.js:237:24:237:91 | 'Basic ... ase64') | provenance | Config | | HardcodedCredentials.js:237:47:237:54 | username | HardcodedCredentials.js:237:47:237:71 | usernam ... assword | provenance | Config | | HardcodedCredentials.js:237:47:237:71 | usernam ... assword | HardcodedCredentials.js:237:35:237:72 | Buffer. ... ssword) | provenance | Config | | HardcodedCredentials.js:237:47:237:71 | usernam ... assword | HardcodedCredentials.js:237:35:237:91 | Buffer. ... ase64') | provenance | Config | -| HardcodedCredentials.js:245:9:245:44 | privateKey | HardcodedCredentials.js:246:42:246:51 | privateKey | provenance | | -| HardcodedCredentials.js:245:22:245:44 | "myHard ... ateKey" | HardcodedCredentials.js:245:9:245:44 | privateKey | provenance | | -| HardcodedCredentials.js:248:9:248:42 | publicKey | HardcodedCredentials.js:249:23:249:31 | publicKey | provenance | | -| HardcodedCredentials.js:248:21:248:42 | "myHard ... licKey" | HardcodedCredentials.js:248:9:248:42 | publicKey | provenance | | +| HardcodedCredentials.js:245:9:245:18 | privateKey | HardcodedCredentials.js:246:42:246:51 | privateKey | provenance | | +| HardcodedCredentials.js:245:22:245:44 | "myHard ... ateKey" | HardcodedCredentials.js:245:9:245:18 | privateKey | provenance | | +| HardcodedCredentials.js:248:9:248:17 | publicKey | HardcodedCredentials.js:249:23:249:31 | publicKey | provenance | | +| HardcodedCredentials.js:248:21:248:42 | "myHard ... licKey" | HardcodedCredentials.js:248:9:248:17 | publicKey | provenance | | | HardcodedCredentials.js:268:33:268:56 | foo ? ' ... 'OAuth' | HardcodedCredentials.js:268:30:268:73 | `${foo ... Token}` | provenance | Config | | HardcodedCredentials.js:268:39:268:46 | 'Bearer' | HardcodedCredentials.js:268:33:268:56 | foo ? ' ... 'OAuth' | provenance | | | HardcodedCredentials.js:268:50:268:56 | 'OAuth' | HardcodedCredentials.js:268:33:268:56 | foo ? ' ... 'OAuth' | provenance | | -| HardcodedCredentials.js:308:9:308:44 | privateKey | HardcodedCredentials.js:309:34:309:43 | privateKey | provenance | | -| HardcodedCredentials.js:308:22:308:44 | "myHard ... ateKey" | HardcodedCredentials.js:308:9:308:44 | privateKey | provenance | | -| HardcodedCredentials.js:316:9:316:44 | privateKey | HardcodedCredentials.js:317:52:317:61 | privateKey | provenance | | -| HardcodedCredentials.js:316:22:316:44 | "myHard ... ateKey" | HardcodedCredentials.js:316:9:316:44 | privateKey | provenance | | +| HardcodedCredentials.js:308:9:308:18 | privateKey | HardcodedCredentials.js:309:34:309:43 | privateKey | provenance | | +| HardcodedCredentials.js:308:22:308:44 | "myHard ... ateKey" | HardcodedCredentials.js:308:9:308:18 | privateKey | provenance | | +| HardcodedCredentials.js:316:9:316:18 | privateKey | HardcodedCredentials.js:317:52:317:61 | privateKey | provenance | | +| HardcodedCredentials.js:316:22:316:44 | "myHard ... ateKey" | HardcodedCredentials.js:316:9:316:18 | privateKey | provenance | | | HardcodedCredentials.js:317:52:317:61 | privateKey | HardcodedCredentials.js:317:27:317:62 | new Tex ... ateKey) | provenance | Config | -| HardcodedCredentials.js:319:11:321:29 | spki | HardcodedCredentials.js:322:43:322:46 | spki | provenance | | -| HardcodedCredentials.js:319:18:321:29 | `-----B ... Y-----` | HardcodedCredentials.js:319:11:321:29 | spki | provenance | | -| HardcodedCredentials.js:322:9:322:56 | publicKey | HardcodedCredentials.js:323:27:323:35 | publicKey | provenance | | -| HardcodedCredentials.js:322:21:322:56 | await j ... RS256') | HardcodedCredentials.js:322:9:322:56 | publicKey | provenance | | +| HardcodedCredentials.js:319:11:319:14 | spki | HardcodedCredentials.js:322:43:322:46 | spki | provenance | | +| HardcodedCredentials.js:319:18:321:29 | `-----B ... Y-----` | HardcodedCredentials.js:319:11:319:14 | spki | provenance | | +| HardcodedCredentials.js:322:9:322:17 | publicKey | HardcodedCredentials.js:323:27:323:35 | publicKey | provenance | | +| HardcodedCredentials.js:322:21:322:56 | await j ... RS256') | HardcodedCredentials.js:322:9:322:17 | publicKey | provenance | | | HardcodedCredentials.js:322:43:322:46 | spki | HardcodedCredentials.js:322:21:322:56 | await j ... RS256') | provenance | Config | | HardcodedCredentials.js:328:12:328:55 | 'whYOFK ... -6f...' | HardcodedCredentials.js:331:17:331:46 | await j ... k, alg) | provenance | Config | -| HardcodedCredentials.js:331:5:331:46 | publicKey | HardcodedCredentials.js:335:31:335:39 | publicKey | provenance | | -| HardcodedCredentials.js:331:17:331:46 | await j ... k, alg) | HardcodedCredentials.js:331:5:331:46 | publicKey | provenance | | -| HardcodedCredentials.js:344:9:344:43 | secretKey | HardcodedCredentials.js:349:21:349:29 | secretKey | provenance | | -| HardcodedCredentials.js:344:9:344:43 | secretKey | HardcodedCredentials.js:360:33:360:41 | secretKey | provenance | | -| HardcodedCredentials.js:344:21:344:43 | "myHard ... ateKey" | HardcodedCredentials.js:344:9:344:43 | secretKey | provenance | | +| HardcodedCredentials.js:331:5:331:13 | publicKey | HardcodedCredentials.js:335:31:335:39 | publicKey | provenance | | +| HardcodedCredentials.js:331:17:331:46 | await j ... k, alg) | HardcodedCredentials.js:331:5:331:13 | publicKey | provenance | | +| HardcodedCredentials.js:344:9:344:17 | secretKey | HardcodedCredentials.js:349:21:349:29 | secretKey | provenance | | +| HardcodedCredentials.js:344:9:344:17 | secretKey | HardcodedCredentials.js:360:33:360:41 | secretKey | provenance | | +| HardcodedCredentials.js:344:21:344:43 | "myHard ... ateKey" | HardcodedCredentials.js:344:9:344:17 | secretKey | provenance | | | HardcodedCredentials.js:360:33:360:41 | secretKey | HardcodedCredentials.js:360:21:360:52 | Buffer. ... ase64") | provenance | Config | -| HardcodedCredentials.js:375:9:375:43 | secretKey | HardcodedCredentials.js:378:24:378:32 | secretKey | provenance | | -| HardcodedCredentials.js:375:9:375:43 | secretKey | HardcodedCredentials.js:385:31:385:39 | secretKey | provenance | | -| HardcodedCredentials.js:375:21:375:43 | "myHard ... ateKey" | HardcodedCredentials.js:375:9:375:43 | secretKey | provenance | | -| HardcodedCredentials.js:396:9:396:43 | secretKey | HardcodedCredentials.js:399:17:399:25 | secretKey | provenance | | -| HardcodedCredentials.js:396:21:396:43 | "myHard ... ateKey" | HardcodedCredentials.js:396:9:396:43 | secretKey | provenance | | -| HardcodedCredentials.js:414:9:414:43 | secretKey | HardcodedCredentials.js:416:27:416:35 | secretKey | provenance | | -| HardcodedCredentials.js:414:21:414:43 | "myHard ... ateKey" | HardcodedCredentials.js:414:9:414:43 | secretKey | provenance | | +| HardcodedCredentials.js:375:9:375:17 | secretKey | HardcodedCredentials.js:378:24:378:32 | secretKey | provenance | | +| HardcodedCredentials.js:375:9:375:17 | secretKey | HardcodedCredentials.js:385:31:385:39 | secretKey | provenance | | +| HardcodedCredentials.js:375:21:375:43 | "myHard ... ateKey" | HardcodedCredentials.js:375:9:375:17 | secretKey | provenance | | +| HardcodedCredentials.js:396:9:396:17 | secretKey | HardcodedCredentials.js:399:17:399:25 | secretKey | provenance | | +| HardcodedCredentials.js:396:21:396:43 | "myHard ... ateKey" | HardcodedCredentials.js:396:9:396:17 | secretKey | provenance | | +| HardcodedCredentials.js:414:9:414:17 | secretKey | HardcodedCredentials.js:416:27:416:35 | secretKey | provenance | | +| HardcodedCredentials.js:414:21:414:43 | "myHard ... ateKey" | HardcodedCredentials.js:414:9:414:17 | secretKey | provenance | | nodes | HardcodedCredentials.js:5:15:5:22 | 'dbuser' | semmle.label | 'dbuser' | | HardcodedCredentials.js:8:19:8:28 | 'hgfedcba' | semmle.label | 'hgfedcba' | @@ -292,11 +292,11 @@ nodes | HardcodedCredentials.js:160:38:160:56 | "oiuneawrgiyubaegr" | semmle.label | "oiuneawrgiyubaegr" | | HardcodedCredentials.js:161:41:161:59 | 'oiuneawrgiyubaegr' | semmle.label | 'oiuneawrgiyubaegr' | | HardcodedCredentials.js:164:35:164:45 | 'change_me' | semmle.label | 'change_me' | -| HardcodedCredentials.js:171:11:171:25 | USER | semmle.label | USER | +| HardcodedCredentials.js:171:11:171:14 | USER | semmle.label | USER | | HardcodedCredentials.js:171:18:171:25 | 'sdsdag' | semmle.label | 'sdsdag' | -| HardcodedCredentials.js:172:11:172:25 | PASS | semmle.label | PASS | +| HardcodedCredentials.js:172:11:172:14 | PASS | semmle.label | PASS | | HardcodedCredentials.js:172:18:172:25 | 'sdsdag' | semmle.label | 'sdsdag' | -| HardcodedCredentials.js:173:11:173:49 | AUTH | semmle.label | AUTH | +| HardcodedCredentials.js:173:11:173:14 | AUTH | semmle.label | AUTH | | HardcodedCredentials.js:173:18:173:49 | base64. ... PASS}`) | semmle.label | base64. ... PASS}`) | | HardcodedCredentials.js:173:32:173:48 | `${USER}:${PASS}` | semmle.label | `${USER}:${PASS}` | | HardcodedCredentials.js:173:35:173:38 | USER | semmle.label | USER | @@ -309,28 +309,28 @@ nodes | HardcodedCredentials.js:195:46:195:49 | AUTH | semmle.label | AUTH | | HardcodedCredentials.js:204:35:204:49 | `Basic ${AUTH}` | semmle.label | `Basic ${AUTH}` | | HardcodedCredentials.js:204:44:204:47 | AUTH | semmle.label | AUTH | -| HardcodedCredentials.js:214:11:214:25 | USER | semmle.label | USER | +| HardcodedCredentials.js:214:11:214:14 | USER | semmle.label | USER | | HardcodedCredentials.js:214:18:214:25 | 'sdsdag' | semmle.label | 'sdsdag' | -| HardcodedCredentials.js:215:11:215:25 | PASS | semmle.label | PASS | +| HardcodedCredentials.js:215:11:215:14 | PASS | semmle.label | PASS | | HardcodedCredentials.js:215:18:215:25 | 'sdsdag' | semmle.label | 'sdsdag' | -| HardcodedCredentials.js:216:11:216:49 | AUTH | semmle.label | AUTH | +| HardcodedCredentials.js:216:11:216:14 | AUTH | semmle.label | AUTH | | HardcodedCredentials.js:216:18:216:49 | base64. ... PASS}`) | semmle.label | base64. ... PASS}`) | | HardcodedCredentials.js:216:32:216:48 | `${USER}:${PASS}` | semmle.label | `${USER}:${PASS}` | | HardcodedCredentials.js:216:35:216:38 | USER | semmle.label | USER | | HardcodedCredentials.js:216:43:216:46 | PASS | semmle.label | PASS | | HardcodedCredentials.js:221:37:221:51 | `Basic ${AUTH}` | semmle.label | `Basic ${AUTH}` | | HardcodedCredentials.js:221:46:221:49 | AUTH | semmle.label | AUTH | -| HardcodedCredentials.js:231:11:231:29 | username | semmle.label | username | +| HardcodedCredentials.js:231:11:231:18 | username | semmle.label | username | | HardcodedCredentials.js:231:22:231:29 | 'sdsdag' | semmle.label | 'sdsdag' | | HardcodedCredentials.js:237:24:237:91 | 'Basic ... ase64') | semmle.label | 'Basic ... ase64') | | HardcodedCredentials.js:237:35:237:72 | Buffer. ... ssword) | semmle.label | Buffer. ... ssword) | | HardcodedCredentials.js:237:35:237:91 | Buffer. ... ase64') | semmle.label | Buffer. ... ase64') | | HardcodedCredentials.js:237:47:237:54 | username | semmle.label | username | | HardcodedCredentials.js:237:47:237:71 | usernam ... assword | semmle.label | usernam ... assword | -| HardcodedCredentials.js:245:9:245:44 | privateKey | semmle.label | privateKey | +| HardcodedCredentials.js:245:9:245:18 | privateKey | semmle.label | privateKey | | HardcodedCredentials.js:245:22:245:44 | "myHard ... ateKey" | semmle.label | "myHard ... ateKey" | | HardcodedCredentials.js:246:42:246:51 | privateKey | semmle.label | privateKey | -| HardcodedCredentials.js:248:9:248:42 | publicKey | semmle.label | publicKey | +| HardcodedCredentials.js:248:9:248:17 | publicKey | semmle.label | publicKey | | HardcodedCredentials.js:248:21:248:42 | "myHard ... licKey" | semmle.label | "myHard ... licKey" | | HardcodedCredentials.js:249:23:249:31 | publicKey | semmle.label | publicKey | | HardcodedCredentials.js:260:30:260:40 | `Basic foo` | semmle.label | `Basic foo` | @@ -358,36 +358,36 @@ nodes | HardcodedCredentials.js:300:44:300:56 | 'SampleToken' | semmle.label | 'SampleToken' | | HardcodedCredentials.js:301:44:301:55 | 'MyPassword' | semmle.label | 'MyPassword' | | HardcodedCredentials.js:302:44:302:69 | 'iubfew ... ybgera' | semmle.label | 'iubfew ... ybgera' | -| HardcodedCredentials.js:308:9:308:44 | privateKey | semmle.label | privateKey | +| HardcodedCredentials.js:308:9:308:18 | privateKey | semmle.label | privateKey | | HardcodedCredentials.js:308:22:308:44 | "myHard ... ateKey" | semmle.label | "myHard ... ateKey" | | HardcodedCredentials.js:309:34:309:43 | privateKey | semmle.label | privateKey | -| HardcodedCredentials.js:316:9:316:44 | privateKey | semmle.label | privateKey | +| HardcodedCredentials.js:316:9:316:18 | privateKey | semmle.label | privateKey | | HardcodedCredentials.js:316:22:316:44 | "myHard ... ateKey" | semmle.label | "myHard ... ateKey" | | HardcodedCredentials.js:317:27:317:62 | new Tex ... ateKey) | semmle.label | new Tex ... ateKey) | | HardcodedCredentials.js:317:52:317:61 | privateKey | semmle.label | privateKey | -| HardcodedCredentials.js:319:11:321:29 | spki | semmle.label | spki | +| HardcodedCredentials.js:319:11:319:14 | spki | semmle.label | spki | | HardcodedCredentials.js:319:18:321:29 | `-----B ... Y-----` | semmle.label | `-----B ... Y-----` | -| HardcodedCredentials.js:322:9:322:56 | publicKey | semmle.label | publicKey | +| HardcodedCredentials.js:322:9:322:17 | publicKey | semmle.label | publicKey | | HardcodedCredentials.js:322:21:322:56 | await j ... RS256') | semmle.label | await j ... RS256') | | HardcodedCredentials.js:322:43:322:46 | spki | semmle.label | spki | | HardcodedCredentials.js:323:27:323:35 | publicKey | semmle.label | publicKey | | HardcodedCredentials.js:328:12:328:55 | 'whYOFK ... -6f...' | semmle.label | 'whYOFK ... -6f...' | -| HardcodedCredentials.js:331:5:331:46 | publicKey | semmle.label | publicKey | +| HardcodedCredentials.js:331:5:331:13 | publicKey | semmle.label | publicKey | | HardcodedCredentials.js:331:17:331:46 | await j ... k, alg) | semmle.label | await j ... k, alg) | | HardcodedCredentials.js:335:31:335:39 | publicKey | semmle.label | publicKey | -| HardcodedCredentials.js:344:9:344:43 | secretKey | semmle.label | secretKey | +| HardcodedCredentials.js:344:9:344:17 | secretKey | semmle.label | secretKey | | HardcodedCredentials.js:344:21:344:43 | "myHard ... ateKey" | semmle.label | "myHard ... ateKey" | | HardcodedCredentials.js:349:21:349:29 | secretKey | semmle.label | secretKey | | HardcodedCredentials.js:360:21:360:52 | Buffer. ... ase64") | semmle.label | Buffer. ... ase64") | | HardcodedCredentials.js:360:33:360:41 | secretKey | semmle.label | secretKey | -| HardcodedCredentials.js:375:9:375:43 | secretKey | semmle.label | secretKey | +| HardcodedCredentials.js:375:9:375:17 | secretKey | semmle.label | secretKey | | HardcodedCredentials.js:375:21:375:43 | "myHard ... ateKey" | semmle.label | "myHard ... ateKey" | | HardcodedCredentials.js:378:24:378:32 | secretKey | semmle.label | secretKey | | HardcodedCredentials.js:385:31:385:39 | secretKey | semmle.label | secretKey | -| HardcodedCredentials.js:396:9:396:43 | secretKey | semmle.label | secretKey | +| HardcodedCredentials.js:396:9:396:17 | secretKey | semmle.label | secretKey | | HardcodedCredentials.js:396:21:396:43 | "myHard ... ateKey" | semmle.label | "myHard ... ateKey" | | HardcodedCredentials.js:399:17:399:25 | secretKey | semmle.label | secretKey | -| HardcodedCredentials.js:414:9:414:43 | secretKey | semmle.label | secretKey | +| HardcodedCredentials.js:414:9:414:17 | secretKey | semmle.label | secretKey | | HardcodedCredentials.js:414:21:414:43 | "myHard ... ateKey" | semmle.label | "myHard ... ateKey" | | HardcodedCredentials.js:416:27:416:35 | secretKey | semmle.label | secretKey | | HardcodedCredentials.js:423:43:423:53 | "AccessID1" | semmle.label | "AccessID1" | diff --git a/javascript/ql/test/query-tests/Security/CWE-807/ConditionalBypass.expected b/javascript/ql/test/query-tests/Security/CWE-807/ConditionalBypass.expected index 8743571bbbcd..ea9f656fb516 100644 --- a/javascript/ql/test/query-tests/Security/CWE-807/ConditionalBypass.expected +++ b/javascript/ql/test/query-tests/Security/CWE-807/ConditionalBypass.expected @@ -13,8 +13,8 @@ edges | example_bypass.js:6:9:6:19 | req.cookies | example_bypass.js:6:9:6:34 | req.coo ... nUserId | provenance | | | tst.js:13:9:13:19 | req.cookies | tst.js:13:9:13:30 | req.coo ... inThing | provenance | | | tst.js:24:17:24:17 | v | tst.js:25:16:25:16 | v | provenance | | -| tst.js:27:9:27:37 | v3 | tst.js:28:9:28:10 | v3 | provenance | | -| tst.js:27:14:27:37 | id(req. ... okieId) | tst.js:27:9:27:37 | v3 | provenance | | +| tst.js:27:9:27:10 | v3 | tst.js:28:9:28:10 | v3 | provenance | | +| tst.js:27:14:27:37 | id(req. ... okieId) | tst.js:27:9:27:10 | v3 | provenance | | | tst.js:27:17:27:27 | req.cookies | tst.js:27:17:27:36 | req.cookies.cookieId | provenance | | | tst.js:27:17:27:36 | req.cookies.cookieId | tst.js:24:17:24:17 | v | provenance | | | tst.js:27:17:27:36 | req.cookies.cookieId | tst.js:27:14:27:37 | id(req. ... okieId) | provenance | | @@ -35,7 +35,7 @@ nodes | tst.js:13:9:13:30 | req.coo ... inThing | semmle.label | req.coo ... inThing | | tst.js:24:17:24:17 | v | semmle.label | v | | tst.js:25:16:25:16 | v | semmle.label | v | -| tst.js:27:9:27:37 | v3 | semmle.label | v3 | +| tst.js:27:9:27:10 | v3 | semmle.label | v3 | | tst.js:27:14:27:37 | id(req. ... okieId) | semmle.label | id(req. ... okieId) | | tst.js:27:17:27:27 | req.cookies | semmle.label | req.cookies | | tst.js:27:17:27:36 | req.cookies.cookieId | semmle.label | req.cookies.cookieId | diff --git a/javascript/ql/test/query-tests/Security/CWE-829/InsecureDownload.expected b/javascript/ql/test/query-tests/Security/CWE-829/InsecureDownload.expected index e430335b97b7..5c9f10f56214 100644 --- a/javascript/ql/test/query-tests/Security/CWE-829/InsecureDownload.expected +++ b/javascript/ql/test/query-tests/Security/CWE-829/InsecureDownload.expected @@ -6,12 +6,12 @@ | insecure-download.js:48:12:48:38 | "http:/ ... unsafe" | insecure-download.js:48:12:48:38 | "http:/ ... unsafe" | insecure-download.js:48:12:48:38 | "http:/ ... unsafe" | $@ of sensitive file from $@. | insecure-download.js:48:5:48:71 | nugget( ... => { }) | Download | insecure-download.js:48:12:48:38 | "http:/ ... unsafe" | HTTP source | | insecure-download.js:52:11:52:45 | "http:/ ... nknown" | insecure-download.js:52:11:52:45 | "http:/ ... nknown" | insecure-download.js:52:11:52:45 | "http:/ ... nknown" | $@ of sensitive file from $@. | insecure-download.js:52:5:54:6 | $.get(" ... \\n }) | Download | insecure-download.js:52:11:52:45 | "http:/ ... nknown" | HTTP source | edges -| insecure-download.js:36:9:36:45 | url | insecure-download.js:37:23:37:25 | url | provenance | | -| insecure-download.js:36:9:36:45 | url | insecure-download.js:39:26:39:28 | url | provenance | | -| insecure-download.js:36:15:36:45 | "http:/ ... fe.APK" | insecure-download.js:36:9:36:45 | url | provenance | | +| insecure-download.js:36:9:36:11 | url | insecure-download.js:37:23:37:25 | url | provenance | | +| insecure-download.js:36:9:36:11 | url | insecure-download.js:39:26:39:28 | url | provenance | | +| insecure-download.js:36:15:36:45 | "http:/ ... fe.APK" | insecure-download.js:36:9:36:11 | url | provenance | | nodes | insecure-download.js:30:12:30:42 | "http:/ ... fe.APK" | semmle.label | "http:/ ... fe.APK" | -| insecure-download.js:36:9:36:45 | url | semmle.label | url | +| insecure-download.js:36:9:36:11 | url | semmle.label | url | | insecure-download.js:36:15:36:45 | "http:/ ... fe.APK" | semmle.label | "http:/ ... fe.APK" | | insecure-download.js:37:23:37:25 | url | semmle.label | url | | insecure-download.js:39:26:39:28 | url | semmle.label | url | diff --git a/javascript/ql/test/query-tests/Security/CWE-843/TypeConfusionThroughParameterTampering.expected b/javascript/ql/test/query-tests/Security/CWE-843/TypeConfusionThroughParameterTampering.expected index b07e1c194a45..39ef0ef3318f 100644 --- a/javascript/ql/test/query-tests/Security/CWE-843/TypeConfusionThroughParameterTampering.expected +++ b/javascript/ql/test/query-tests/Security/CWE-843/TypeConfusionThroughParameterTampering.expected @@ -14,21 +14,21 @@ | tst.js:100:9:100:16 | data.foo | tst.js:100:9:100:16 | data.foo | tst.js:100:9:100:16 | data.foo | Potential type confusion as $@ may be either an array or a string. | tst.js:100:9:100:16 | data.foo | this HTTP request parameter | | tst.js:106:5:106:8 | data | tst.js:105:16:105:29 | req.query.data | tst.js:106:5:106:8 | data | Potential type confusion as $@ may be either an array or a string. | tst.js:105:16:105:29 | req.query.data | this HTTP request parameter | edges -| tst.js:5:9:5:27 | foo | tst.js:6:5:6:7 | foo | provenance | | -| tst.js:5:9:5:27 | foo | tst.js:6:5:6:7 | foo | provenance | | -| tst.js:5:9:5:27 | foo | tst.js:8:5:8:7 | foo | provenance | | -| tst.js:5:9:5:27 | foo | tst.js:8:5:8:7 | foo | provenance | | -| tst.js:5:9:5:27 | foo | tst.js:17:7:17:9 | foo | provenance | | -| tst.js:5:9:5:27 | foo | tst.js:21:5:21:7 | foo | provenance | | -| tst.js:5:9:5:27 | foo | tst.js:22:5:22:7 | foo | provenance | | -| tst.js:5:9:5:27 | foo | tst.js:23:5:23:7 | foo | provenance | | -| tst.js:5:9:5:27 | foo | tst.js:25:5:25:7 | foo | provenance | | -| tst.js:5:9:5:27 | foo | tst.js:27:5:27:7 | foo | provenance | | -| tst.js:5:9:5:27 | foo | tst.js:27:5:27:7 | foo | provenance | | -| tst.js:5:9:5:27 | foo | tst.js:28:5:28:7 | foo | provenance | | -| tst.js:5:9:5:27 | foo | tst.js:28:5:28:7 | foo | provenance | | -| tst.js:5:9:5:27 | foo | tst.js:30:5:30:7 | foo | provenance | | -| tst.js:5:15:5:27 | req.query.foo | tst.js:5:9:5:27 | foo | provenance | | +| tst.js:5:9:5:11 | foo | tst.js:6:5:6:7 | foo | provenance | | +| tst.js:5:9:5:11 | foo | tst.js:6:5:6:7 | foo | provenance | | +| tst.js:5:9:5:11 | foo | tst.js:8:5:8:7 | foo | provenance | | +| tst.js:5:9:5:11 | foo | tst.js:8:5:8:7 | foo | provenance | | +| tst.js:5:9:5:11 | foo | tst.js:17:7:17:9 | foo | provenance | | +| tst.js:5:9:5:11 | foo | tst.js:21:5:21:7 | foo | provenance | | +| tst.js:5:9:5:11 | foo | tst.js:22:5:22:7 | foo | provenance | | +| tst.js:5:9:5:11 | foo | tst.js:23:5:23:7 | foo | provenance | | +| tst.js:5:9:5:11 | foo | tst.js:25:5:25:7 | foo | provenance | | +| tst.js:5:9:5:11 | foo | tst.js:27:5:27:7 | foo | provenance | | +| tst.js:5:9:5:11 | foo | tst.js:27:5:27:7 | foo | provenance | | +| tst.js:5:9:5:11 | foo | tst.js:28:5:28:7 | foo | provenance | | +| tst.js:5:9:5:11 | foo | tst.js:28:5:28:7 | foo | provenance | | +| tst.js:5:9:5:11 | foo | tst.js:30:5:30:7 | foo | provenance | | +| tst.js:5:15:5:27 | req.query.foo | tst.js:5:9:5:11 | foo | provenance | | | tst.js:6:5:6:7 | foo | tst.js:8:5:8:7 | foo | provenance | | | tst.js:6:5:6:7 | foo | tst.js:8:5:8:7 | foo | provenance | | | tst.js:8:5:8:7 | foo | tst.js:10:5:12:5 | functio ... t\\n } [foo] | provenance | | @@ -48,15 +48,15 @@ edges | tst.js:27:5:27:7 | foo | tst.js:28:5:28:7 | foo | provenance | | | tst.js:28:5:28:7 | foo | tst.js:30:5:30:7 | foo | provenance | | | tst.js:41:12:41:12 | f [foo] | tst.js:11:9:11:11 | foo | provenance | | -| tst.js:47:9:47:35 | foo | tst.js:48:5:48:7 | foo | provenance | | -| tst.js:47:15:47:35 | ctx.req ... ery.foo | tst.js:47:9:47:35 | foo | provenance | | +| tst.js:47:9:47:11 | foo | tst.js:48:5:48:7 | foo | provenance | | +| tst.js:47:15:47:35 | ctx.req ... ery.foo | tst.js:47:9:47:11 | foo | provenance | | | tst.js:79:25:79:38 | req.query.path | tst.js:82:23:82:23 | p | provenance | | | tst.js:82:23:82:23 | p | tst.js:83:9:83:9 | p | provenance | | | tst.js:82:23:82:23 | p | tst.js:84:9:84:9 | p | provenance | | -| tst.js:105:9:105:29 | data | tst.js:106:5:106:8 | data | provenance | | -| tst.js:105:16:105:29 | req.query.data | tst.js:105:9:105:29 | data | provenance | | +| tst.js:105:9:105:12 | data | tst.js:106:5:106:8 | data | provenance | | +| tst.js:105:16:105:29 | req.query.data | tst.js:105:9:105:12 | data | provenance | | nodes -| tst.js:5:9:5:27 | foo | semmle.label | foo | +| tst.js:5:9:5:11 | foo | semmle.label | foo | | tst.js:5:15:5:27 | req.query.foo | semmle.label | req.query.foo | | tst.js:6:5:6:7 | foo | semmle.label | foo | | tst.js:6:5:6:7 | foo | semmle.label | foo | @@ -78,7 +78,7 @@ nodes | tst.js:28:5:28:7 | foo | semmle.label | foo | | tst.js:30:5:30:7 | foo | semmle.label | foo | | tst.js:41:12:41:12 | f [foo] | semmle.label | f [foo] | -| tst.js:47:9:47:35 | foo | semmle.label | foo | +| tst.js:47:9:47:11 | foo | semmle.label | foo | | tst.js:47:15:47:35 | ctx.req ... ery.foo | semmle.label | ctx.req ... ery.foo | | tst.js:48:5:48:7 | foo | semmle.label | foo | | tst.js:79:25:79:38 | req.query.path | semmle.label | req.query.path | @@ -88,7 +88,7 @@ nodes | tst.js:92:5:92:12 | data.foo | semmle.label | data.foo | | tst.js:94:9:94:16 | data.foo | semmle.label | data.foo | | tst.js:100:9:100:16 | data.foo | semmle.label | data.foo | -| tst.js:105:9:105:29 | data | semmle.label | data | +| tst.js:105:9:105:12 | data | semmle.label | data | | tst.js:105:16:105:29 | req.query.data | semmle.label | req.query.data | | tst.js:106:5:106:8 | data | semmle.label | data | subpaths diff --git a/javascript/ql/test/query-tests/Security/CWE-915/PrototypePollutingAssignment/PrototypePollutingAssignment.expected b/javascript/ql/test/query-tests/Security/CWE-915/PrototypePollutingAssignment/PrototypePollutingAssignment.expected index 67aadb32c311..c2fddac0ce35 100644 --- a/javascript/ql/test/query-tests/Security/CWE-915/PrototypePollutingAssignment/PrototypePollutingAssignment.expected +++ b/javascript/ql/test/query-tests/Security/CWE-915/PrototypePollutingAssignment/PrototypePollutingAssignment.expected @@ -29,59 +29,59 @@ edges | lib.js:1:38:1:40 | obj | lib.js:6:7:6:9 | obj | provenance | | | lib.js:1:43:1:46 | path | lib.js:2:21:2:24 | path | provenance | | -| lib.js:2:7:2:27 | currentPath | lib.js:11:21:11:31 | currentPath | provenance | | +| lib.js:2:7:2:17 | currentPath | lib.js:11:21:11:31 | currentPath | provenance | | | lib.js:2:21:2:24 | path | lib.js:2:21:2:27 | path[0] | provenance | Config | -| lib.js:2:21:2:27 | path[0] | lib.js:2:7:2:27 | currentPath | provenance | | +| lib.js:2:21:2:27 | path[0] | lib.js:2:7:2:17 | currentPath | provenance | | | lib.js:11:17:11:32 | obj[currentPath] | lib.js:1:38:1:40 | obj | provenance | | | lib.js:11:21:11:31 | currentPath | lib.js:11:17:11:32 | obj[currentPath] | provenance | Config | | lib.js:14:38:14:41 | path | lib.js:15:7:15:10 | path | provenance | | | lib.js:15:7:15:10 | path | lib.js:15:7:15:13 | path[0] | provenance | Config | | lib.js:15:7:15:13 | path[0] | lib.js:15:3:15:14 | obj[path[0]] | provenance | Config | -| lib.js:20:7:20:25 | path | lib.js:22:7:22:10 | path | provenance | | +| lib.js:20:7:20:10 | path | lib.js:22:7:22:10 | path | provenance | | | lib.js:20:14:20:22 | arguments | lib.js:20:14:20:25 | arguments[1] | provenance | Config | -| lib.js:20:14:20:25 | arguments[1] | lib.js:20:7:20:25 | path | provenance | | +| lib.js:20:14:20:25 | arguments[1] | lib.js:20:7:20:10 | path | provenance | | | lib.js:22:7:22:10 | path | lib.js:22:7:22:13 | path[0] | provenance | Config | | lib.js:22:7:22:13 | path[0] | lib.js:22:3:22:14 | obj[path[0]] | provenance | Config | | lib.js:25:44:25:47 | path | lib.js:26:14:26:17 | path | provenance | | | lib.js:26:14:26:17 | path | lib.js:26:14:26:20 | path[0] | provenance | Config | | lib.js:26:14:26:20 | path[0] | lib.js:26:10:26:21 | obj[path[0]] | provenance | Config | -| lib.js:30:9:30:52 | args | lib.js:32:14:32:17 | args | provenance | | -| lib.js:30:9:30:52 | args [ArrayElement] | lib.js:32:14:32:17 | args [ArrayElement] | provenance | | -| lib.js:30:16:30:52 | Array.p ... uments) | lib.js:30:9:30:52 | args | provenance | | -| lib.js:30:16:30:52 | Array.p ... uments) [ArrayElement] | lib.js:30:9:30:52 | args [ArrayElement] | provenance | | +| lib.js:30:9:30:12 | args | lib.js:32:14:32:17 | args | provenance | | +| lib.js:30:9:30:12 | args [ArrayElement] | lib.js:32:14:32:17 | args [ArrayElement] | provenance | | +| lib.js:30:16:30:52 | Array.p ... uments) | lib.js:30:9:30:12 | args | provenance | | +| lib.js:30:16:30:52 | Array.p ... uments) [ArrayElement] | lib.js:30:9:30:12 | args [ArrayElement] | provenance | | | lib.js:30:16:30:52 | reflective call | lib.js:30:16:30:52 | Array.p ... uments) | provenance | | | lib.js:30:16:30:52 | reflective call [ArrayElement] | lib.js:30:16:30:52 | Array.p ... uments) [ArrayElement] | provenance | | | lib.js:30:43:30:51 | arguments | lib.js:30:16:30:52 | reflective call | provenance | Config | | lib.js:30:43:30:51 | arguments | lib.js:30:16:30:52 | reflective call [ArrayElement] | provenance | Config | -| lib.js:32:7:32:20 | path | lib.js:34:7:34:10 | path | provenance | | +| lib.js:32:7:32:10 | path | lib.js:34:7:34:10 | path | provenance | | | lib.js:32:14:32:17 | args | lib.js:32:14:32:20 | args[1] | provenance | Config | | lib.js:32:14:32:17 | args [ArrayElement] | lib.js:32:14:32:20 | args[1] | provenance | | -| lib.js:32:14:32:20 | args[1] | lib.js:32:7:32:20 | path | provenance | | +| lib.js:32:14:32:20 | args[1] | lib.js:32:7:32:10 | path | provenance | | | lib.js:34:7:34:10 | path | lib.js:34:7:34:13 | path[0] | provenance | Config | | lib.js:34:7:34:13 | path[0] | lib.js:34:3:34:14 | obj[path[0]] | provenance | Config | -| lib.js:38:9:38:36 | args | lib.js:40:14:40:17 | args | provenance | | -| lib.js:38:16:38:36 | Array.f ... uments) | lib.js:38:9:38:36 | args | provenance | | +| lib.js:38:9:38:12 | args | lib.js:40:14:40:17 | args | provenance | | +| lib.js:38:16:38:36 | Array.f ... uments) | lib.js:38:9:38:12 | args | provenance | | | lib.js:38:27:38:35 | arguments | lib.js:38:16:38:36 | Array.f ... uments) | provenance | Config | -| lib.js:40:7:40:20 | path | lib.js:42:7:42:10 | path | provenance | | +| lib.js:40:7:40:10 | path | lib.js:42:7:42:10 | path | provenance | | | lib.js:40:14:40:17 | args | lib.js:40:14:40:20 | args[1] | provenance | Config | -| lib.js:40:14:40:20 | args[1] | lib.js:40:7:40:20 | path | provenance | | +| lib.js:40:14:40:20 | args[1] | lib.js:40:7:40:10 | path | provenance | | | lib.js:42:7:42:10 | path | lib.js:42:7:42:13 | path[0] | provenance | Config | | lib.js:42:7:42:13 | path[0] | lib.js:42:3:42:14 | obj[path[0]] | provenance | Config | -| lib.js:83:7:83:25 | path | lib.js:86:19:86:22 | path | provenance | | +| lib.js:83:7:83:10 | path | lib.js:86:19:86:22 | path | provenance | | | lib.js:83:14:83:22 | arguments | lib.js:83:14:83:25 | arguments[1] | provenance | Config | -| lib.js:83:14:83:25 | arguments[1] | lib.js:83:7:83:25 | path | provenance | | -| lib.js:86:7:86:26 | proto | lib.js:87:10:87:14 | proto | provenance | | -| lib.js:86:15:86:26 | obj[path[0]] | lib.js:86:7:86:26 | proto | provenance | | +| lib.js:83:14:83:25 | arguments[1] | lib.js:83:7:83:10 | path | provenance | | +| lib.js:86:7:86:11 | proto | lib.js:87:10:87:14 | proto | provenance | | +| lib.js:86:15:86:26 | obj[path[0]] | lib.js:86:7:86:11 | proto | provenance | | | lib.js:86:19:86:22 | path | lib.js:86:19:86:25 | path[0] | provenance | Config | | lib.js:86:19:86:25 | path[0] | lib.js:86:15:86:26 | obj[path[0]] | provenance | Config | | lib.js:90:43:90:46 | path | lib.js:91:24:91:27 | path | provenance | | -| lib.js:91:7:91:28 | maybeProto | lib.js:92:3:92:12 | maybeProto | provenance | | -| lib.js:91:7:91:28 | maybeProto | lib.js:95:3:95:12 | maybeProto | provenance | | -| lib.js:91:20:91:28 | obj[path] | lib.js:91:7:91:28 | maybeProto | provenance | | +| lib.js:91:7:91:16 | maybeProto | lib.js:92:3:92:12 | maybeProto | provenance | | +| lib.js:91:7:91:16 | maybeProto | lib.js:95:3:95:12 | maybeProto | provenance | | +| lib.js:91:20:91:28 | obj[path] | lib.js:91:7:91:16 | maybeProto | provenance | | | lib.js:91:24:91:27 | path | lib.js:91:20:91:28 | obj[path] | provenance | Config | -| lib.js:104:7:104:24 | one | lib.js:108:7:108:9 | one | provenance | | +| lib.js:104:7:104:9 | one | lib.js:108:7:108:9 | one | provenance | | | lib.js:104:13:104:21 | arguments | lib.js:104:13:104:24 | arguments[1] | provenance | Config | -| lib.js:104:13:104:24 | arguments[1] | lib.js:104:7:104:24 | one | provenance | | +| lib.js:104:13:104:24 | arguments[1] | lib.js:104:7:104:9 | one | provenance | | | lib.js:108:7:108:9 | one | lib.js:108:3:108:10 | obj[one] | provenance | Config | | lib.js:118:29:118:32 | path | lib.js:119:17:119:20 | path | provenance | | | lib.js:119:17:119:20 | path | lib.js:119:17:119:23 | path[0] | provenance | Config | @@ -98,11 +98,11 @@ edges | sublib/sub.js:1:37:1:40 | path | sublib/sub.js:2:7:2:10 | path | provenance | | | sublib/sub.js:2:7:2:10 | path | sublib/sub.js:2:7:2:13 | path[0] | provenance | Config | | sublib/sub.js:2:7:2:13 | path[0] | sublib/sub.js:2:3:2:14 | obj[path[0]] | provenance | Config | -| tst.js:5:9:5:38 | taint | tst.js:8:12:8:16 | taint | provenance | | -| tst.js:5:9:5:38 | taint | tst.js:9:12:9:16 | taint | provenance | | -| tst.js:5:9:5:38 | taint | tst.js:12:25:12:29 | taint | provenance | | -| tst.js:5:9:5:38 | taint | tst.js:14:27:14:31 | taint | provenance | | -| tst.js:5:17:5:38 | String( ... y.data) | tst.js:5:9:5:38 | taint | provenance | | +| tst.js:5:9:5:13 | taint | tst.js:8:12:8:16 | taint | provenance | | +| tst.js:5:9:5:13 | taint | tst.js:9:12:9:16 | taint | provenance | | +| tst.js:5:9:5:13 | taint | tst.js:12:25:12:29 | taint | provenance | | +| tst.js:5:9:5:13 | taint | tst.js:14:27:14:31 | taint | provenance | | +| tst.js:5:17:5:38 | String( ... y.data) | tst.js:5:9:5:13 | taint | provenance | | | tst.js:5:24:5:37 | req.query.data | tst.js:5:17:5:38 | String( ... y.data) | provenance | Config | | tst.js:8:12:8:16 | taint | tst.js:8:5:8:17 | object[taint] | provenance | Config | | tst.js:9:12:9:16 | taint | tst.js:9:5:9:17 | object[taint] | provenance | Config | @@ -117,10 +117,10 @@ edges | tst.js:55:29:55:32 | prop | tst.js:56:22:56:25 | prop | provenance | | | tst.js:56:18:56:26 | obj[prop] | tst.js:56:12:56:33 | obj ? o ... : null | provenance | | | tst.js:56:22:56:25 | prop | tst.js:56:18:56:26 | obj[prop] | provenance | Config | -| tst.js:77:9:77:38 | taint | tst.js:80:12:80:16 | taint | provenance | | -| tst.js:77:9:77:38 | taint | tst.js:82:17:82:21 | taint | provenance | | -| tst.js:77:9:77:38 | taint | tst.js:87:16:87:20 | taint | provenance | | -| tst.js:77:17:77:38 | String( ... y.data) | tst.js:77:9:77:38 | taint | provenance | | +| tst.js:77:9:77:13 | taint | tst.js:80:12:80:16 | taint | provenance | | +| tst.js:77:9:77:13 | taint | tst.js:82:17:82:21 | taint | provenance | | +| tst.js:77:9:77:13 | taint | tst.js:87:16:87:20 | taint | provenance | | +| tst.js:77:17:77:38 | String( ... y.data) | tst.js:77:9:77:13 | taint | provenance | | | tst.js:77:24:77:37 | req.query.data | tst.js:77:17:77:38 | String( ... y.data) | provenance | Config | | tst.js:80:12:80:16 | taint | tst.js:80:5:80:17 | object[taint] | provenance | Config | | tst.js:82:12:82:21 | "" + taint | tst.js:82:5:82:22 | object["" + taint] | provenance | Config | @@ -130,8 +130,8 @@ edges | tst.js:94:9:94:36 | req.que ... _', '') | tst.js:94:5:94:37 | obj[req ... ', '')] | provenance | Config | | tst.js:97:9:97:19 | req.query.x | tst.js:97:9:97:45 | req.que ... /g, '') | provenance | Config | | tst.js:97:9:97:45 | req.que ... /g, '') | tst.js:97:5:97:46 | obj[req ... g, '')] | provenance | Config | -| tst.js:102:9:102:38 | taint | tst.js:105:12:105:16 | taint | provenance | | -| tst.js:102:17:102:38 | String( ... y.data) | tst.js:102:9:102:38 | taint | provenance | | +| tst.js:102:9:102:13 | taint | tst.js:105:12:105:16 | taint | provenance | | +| tst.js:102:17:102:38 | String( ... y.data) | tst.js:102:9:102:13 | taint | provenance | | | tst.js:102:24:102:37 | req.query.data | tst.js:102:17:102:38 | String( ... y.data) | provenance | Config | | tst.js:105:12:105:16 | taint | tst.js:105:5:105:17 | object[taint] | provenance | Config | | tst.js:130:9:130:19 | req.query.x | tst.js:130:9:130:52 | req.que ... '), '') | provenance | Config | @@ -139,7 +139,7 @@ edges nodes | lib.js:1:38:1:40 | obj | semmle.label | obj | | lib.js:1:43:1:46 | path | semmle.label | path | -| lib.js:2:7:2:27 | currentPath | semmle.label | currentPath | +| lib.js:2:7:2:17 | currentPath | semmle.label | currentPath | | lib.js:2:21:2:24 | path | semmle.label | path | | lib.js:2:21:2:27 | path[0] | semmle.label | path[0] | | lib.js:6:7:6:9 | obj | semmle.label | obj | @@ -149,7 +149,7 @@ nodes | lib.js:15:3:15:14 | obj[path[0]] | semmle.label | obj[path[0]] | | lib.js:15:7:15:10 | path | semmle.label | path | | lib.js:15:7:15:13 | path[0] | semmle.label | path[0] | -| lib.js:20:7:20:25 | path | semmle.label | path | +| lib.js:20:7:20:10 | path | semmle.label | path | | lib.js:20:14:20:22 | arguments | semmle.label | arguments | | lib.js:20:14:20:25 | arguments[1] | semmle.label | arguments[1] | | lib.js:22:3:22:14 | obj[path[0]] | semmle.label | obj[path[0]] | @@ -159,44 +159,44 @@ nodes | lib.js:26:10:26:21 | obj[path[0]] | semmle.label | obj[path[0]] | | lib.js:26:14:26:17 | path | semmle.label | path | | lib.js:26:14:26:20 | path[0] | semmle.label | path[0] | -| lib.js:30:9:30:52 | args | semmle.label | args | -| lib.js:30:9:30:52 | args [ArrayElement] | semmle.label | args [ArrayElement] | +| lib.js:30:9:30:12 | args | semmle.label | args | +| lib.js:30:9:30:12 | args [ArrayElement] | semmle.label | args [ArrayElement] | | lib.js:30:16:30:52 | Array.p ... uments) | semmle.label | Array.p ... uments) | | lib.js:30:16:30:52 | Array.p ... uments) [ArrayElement] | semmle.label | Array.p ... uments) [ArrayElement] | | lib.js:30:16:30:52 | reflective call | semmle.label | reflective call | | lib.js:30:16:30:52 | reflective call [ArrayElement] | semmle.label | reflective call [ArrayElement] | | lib.js:30:43:30:51 | arguments | semmle.label | arguments | -| lib.js:32:7:32:20 | path | semmle.label | path | +| lib.js:32:7:32:10 | path | semmle.label | path | | lib.js:32:14:32:17 | args | semmle.label | args | | lib.js:32:14:32:17 | args [ArrayElement] | semmle.label | args [ArrayElement] | | lib.js:32:14:32:20 | args[1] | semmle.label | args[1] | | lib.js:34:3:34:14 | obj[path[0]] | semmle.label | obj[path[0]] | | lib.js:34:7:34:10 | path | semmle.label | path | | lib.js:34:7:34:13 | path[0] | semmle.label | path[0] | -| lib.js:38:9:38:36 | args | semmle.label | args | +| lib.js:38:9:38:12 | args | semmle.label | args | | lib.js:38:16:38:36 | Array.f ... uments) | semmle.label | Array.f ... uments) | | lib.js:38:27:38:35 | arguments | semmle.label | arguments | -| lib.js:40:7:40:20 | path | semmle.label | path | +| lib.js:40:7:40:10 | path | semmle.label | path | | lib.js:40:14:40:17 | args | semmle.label | args | | lib.js:40:14:40:20 | args[1] | semmle.label | args[1] | | lib.js:42:3:42:14 | obj[path[0]] | semmle.label | obj[path[0]] | | lib.js:42:7:42:10 | path | semmle.label | path | | lib.js:42:7:42:13 | path[0] | semmle.label | path[0] | -| lib.js:83:7:83:25 | path | semmle.label | path | +| lib.js:83:7:83:10 | path | semmle.label | path | | lib.js:83:14:83:22 | arguments | semmle.label | arguments | | lib.js:83:14:83:25 | arguments[1] | semmle.label | arguments[1] | -| lib.js:86:7:86:26 | proto | semmle.label | proto | +| lib.js:86:7:86:11 | proto | semmle.label | proto | | lib.js:86:15:86:26 | obj[path[0]] | semmle.label | obj[path[0]] | | lib.js:86:19:86:22 | path | semmle.label | path | | lib.js:86:19:86:25 | path[0] | semmle.label | path[0] | | lib.js:87:10:87:14 | proto | semmle.label | proto | | lib.js:90:43:90:46 | path | semmle.label | path | -| lib.js:91:7:91:28 | maybeProto | semmle.label | maybeProto | +| lib.js:91:7:91:16 | maybeProto | semmle.label | maybeProto | | lib.js:91:20:91:28 | obj[path] | semmle.label | obj[path] | | lib.js:91:24:91:27 | path | semmle.label | path | | lib.js:92:3:92:12 | maybeProto | semmle.label | maybeProto | | lib.js:95:3:95:12 | maybeProto | semmle.label | maybeProto | -| lib.js:104:7:104:24 | one | semmle.label | one | +| lib.js:104:7:104:9 | one | semmle.label | one | | lib.js:104:13:104:21 | arguments | semmle.label | arguments | | lib.js:104:13:104:24 | arguments[1] | semmle.label | arguments[1] | | lib.js:108:3:108:10 | obj[one] | semmle.label | obj[one] | @@ -221,7 +221,7 @@ nodes | sublib/sub.js:2:3:2:14 | obj[path[0]] | semmle.label | obj[path[0]] | | sublib/sub.js:2:7:2:10 | path | semmle.label | path | | sublib/sub.js:2:7:2:13 | path[0] | semmle.label | path[0] | -| tst.js:5:9:5:38 | taint | semmle.label | taint | +| tst.js:5:9:5:13 | taint | semmle.label | taint | | tst.js:5:17:5:38 | String( ... y.data) | semmle.label | String( ... y.data) | | tst.js:5:24:5:37 | req.query.data | semmle.label | req.query.data | | tst.js:8:5:8:17 | object[taint] | semmle.label | object[taint] | @@ -241,7 +241,7 @@ nodes | tst.js:56:12:56:33 | obj ? o ... : null | semmle.label | obj ? o ... : null | | tst.js:56:18:56:26 | obj[prop] | semmle.label | obj[prop] | | tst.js:56:22:56:25 | prop | semmle.label | prop | -| tst.js:77:9:77:38 | taint | semmle.label | taint | +| tst.js:77:9:77:13 | taint | semmle.label | taint | | tst.js:77:17:77:38 | String( ... y.data) | semmle.label | String( ... y.data) | | tst.js:77:24:77:37 | req.query.data | semmle.label | req.query.data | | tst.js:80:5:80:17 | object[taint] | semmle.label | object[taint] | @@ -257,7 +257,7 @@ nodes | tst.js:97:5:97:46 | obj[req ... g, '')] | semmle.label | obj[req ... g, '')] | | tst.js:97:9:97:19 | req.query.x | semmle.label | req.query.x | | tst.js:97:9:97:45 | req.que ... /g, '') | semmle.label | req.que ... /g, '') | -| tst.js:102:9:102:38 | taint | semmle.label | taint | +| tst.js:102:9:102:13 | taint | semmle.label | taint | | tst.js:102:17:102:38 | String( ... y.data) | semmle.label | String( ... y.data) | | tst.js:102:24:102:37 | req.query.data | semmle.label | req.query.data | | tst.js:105:5:105:17 | object[taint] | semmle.label | object[taint] | diff --git a/javascript/ql/test/query-tests/Security/CWE-915/PrototypePollutingFunction/PrototypePollutingFunction.expected b/javascript/ql/test/query-tests/Security/CWE-915/PrototypePollutingFunction/PrototypePollutingFunction.expected index 4546ee4b6aab..7eb7c2fdf90a 100644 --- a/javascript/ql/test/query-tests/Security/CWE-915/PrototypePollutingFunction/PrototypePollutingFunction.expected +++ b/javascript/ql/test/query-tests/Security/CWE-915/PrototypePollutingFunction/PrototypePollutingFunction.expected @@ -61,42 +61,42 @@ edges | examples/PrototypePollutingFunction_fixed.js:5:29:5:36 | src[key] | examples/PrototypePollutingFunction_fixed.js:1:21:1:23 | src | provenance | | | examples/PrototypePollutingFunction_fixed.js:7:24:7:26 | src | examples/PrototypePollutingFunction_fixed.js:7:24:7:31 | src[key] | provenance | Config | | examples/PrototypePollutingFunction_fixed.js:7:28:7:30 | key | examples/PrototypePollutingFunction_fixed.js:7:24:7:31 | src[key] | provenance | Config | -| path-assignment.js:8:13:8:25 | key | path-assignment.js:13:29:13:31 | key | provenance | | -| path-assignment.js:8:13:8:25 | key | path-assignment.js:15:20:15:22 | key | provenance | | -| path-assignment.js:8:19:8:25 | keys[i] | path-assignment.js:8:13:8:25 | key | provenance | | -| path-assignment.js:13:13:13:32 | target | path-assignment.js:13:22:13:27 | target | provenance | | -| path-assignment.js:13:13:13:32 | target | path-assignment.js:15:13:15:18 | target | provenance | | +| path-assignment.js:8:13:8:15 | key | path-assignment.js:13:29:13:31 | key | provenance | | +| path-assignment.js:8:13:8:15 | key | path-assignment.js:15:20:15:22 | key | provenance | | +| path-assignment.js:8:19:8:25 | keys[i] | path-assignment.js:8:13:8:15 | key | provenance | | +| path-assignment.js:13:13:13:18 | target | path-assignment.js:13:22:13:27 | target | provenance | | +| path-assignment.js:13:13:13:18 | target | path-assignment.js:15:13:15:18 | target | provenance | | | path-assignment.js:13:22:13:27 | target | path-assignment.js:13:22:13:32 | target[key] | provenance | Config | -| path-assignment.js:13:22:13:32 | target[key] | path-assignment.js:13:13:13:32 | target | provenance | | +| path-assignment.js:13:22:13:32 | target[key] | path-assignment.js:13:13:13:18 | target | provenance | | | path-assignment.js:13:29:13:31 | key | path-assignment.js:13:22:13:32 | target[key] | provenance | Config | -| path-assignment.js:41:13:41:25 | key | path-assignment.js:42:25:42:27 | key | provenance | | -| path-assignment.js:41:13:41:25 | key | path-assignment.js:42:39:42:41 | key | provenance | | -| path-assignment.js:41:19:41:25 | keys[i] | path-assignment.js:41:13:41:25 | key | provenance | | -| path-assignment.js:42:9:42:48 | target | path-assignment.js:42:18:42:23 | target | provenance | | -| path-assignment.js:42:9:42:48 | target | path-assignment.js:42:32:42:37 | target | provenance | | -| path-assignment.js:42:9:42:48 | target | path-assignment.js:44:5:44:10 | target | provenance | | +| path-assignment.js:41:13:41:15 | key | path-assignment.js:42:25:42:27 | key | provenance | | +| path-assignment.js:41:13:41:15 | key | path-assignment.js:42:39:42:41 | key | provenance | | +| path-assignment.js:41:19:41:25 | keys[i] | path-assignment.js:41:13:41:15 | key | provenance | | +| path-assignment.js:42:9:42:14 | target | path-assignment.js:42:18:42:23 | target | provenance | | +| path-assignment.js:42:9:42:14 | target | path-assignment.js:42:32:42:37 | target | provenance | | +| path-assignment.js:42:9:42:14 | target | path-assignment.js:44:5:44:10 | target | provenance | | | path-assignment.js:42:32:42:37 | target | path-assignment.js:42:32:42:42 | target[key] | provenance | Config | -| path-assignment.js:42:32:42:42 | target[key] | path-assignment.js:42:9:42:48 | target | provenance | | +| path-assignment.js:42:32:42:42 | target[key] | path-assignment.js:42:9:42:14 | target | provenance | | | path-assignment.js:42:32:42:42 | target[key] | path-assignment.js:42:32:42:48 | target[key] \|\| {} | provenance | | | path-assignment.js:42:39:42:41 | key | path-assignment.js:42:32:42:42 | target[key] | provenance | Config | -| path-assignment.js:58:13:58:25 | key | path-assignment.js:59:25:59:27 | key | provenance | | -| path-assignment.js:58:13:58:25 | key | path-assignment.js:59:39:59:41 | key | provenance | | -| path-assignment.js:58:19:58:25 | keys[i] | path-assignment.js:58:13:58:25 | key | provenance | | -| path-assignment.js:59:9:59:48 | target | path-assignment.js:59:18:59:23 | target | provenance | | -| path-assignment.js:59:9:59:48 | target | path-assignment.js:59:32:59:37 | target | provenance | | -| path-assignment.js:59:9:59:48 | target | path-assignment.js:61:5:61:10 | target | provenance | | +| path-assignment.js:58:13:58:15 | key | path-assignment.js:59:25:59:27 | key | provenance | | +| path-assignment.js:58:13:58:15 | key | path-assignment.js:59:39:59:41 | key | provenance | | +| path-assignment.js:58:19:58:25 | keys[i] | path-assignment.js:58:13:58:15 | key | provenance | | +| path-assignment.js:59:9:59:14 | target | path-assignment.js:59:18:59:23 | target | provenance | | +| path-assignment.js:59:9:59:14 | target | path-assignment.js:59:32:59:37 | target | provenance | | +| path-assignment.js:59:9:59:14 | target | path-assignment.js:61:5:61:10 | target | provenance | | | path-assignment.js:59:32:59:37 | target | path-assignment.js:59:32:59:42 | target[key] | provenance | Config | -| path-assignment.js:59:32:59:42 | target[key] | path-assignment.js:59:9:59:48 | target | provenance | | +| path-assignment.js:59:32:59:42 | target[key] | path-assignment.js:59:9:59:14 | target | provenance | | | path-assignment.js:59:32:59:42 | target[key] | path-assignment.js:59:32:59:48 | target[key] \|\| {} | provenance | | | path-assignment.js:59:39:59:41 | key | path-assignment.js:59:32:59:42 | target[key] | provenance | Config | -| path-assignment.js:68:13:68:25 | key | path-assignment.js:69:25:69:27 | key | provenance | | -| path-assignment.js:68:13:68:25 | key | path-assignment.js:69:39:69:41 | key | provenance | | -| path-assignment.js:68:19:68:25 | keys[i] | path-assignment.js:68:13:68:25 | key | provenance | | -| path-assignment.js:69:9:69:48 | target | path-assignment.js:69:18:69:23 | target | provenance | | -| path-assignment.js:69:9:69:48 | target | path-assignment.js:69:32:69:37 | target | provenance | | -| path-assignment.js:69:9:69:48 | target | path-assignment.js:71:5:71:10 | target | provenance | | +| path-assignment.js:68:13:68:15 | key | path-assignment.js:69:25:69:27 | key | provenance | | +| path-assignment.js:68:13:68:15 | key | path-assignment.js:69:39:69:41 | key | provenance | | +| path-assignment.js:68:19:68:25 | keys[i] | path-assignment.js:68:13:68:15 | key | provenance | | +| path-assignment.js:69:9:69:14 | target | path-assignment.js:69:18:69:23 | target | provenance | | +| path-assignment.js:69:9:69:14 | target | path-assignment.js:69:32:69:37 | target | provenance | | +| path-assignment.js:69:9:69:14 | target | path-assignment.js:71:5:71:10 | target | provenance | | | path-assignment.js:69:32:69:37 | target | path-assignment.js:69:32:69:42 | target[key] | provenance | Config | -| path-assignment.js:69:32:69:42 | target[key] | path-assignment.js:69:9:69:48 | target | provenance | | +| path-assignment.js:69:32:69:42 | target[key] | path-assignment.js:69:9:69:14 | target | provenance | | | path-assignment.js:69:32:69:42 | target[key] | path-assignment.js:69:32:69:48 | target[key] \|\| {} | provenance | | | path-assignment.js:69:39:69:41 | key | path-assignment.js:69:32:69:42 | target[key] | provenance | Config | | tests.js:3:25:3:27 | dst | tests.js:6:28:6:30 | dst | provenance | | @@ -149,9 +149,9 @@ edges | tests.js:31:27:31:31 | value | tests.js:36:20:36:24 | value | provenance | | | tests.js:31:34:31:36 | key | tests.js:32:24:32:26 | key | provenance | | | tests.js:31:34:31:36 | key | tests.js:36:13:36:15 | key | provenance | | -| tests.js:32:9:32:27 | dstValue | tests.js:34:18:34:25 | dstValue | provenance | | +| tests.js:32:9:32:16 | dstValue | tests.js:34:18:34:25 | dstValue | provenance | | | tests.js:32:20:32:22 | dst | tests.js:32:20:32:27 | dst[key] | provenance | Config | -| tests.js:32:20:32:27 | dst[key] | tests.js:32:9:32:27 | dstValue | provenance | | +| tests.js:32:20:32:27 | dst[key] | tests.js:32:9:32:16 | dstValue | provenance | | | tests.js:32:24:32:26 | key | tests.js:32:20:32:27 | dst[key] | provenance | Config | | tests.js:34:18:34:25 | dstValue | tests.js:23:19:23:21 | dst | provenance | | | tests.js:34:28:34:32 | value | tests.js:23:27:23:33 | sources [0] | provenance | | @@ -274,11 +274,11 @@ edges | tests.js:189:32:189:34 | dst | tests.js:196:13:196:15 | dst | provenance | | | tests.js:189:37:189:39 | src | tests.js:194:45:194:47 | src | provenance | | | tests.js:189:37:189:39 | src | tests.js:196:24:196:26 | src | provenance | | -| tests.js:192:13:192:25 | key | tests.js:194:39:194:41 | key | provenance | | -| tests.js:192:13:192:25 | key | tests.js:194:49:194:51 | key | provenance | | -| tests.js:192:13:192:25 | key | tests.js:196:17:196:19 | key | provenance | | -| tests.js:192:13:192:25 | key | tests.js:196:28:196:30 | key | provenance | | -| tests.js:192:19:192:25 | keys[i] | tests.js:192:13:192:25 | key | provenance | | +| tests.js:192:13:192:15 | key | tests.js:194:39:194:41 | key | provenance | | +| tests.js:192:13:192:15 | key | tests.js:194:49:194:51 | key | provenance | | +| tests.js:192:13:192:15 | key | tests.js:196:17:196:19 | key | provenance | | +| tests.js:192:13:192:15 | key | tests.js:196:28:196:30 | key | provenance | | +| tests.js:192:19:192:25 | keys[i] | tests.js:192:13:192:15 | key | provenance | | | tests.js:194:35:194:37 | dst | tests.js:194:35:194:42 | dst[key] | provenance | Config | | tests.js:194:35:194:42 | dst[key] | tests.js:189:32:189:34 | dst | provenance | | | tests.js:194:39:194:41 | key | tests.js:194:35:194:42 | dst[key] | provenance | Config | @@ -329,11 +329,11 @@ edges | tests.js:240:41:240:43 | key | tests.js:240:36:240:44 | data[key] | provenance | Config | | tests.js:263:27:263:29 | dst | tests.js:268:30:268:32 | dst | provenance | | | tests.js:263:27:263:29 | dst | tests.js:270:13:270:15 | dst | provenance | | -| tests.js:265:13:265:26 | key | tests.js:268:34:268:36 | key | provenance | | -| tests.js:265:13:265:26 | key | tests.js:270:17:270:19 | key | provenance | | -| tests.js:265:19:265:26 | entry[0] | tests.js:265:13:265:26 | key | provenance | | -| tests.js:266:13:266:28 | value | tests.js:270:24:270:28 | value | provenance | | -| tests.js:266:21:266:28 | entry[1] | tests.js:266:13:266:28 | value | provenance | | +| tests.js:265:13:265:15 | key | tests.js:268:34:268:36 | key | provenance | | +| tests.js:265:13:265:15 | key | tests.js:270:17:270:19 | key | provenance | | +| tests.js:265:19:265:26 | entry[0] | tests.js:265:13:265:15 | key | provenance | | +| tests.js:266:13:266:17 | value | tests.js:270:24:270:28 | value | provenance | | +| tests.js:266:21:266:28 | entry[1] | tests.js:266:13:266:17 | value | provenance | | | tests.js:268:30:268:32 | dst | tests.js:268:30:268:37 | dst[key] | provenance | Config | | tests.js:268:30:268:37 | dst[key] | tests.js:263:27:263:29 | dst | provenance | | | tests.js:268:34:268:36 | key | tests.js:268:30:268:37 | dst[key] | provenance | Config | @@ -360,15 +360,15 @@ edges | tests.js:302:14:302:16 | key | tests.js:304:29:304:31 | key | provenance | | | tests.js:302:14:302:16 | key | tests.js:306:38:306:40 | key | provenance | | | tests.js:302:14:302:16 | key | tests.js:308:21:308:23 | key | provenance | | -| tests.js:304:17:304:32 | value | tests.js:306:44:306:48 | value | provenance | | -| tests.js:304:17:304:32 | value | tests.js:306:44:306:48 | value | provenance | | -| tests.js:304:17:304:32 | value | tests.js:308:28:308:32 | value | provenance | | -| tests.js:304:17:304:32 | value | tests.js:308:28:308:32 | value | provenance | | -| tests.js:304:17:304:32 | value | tests.js:308:28:308:32 | value | provenance | | +| tests.js:304:17:304:21 | value | tests.js:306:44:306:48 | value | provenance | | +| tests.js:304:17:304:21 | value | tests.js:306:44:306:48 | value | provenance | | +| tests.js:304:17:304:21 | value | tests.js:308:28:308:32 | value | provenance | | +| tests.js:304:17:304:21 | value | tests.js:308:28:308:32 | value | provenance | | +| tests.js:304:17:304:21 | value | tests.js:308:28:308:32 | value | provenance | | | tests.js:304:25:304:27 | src | tests.js:304:25:304:32 | src[key] | provenance | Config | -| tests.js:304:25:304:32 | src[key] | tests.js:304:17:304:32 | value | provenance | | -| tests.js:304:25:304:32 | src[key] | tests.js:304:17:304:32 | value | provenance | | -| tests.js:304:25:304:32 | src[key] | tests.js:304:17:304:32 | value | provenance | | +| tests.js:304:25:304:32 | src[key] | tests.js:304:17:304:21 | value | provenance | | +| tests.js:304:25:304:32 | src[key] | tests.js:304:17:304:21 | value | provenance | | +| tests.js:304:25:304:32 | src[key] | tests.js:304:17:304:21 | value | provenance | | | tests.js:304:29:304:31 | key | tests.js:304:25:304:32 | src[key] | provenance | Config | | tests.js:304:29:304:31 | key | tests.js:304:25:304:32 | src[key] | provenance | Config | | tests.js:306:34:306:36 | dst | tests.js:306:34:306:41 | dst[key] | provenance | Config | @@ -381,15 +381,15 @@ edges | tests.js:315:14:315:16 | key | tests.js:318:29:318:31 | key | provenance | | | tests.js:315:14:315:16 | key | tests.js:320:42:320:44 | key | provenance | | | tests.js:315:14:315:16 | key | tests.js:322:21:322:23 | key | provenance | | -| tests.js:318:17:318:32 | value | tests.js:320:48:320:52 | value | provenance | | -| tests.js:318:17:318:32 | value | tests.js:320:48:320:52 | value | provenance | | -| tests.js:318:17:318:32 | value | tests.js:322:28:322:32 | value | provenance | | -| tests.js:318:17:318:32 | value | tests.js:322:28:322:32 | value | provenance | | -| tests.js:318:17:318:32 | value | tests.js:322:28:322:32 | value | provenance | | +| tests.js:318:17:318:21 | value | tests.js:320:48:320:52 | value | provenance | | +| tests.js:318:17:318:21 | value | tests.js:320:48:320:52 | value | provenance | | +| tests.js:318:17:318:21 | value | tests.js:322:28:322:32 | value | provenance | | +| tests.js:318:17:318:21 | value | tests.js:322:28:322:32 | value | provenance | | +| tests.js:318:17:318:21 | value | tests.js:322:28:322:32 | value | provenance | | | tests.js:318:25:318:27 | src | tests.js:318:25:318:32 | src[key] | provenance | Config | -| tests.js:318:25:318:32 | src[key] | tests.js:318:17:318:32 | value | provenance | | -| tests.js:318:25:318:32 | src[key] | tests.js:318:17:318:32 | value | provenance | | -| tests.js:318:25:318:32 | src[key] | tests.js:318:17:318:32 | value | provenance | | +| tests.js:318:25:318:32 | src[key] | tests.js:318:17:318:21 | value | provenance | | +| tests.js:318:25:318:32 | src[key] | tests.js:318:17:318:21 | value | provenance | | +| tests.js:318:25:318:32 | src[key] | tests.js:318:17:318:21 | value | provenance | | | tests.js:318:29:318:31 | key | tests.js:318:25:318:32 | src[key] | provenance | Config | | tests.js:318:29:318:31 | key | tests.js:318:25:318:32 | src[key] | provenance | Config | | tests.js:320:38:320:40 | dst | tests.js:320:38:320:45 | dst[key] | provenance | Config | @@ -526,15 +526,15 @@ edges | tests.js:413:14:413:16 | key | tests.js:414:38:414:40 | key | provenance | | | tests.js:413:14:413:16 | key | tests.js:415:39:415:41 | key | provenance | | | tests.js:413:14:413:16 | key | tests.js:419:17:419:19 | key | provenance | | -| tests.js:414:13:414:41 | value | tests.js:417:42:417:46 | value | provenance | | -| tests.js:414:13:414:41 | value | tests.js:419:24:419:28 | value | provenance | | -| tests.js:414:21:414:41 | wrapped ... c, key) | tests.js:414:13:414:41 | value | provenance | | +| tests.js:414:13:414:17 | value | tests.js:417:42:417:46 | value | provenance | | +| tests.js:414:13:414:17 | value | tests.js:419:24:419:28 | value | provenance | | +| tests.js:414:21:414:41 | wrapped ... c, key) | tests.js:414:13:414:17 | value | provenance | | | tests.js:414:33:414:35 | src | tests.js:408:22:408:24 | obj | provenance | | | tests.js:414:33:414:35 | src | tests.js:414:21:414:41 | wrapped ... c, key) | provenance | Config | | tests.js:414:38:414:40 | key | tests.js:408:27:408:29 | key | provenance | | | tests.js:414:38:414:40 | key | tests.js:414:21:414:41 | wrapped ... c, key) | provenance | Config | -| tests.js:415:13:415:42 | target | tests.js:417:34:417:39 | target | provenance | | -| tests.js:415:22:415:42 | wrapped ... t, key) | tests.js:415:13:415:42 | target | provenance | | +| tests.js:415:13:415:18 | target | tests.js:417:34:417:39 | target | provenance | | +| tests.js:415:22:415:42 | wrapped ... t, key) | tests.js:415:13:415:18 | target | provenance | | | tests.js:415:34:415:36 | dst | tests.js:408:22:408:24 | obj | provenance | | | tests.js:415:34:415:36 | dst | tests.js:415:22:415:42 | wrapped ... t, key) | provenance | Config | | tests.js:415:39:415:41 | key | tests.js:408:27:408:29 | key | provenance | | @@ -551,15 +551,15 @@ edges | tests.js:430:14:430:16 | key | tests.js:431:41:431:43 | key | provenance | | | tests.js:430:14:430:16 | key | tests.js:432:42:432:44 | key | provenance | | | tests.js:430:14:430:16 | key | tests.js:436:17:436:19 | key | provenance | | -| tests.js:431:13:431:44 | value | tests.js:434:45:434:49 | value | provenance | | -| tests.js:431:13:431:44 | value | tests.js:436:24:436:28 | value | provenance | | -| tests.js:431:21:431:44 | almostS ... c, key) | tests.js:431:13:431:44 | value | provenance | | +| tests.js:431:13:431:17 | value | tests.js:434:45:434:49 | value | provenance | | +| tests.js:431:13:431:17 | value | tests.js:436:24:436:28 | value | provenance | | +| tests.js:431:21:431:44 | almostS ... c, key) | tests.js:431:13:431:17 | value | provenance | | | tests.js:431:36:431:38 | src | tests.js:424:25:424:27 | obj | provenance | | | tests.js:431:36:431:38 | src | tests.js:431:21:431:44 | almostS ... c, key) | provenance | Config | | tests.js:431:41:431:43 | key | tests.js:424:30:424:32 | key | provenance | | | tests.js:431:41:431:43 | key | tests.js:431:21:431:44 | almostS ... c, key) | provenance | Config | -| tests.js:432:13:432:45 | target | tests.js:434:37:434:42 | target | provenance | | -| tests.js:432:22:432:45 | almostS ... t, key) | tests.js:432:13:432:45 | target | provenance | | +| tests.js:432:13:432:18 | target | tests.js:434:37:434:42 | target | provenance | | +| tests.js:432:22:432:45 | almostS ... t, key) | tests.js:432:13:432:18 | target | provenance | | | tests.js:432:37:432:39 | dst | tests.js:424:25:424:27 | obj | provenance | | | tests.js:432:37:432:39 | dst | tests.js:432:22:432:45 | almostS ... t, key) | provenance | Config | | tests.js:432:42:432:44 | key | tests.js:424:30:424:32 | key | provenance | | @@ -570,9 +570,9 @@ edges | tests.js:443:12:443:14 | obj | tests.js:443:12:443:19 | obj[key] | provenance | Config | | tests.js:446:33:446:35 | src | tests.js:448:30:448:32 | src | provenance | | | tests.js:447:14:447:16 | key | tests.js:453:17:453:19 | key | provenance | | -| tests.js:448:13:448:38 | value | tests.js:451:39:451:43 | value | provenance | | -| tests.js:448:13:448:38 | value | tests.js:453:24:453:28 | value | provenance | | -| tests.js:448:21:448:38 | safeRead(src, key) | tests.js:448:13:448:38 | value | provenance | | +| tests.js:448:13:448:17 | value | tests.js:451:39:451:43 | value | provenance | | +| tests.js:448:13:448:17 | value | tests.js:453:24:453:28 | value | provenance | | +| tests.js:448:21:448:38 | safeRead(src, key) | tests.js:448:13:448:17 | value | provenance | | | tests.js:448:30:448:32 | src | tests.js:441:19:441:21 | obj | provenance | | | tests.js:448:30:448:32 | src | tests.js:448:21:448:38 | safeRead(src, key) | provenance | Config | | tests.js:451:39:451:43 | value | tests.js:446:33:446:35 | src | provenance | | @@ -630,26 +630,26 @@ edges | tests.js:494:32:494:34 | src | tests.js:498:21:498:23 | src | provenance | | | tests.js:495:14:495:16 | key | tests.js:498:25:498:27 | key | provenance | | | tests.js:495:14:495:16 | key | tests.js:502:17:502:19 | key | provenance | | -| tests.js:498:13:498:28 | value | tests.js:500:38:500:42 | value | provenance | | -| tests.js:498:13:498:28 | value | tests.js:500:38:500:42 | value | provenance | | -| tests.js:498:13:498:28 | value | tests.js:502:24:502:28 | value | provenance | | -| tests.js:498:13:498:28 | value | tests.js:502:24:502:28 | value | provenance | | -| tests.js:498:13:498:28 | value | tests.js:502:24:502:28 | value | provenance | | +| tests.js:498:13:498:17 | value | tests.js:500:38:500:42 | value | provenance | | +| tests.js:498:13:498:17 | value | tests.js:500:38:500:42 | value | provenance | | +| tests.js:498:13:498:17 | value | tests.js:502:24:502:28 | value | provenance | | +| tests.js:498:13:498:17 | value | tests.js:502:24:502:28 | value | provenance | | +| tests.js:498:13:498:17 | value | tests.js:502:24:502:28 | value | provenance | | | tests.js:498:21:498:23 | src | tests.js:498:21:498:28 | src[key] | provenance | Config | -| tests.js:498:21:498:28 | src[key] | tests.js:498:13:498:28 | value | provenance | | -| tests.js:498:21:498:28 | src[key] | tests.js:498:13:498:28 | value | provenance | | -| tests.js:498:21:498:28 | src[key] | tests.js:498:13:498:28 | value | provenance | | +| tests.js:498:21:498:28 | src[key] | tests.js:498:13:498:17 | value | provenance | | +| tests.js:498:21:498:28 | src[key] | tests.js:498:13:498:17 | value | provenance | | +| tests.js:498:21:498:28 | src[key] | tests.js:498:13:498:17 | value | provenance | | | tests.js:498:25:498:27 | key | tests.js:498:21:498:28 | src[key] | provenance | Config | | tests.js:500:38:500:42 | value | tests.js:494:32:494:34 | src | provenance | | | tests.js:508:30:508:32 | dst | tests.js:513:33:513:35 | dst | provenance | | | tests.js:508:30:508:32 | dst | tests.js:517:35:517:37 | dst | provenance | | | tests.js:508:35:508:37 | src | tests.js:513:43:513:45 | src | provenance | | | tests.js:508:35:508:37 | src | tests.js:516:32:516:34 | src | provenance | | -| tests.js:511:13:511:25 | key | tests.js:513:37:513:39 | key | provenance | | -| tests.js:511:13:511:25 | key | tests.js:513:47:513:49 | key | provenance | | -| tests.js:511:13:511:25 | key | tests.js:516:36:516:38 | key | provenance | | -| tests.js:511:13:511:25 | key | tests.js:517:40:517:42 | key | provenance | | -| tests.js:511:19:511:25 | keys[i] | tests.js:511:13:511:25 | key | provenance | | +| tests.js:511:13:511:15 | key | tests.js:513:37:513:39 | key | provenance | | +| tests.js:511:13:511:15 | key | tests.js:513:47:513:49 | key | provenance | | +| tests.js:511:13:511:15 | key | tests.js:516:36:516:38 | key | provenance | | +| tests.js:511:13:511:15 | key | tests.js:517:40:517:42 | key | provenance | | +| tests.js:511:19:511:25 | keys[i] | tests.js:511:13:511:15 | key | provenance | | | tests.js:513:33:513:35 | dst | tests.js:513:33:513:40 | dst[key] | provenance | Config | | tests.js:513:33:513:40 | dst[key] | tests.js:508:30:508:32 | dst | provenance | | | tests.js:513:37:513:39 | key | tests.js:513:33:513:40 | dst[key] | provenance | Config | @@ -660,14 +660,14 @@ edges | tests.js:516:36:516:38 | key | tests.js:516:32:516:39 | src[key] | provenance | Config | | tests.js:522:35:522:38 | args [0] | tests.js:523:17:523:20 | args [0] | provenance | | | tests.js:522:35:522:38 | args [1] | tests.js:524:17:524:20 | args [1] | provenance | | -| tests.js:523:11:523:23 | dst | tests.js:527:35:527:37 | dst | provenance | | -| tests.js:523:11:523:23 | dst | tests.js:529:13:529:15 | dst | provenance | | +| tests.js:523:11:523:13 | dst | tests.js:527:35:527:37 | dst | provenance | | +| tests.js:523:11:523:13 | dst | tests.js:529:13:529:15 | dst | provenance | | | tests.js:523:17:523:20 | args [0] | tests.js:523:17:523:23 | args[0] | provenance | | -| tests.js:523:17:523:23 | args[0] | tests.js:523:11:523:23 | dst | provenance | | -| tests.js:524:11:524:23 | src | tests.js:527:45:527:47 | src | provenance | | -| tests.js:524:11:524:23 | src | tests.js:529:24:529:26 | src | provenance | | +| tests.js:523:17:523:23 | args[0] | tests.js:523:11:523:13 | dst | provenance | | +| tests.js:524:11:524:13 | src | tests.js:527:45:527:47 | src | provenance | | +| tests.js:524:11:524:13 | src | tests.js:529:24:529:26 | src | provenance | | | tests.js:524:17:524:20 | args [1] | tests.js:524:17:524:23 | args[1] | provenance | | -| tests.js:524:17:524:23 | args[1] | tests.js:524:11:524:23 | src | provenance | | +| tests.js:524:17:524:23 | args[1] | tests.js:524:11:524:13 | src | provenance | | | tests.js:525:14:525:16 | key | tests.js:527:39:527:41 | key | provenance | | | tests.js:525:14:525:16 | key | tests.js:527:49:527:51 | key | provenance | | | tests.js:525:14:525:16 | key | tests.js:529:17:529:19 | key | provenance | | @@ -776,17 +776,17 @@ nodes | examples/PrototypePollutingFunction_fixed.js:7:24:7:26 | src | semmle.label | src | | examples/PrototypePollutingFunction_fixed.js:7:24:7:31 | src[key] | semmle.label | src[key] | | examples/PrototypePollutingFunction_fixed.js:7:28:7:30 | key | semmle.label | key | -| path-assignment.js:8:13:8:25 | key | semmle.label | key | +| path-assignment.js:8:13:8:15 | key | semmle.label | key | | path-assignment.js:8:19:8:25 | keys[i] | semmle.label | keys[i] | -| path-assignment.js:13:13:13:32 | target | semmle.label | target | +| path-assignment.js:13:13:13:18 | target | semmle.label | target | | path-assignment.js:13:22:13:27 | target | semmle.label | target | | path-assignment.js:13:22:13:32 | target[key] | semmle.label | target[key] | | path-assignment.js:13:29:13:31 | key | semmle.label | key | | path-assignment.js:15:13:15:18 | target | semmle.label | target | | path-assignment.js:15:20:15:22 | key | semmle.label | key | -| path-assignment.js:41:13:41:25 | key | semmle.label | key | +| path-assignment.js:41:13:41:15 | key | semmle.label | key | | path-assignment.js:41:19:41:25 | keys[i] | semmle.label | keys[i] | -| path-assignment.js:42:9:42:48 | target | semmle.label | target | +| path-assignment.js:42:9:42:14 | target | semmle.label | target | | path-assignment.js:42:18:42:23 | target | semmle.label | target | | path-assignment.js:42:25:42:27 | key | semmle.label | key | | path-assignment.js:42:32:42:37 | target | semmle.label | target | @@ -795,9 +795,9 @@ nodes | path-assignment.js:42:39:42:41 | key | semmle.label | key | | path-assignment.js:44:5:44:10 | target | semmle.label | target | | path-assignment.js:44:12:44:18 | keys[i] | semmle.label | keys[i] | -| path-assignment.js:58:13:58:25 | key | semmle.label | key | +| path-assignment.js:58:13:58:15 | key | semmle.label | key | | path-assignment.js:58:19:58:25 | keys[i] | semmle.label | keys[i] | -| path-assignment.js:59:9:59:48 | target | semmle.label | target | +| path-assignment.js:59:9:59:14 | target | semmle.label | target | | path-assignment.js:59:18:59:23 | target | semmle.label | target | | path-assignment.js:59:25:59:27 | key | semmle.label | key | | path-assignment.js:59:32:59:37 | target | semmle.label | target | @@ -806,9 +806,9 @@ nodes | path-assignment.js:59:39:59:41 | key | semmle.label | key | | path-assignment.js:61:5:61:10 | target | semmle.label | target | | path-assignment.js:61:12:61:18 | keys[i] | semmle.label | keys[i] | -| path-assignment.js:68:13:68:25 | key | semmle.label | key | +| path-assignment.js:68:13:68:15 | key | semmle.label | key | | path-assignment.js:68:19:68:25 | keys[i] | semmle.label | keys[i] | -| path-assignment.js:69:9:69:48 | target | semmle.label | target | +| path-assignment.js:69:9:69:14 | target | semmle.label | target | | path-assignment.js:69:18:69:23 | target | semmle.label | target | | path-assignment.js:69:25:69:27 | key | semmle.label | key | | path-assignment.js:69:32:69:37 | target | semmle.label | target | @@ -859,7 +859,7 @@ nodes | tests.js:31:22:31:24 | dst | semmle.label | dst | | tests.js:31:27:31:31 | value | semmle.label | value | | tests.js:31:34:31:36 | key | semmle.label | key | -| tests.js:32:9:32:27 | dstValue | semmle.label | dstValue | +| tests.js:32:9:32:16 | dstValue | semmle.label | dstValue | | tests.js:32:20:32:22 | dst | semmle.label | dst | | tests.js:32:20:32:27 | dst[key] | semmle.label | dst[key] | | tests.js:32:24:32:26 | key | semmle.label | key | @@ -976,7 +976,7 @@ nodes | tests.js:184:24:184:31 | src[key] | semmle.label | src[key] | | tests.js:189:32:189:34 | dst | semmle.label | dst | | tests.js:189:37:189:39 | src | semmle.label | src | -| tests.js:192:13:192:25 | key | semmle.label | key | +| tests.js:192:13:192:15 | key | semmle.label | key | | tests.js:192:19:192:25 | keys[i] | semmle.label | keys[i] | | tests.js:194:35:194:37 | dst | semmle.label | dst | | tests.js:194:35:194:42 | dst[key] | semmle.label | dst[key] | @@ -1031,9 +1031,9 @@ nodes | tests.js:240:36:240:44 | data[key] | semmle.label | data[key] | | tests.js:240:41:240:43 | key | semmle.label | key | | tests.js:263:27:263:29 | dst | semmle.label | dst | -| tests.js:265:13:265:26 | key | semmle.label | key | +| tests.js:265:13:265:15 | key | semmle.label | key | | tests.js:265:19:265:26 | entry[0] | semmle.label | entry[0] | -| tests.js:266:13:266:28 | value | semmle.label | value | +| tests.js:266:13:266:17 | value | semmle.label | value | | tests.js:266:21:266:28 | entry[1] | semmle.label | entry[1] | | tests.js:268:30:268:32 | dst | semmle.label | dst | | tests.js:268:30:268:37 | dst[key] | semmle.label | dst[key] | @@ -1059,9 +1059,9 @@ nodes | tests.js:301:27:301:29 | dst | semmle.label | dst | | tests.js:301:32:301:34 | src | semmle.label | src | | tests.js:302:14:302:16 | key | semmle.label | key | -| tests.js:304:17:304:32 | value | semmle.label | value | -| tests.js:304:17:304:32 | value | semmle.label | value | -| tests.js:304:17:304:32 | value | semmle.label | value | +| tests.js:304:17:304:21 | value | semmle.label | value | +| tests.js:304:17:304:21 | value | semmle.label | value | +| tests.js:304:17:304:21 | value | semmle.label | value | | tests.js:304:25:304:27 | src | semmle.label | src | | tests.js:304:25:304:32 | src[key] | semmle.label | src[key] | | tests.js:304:25:304:32 | src[key] | semmle.label | src[key] | @@ -1077,9 +1077,9 @@ nodes | tests.js:314:31:314:33 | dst | semmle.label | dst | | tests.js:314:36:314:38 | src | semmle.label | src | | tests.js:315:14:315:16 | key | semmle.label | key | -| tests.js:318:17:318:32 | value | semmle.label | value | -| tests.js:318:17:318:32 | value | semmle.label | value | -| tests.js:318:17:318:32 | value | semmle.label | value | +| tests.js:318:17:318:21 | value | semmle.label | value | +| tests.js:318:17:318:21 | value | semmle.label | value | +| tests.js:318:17:318:21 | value | semmle.label | value | | tests.js:318:25:318:27 | src | semmle.label | src | | tests.js:318:25:318:32 | src[key] | semmle.label | src[key] | | tests.js:318:25:318:32 | src[key] | semmle.label | src[key] | @@ -1197,11 +1197,11 @@ nodes | tests.js:412:31:412:33 | dst | semmle.label | dst | | tests.js:412:36:412:38 | src | semmle.label | src | | tests.js:413:14:413:16 | key | semmle.label | key | -| tests.js:414:13:414:41 | value | semmle.label | value | +| tests.js:414:13:414:17 | value | semmle.label | value | | tests.js:414:21:414:41 | wrapped ... c, key) | semmle.label | wrapped ... c, key) | | tests.js:414:33:414:35 | src | semmle.label | src | | tests.js:414:38:414:40 | key | semmle.label | key | -| tests.js:415:13:415:42 | target | semmle.label | target | +| tests.js:415:13:415:18 | target | semmle.label | target | | tests.js:415:22:415:42 | wrapped ... t, key) | semmle.label | wrapped ... t, key) | | tests.js:415:34:415:36 | dst | semmle.label | dst | | tests.js:415:39:415:41 | key | semmle.label | key | @@ -1218,11 +1218,11 @@ nodes | tests.js:429:34:429:36 | dst | semmle.label | dst | | tests.js:429:39:429:41 | src | semmle.label | src | | tests.js:430:14:430:16 | key | semmle.label | key | -| tests.js:431:13:431:44 | value | semmle.label | value | +| tests.js:431:13:431:17 | value | semmle.label | value | | tests.js:431:21:431:44 | almostS ... c, key) | semmle.label | almostS ... c, key) | | tests.js:431:36:431:38 | src | semmle.label | src | | tests.js:431:41:431:43 | key | semmle.label | key | -| tests.js:432:13:432:45 | target | semmle.label | target | +| tests.js:432:13:432:18 | target | semmle.label | target | | tests.js:432:22:432:45 | almostS ... t, key) | semmle.label | almostS ... t, key) | | tests.js:432:37:432:39 | dst | semmle.label | dst | | tests.js:432:42:432:44 | key | semmle.label | key | @@ -1236,7 +1236,7 @@ nodes | tests.js:443:12:443:19 | obj[key] | semmle.label | obj[key] | | tests.js:446:33:446:35 | src | semmle.label | src | | tests.js:447:14:447:16 | key | semmle.label | key | -| tests.js:448:13:448:38 | value | semmle.label | value | +| tests.js:448:13:448:17 | value | semmle.label | value | | tests.js:448:21:448:38 | safeRead(src, key) | semmle.label | safeRead(src, key) | | tests.js:448:30:448:32 | src | semmle.label | src | | tests.js:451:39:451:43 | value | semmle.label | value | @@ -1293,9 +1293,9 @@ nodes | tests.js:489:28:489:30 | key | semmle.label | key | | tests.js:494:32:494:34 | src | semmle.label | src | | tests.js:495:14:495:16 | key | semmle.label | key | -| tests.js:498:13:498:28 | value | semmle.label | value | -| tests.js:498:13:498:28 | value | semmle.label | value | -| tests.js:498:13:498:28 | value | semmle.label | value | +| tests.js:498:13:498:17 | value | semmle.label | value | +| tests.js:498:13:498:17 | value | semmle.label | value | +| tests.js:498:13:498:17 | value | semmle.label | value | | tests.js:498:21:498:23 | src | semmle.label | src | | tests.js:498:21:498:28 | src[key] | semmle.label | src[key] | | tests.js:498:21:498:28 | src[key] | semmle.label | src[key] | @@ -1306,7 +1306,7 @@ nodes | tests.js:502:24:502:28 | value | semmle.label | value | | tests.js:508:30:508:32 | dst | semmle.label | dst | | tests.js:508:35:508:37 | src | semmle.label | src | -| tests.js:511:13:511:25 | key | semmle.label | key | +| tests.js:511:13:511:15 | key | semmle.label | key | | tests.js:511:19:511:25 | keys[i] | semmle.label | keys[i] | | tests.js:513:33:513:35 | dst | semmle.label | dst | | tests.js:513:33:513:40 | dst[key] | semmle.label | dst[key] | @@ -1321,10 +1321,10 @@ nodes | tests.js:517:40:517:42 | key | semmle.label | key | | tests.js:522:35:522:38 | args [0] | semmle.label | args [0] | | tests.js:522:35:522:38 | args [1] | semmle.label | args [1] | -| tests.js:523:11:523:23 | dst | semmle.label | dst | +| tests.js:523:11:523:13 | dst | semmle.label | dst | | tests.js:523:17:523:20 | args [0] | semmle.label | args [0] | | tests.js:523:17:523:23 | args[0] | semmle.label | args[0] | -| tests.js:524:11:524:23 | src | semmle.label | src | +| tests.js:524:11:524:13 | src | semmle.label | src | | tests.js:524:17:524:20 | args [1] | semmle.label | args [1] | | tests.js:524:17:524:23 | args[1] | semmle.label | args[1] | | tests.js:525:14:525:16 | key | semmle.label | key | diff --git a/javascript/ql/test/query-tests/Security/CWE-915/PrototypePollutingMergeCall/PrototypePollutingMergeCall.expected b/javascript/ql/test/query-tests/Security/CWE-915/PrototypePollutingMergeCall/PrototypePollutingMergeCall.expected index 8b08f2a20afd..3bdb65ac4502 100644 --- a/javascript/ql/test/query-tests/Security/CWE-915/PrototypePollutingMergeCall/PrototypePollutingMergeCall.expected +++ b/javascript/ql/test/query-tests/Security/CWE-915/PrototypePollutingMergeCall/PrototypePollutingMergeCall.expected @@ -12,8 +12,8 @@ edges | angularmerge.js:2:32:2:36 | event | angularmerge.js:2:32:2:41 | event.data | provenance | | | angularmerge.js:2:32:2:41 | event.data | angularmerge.js:2:21:2:42 | JSON.pa ... t.data) | provenance | Config | | src-vulnerable-lodash/tst.js:11:16:11:30 | req.query.value | src-vulnerable-lodash/tst.js:10:17:12:5 | {\\n ... e\\n } | provenance | | -| src-vulnerable-lodash/tst.js:14:9:16:5 | opts [thing] | src-vulnerable-lodash/tst.js:18:16:18:19 | opts [thing] | provenance | | -| src-vulnerable-lodash/tst.js:14:16:16:5 | {\\n ... e\\n } [thing] | src-vulnerable-lodash/tst.js:14:9:16:5 | opts [thing] | provenance | | +| src-vulnerable-lodash/tst.js:14:9:14:12 | opts [thing] | src-vulnerable-lodash/tst.js:18:16:18:19 | opts [thing] | provenance | | +| src-vulnerable-lodash/tst.js:14:16:16:5 | {\\n ... e\\n } [thing] | src-vulnerable-lodash/tst.js:14:9:14:12 | opts [thing] | provenance | | | src-vulnerable-lodash/tst.js:15:14:15:28 | req.query.value | src-vulnerable-lodash/tst.js:14:16:16:5 | {\\n ... e\\n } [thing] | provenance | | | src-vulnerable-lodash/tst.js:18:16:18:19 | opts [thing] | src-vulnerable-lodash/tst.js:18:16:18:25 | opts.thing | provenance | | | src-vulnerable-lodash/tst.js:18:16:18:25 | opts.thing | src-vulnerable-lodash/tst.js:17:17:19:5 | {\\n ... g\\n } | provenance | | @@ -37,7 +37,7 @@ nodes | src-vulnerable-lodash/tst.js:7:17:7:29 | req.query.foo | semmle.label | req.query.foo | | src-vulnerable-lodash/tst.js:10:17:12:5 | {\\n ... e\\n } | semmle.label | {\\n ... e\\n } | | src-vulnerable-lodash/tst.js:11:16:11:30 | req.query.value | semmle.label | req.query.value | -| src-vulnerable-lodash/tst.js:14:9:16:5 | opts [thing] | semmle.label | opts [thing] | +| src-vulnerable-lodash/tst.js:14:9:14:12 | opts [thing] | semmle.label | opts [thing] | | src-vulnerable-lodash/tst.js:14:16:16:5 | {\\n ... e\\n } [thing] | semmle.label | {\\n ... e\\n } [thing] | | src-vulnerable-lodash/tst.js:15:14:15:28 | req.query.value | semmle.label | req.query.value | | src-vulnerable-lodash/tst.js:17:17:19:5 | {\\n ... g\\n } | semmle.label | {\\n ... g\\n } | diff --git a/javascript/ql/test/query-tests/Security/CWE-918/ClientSideRequestForgery.expected b/javascript/ql/test/query-tests/Security/CWE-918/ClientSideRequestForgery.expected index 4a8f524f8624..1d6b8781db75 100644 --- a/javascript/ql/test/query-tests/Security/CWE-918/ClientSideRequestForgery.expected +++ b/javascript/ql/test/query-tests/Security/CWE-918/ClientSideRequestForgery.expected @@ -4,32 +4,32 @@ | clientSide.js:17:5:17:58 | request ... '/id') | clientSide.js:16:22:16:41 | window.location.hash | clientSide.js:17:13:17:57 | 'https: ... + '/id' | The $@ of this request depends on a $@. | clientSide.js:17:13:17:57 | 'https: ... + '/id' | URL | clientSide.js:16:22:16:41 | window.location.hash | user-provided value | | clientSide.js:21:5:21:54 | request ... '/id') | clientSide.js:20:18:20:28 | window.name | clientSide.js:21:13:21:53 | 'https: ... + '/id' | The $@ of this request depends on a $@. | clientSide.js:21:13:21:53 | 'https: ... + '/id' | URL | clientSide.js:20:18:20:28 | window.name | user-provided value | edges -| clientSide.js:11:11:11:53 | query | clientSide.js:12:42:12:46 | query | provenance | | +| clientSide.js:11:11:11:15 | query | clientSide.js:12:42:12:46 | query | provenance | | | clientSide.js:11:19:11:40 | window. ... .search | clientSide.js:11:19:11:53 | window. ... ring(1) | provenance | | -| clientSide.js:11:19:11:53 | window. ... ring(1) | clientSide.js:11:11:11:53 | query | provenance | | +| clientSide.js:11:19:11:53 | window. ... ring(1) | clientSide.js:11:11:11:15 | query | provenance | | | clientSide.js:12:42:12:46 | query | clientSide.js:12:13:12:54 | 'https: ... + '/id' | provenance | | | clientSide.js:14:42:14:63 | window. ... .search | clientSide.js:14:13:14:63 | 'https: ... .search | provenance | | -| clientSide.js:16:11:16:54 | fragment | clientSide.js:17:42:17:49 | fragment | provenance | | +| clientSide.js:16:11:16:18 | fragment | clientSide.js:17:42:17:49 | fragment | provenance | | | clientSide.js:16:22:16:41 | window.location.hash | clientSide.js:16:22:16:54 | window. ... ring(1) | provenance | | -| clientSide.js:16:22:16:54 | window. ... ring(1) | clientSide.js:16:11:16:54 | fragment | provenance | | +| clientSide.js:16:22:16:54 | window. ... ring(1) | clientSide.js:16:11:16:18 | fragment | provenance | | | clientSide.js:17:42:17:49 | fragment | clientSide.js:17:13:17:57 | 'https: ... + '/id' | provenance | | -| clientSide.js:20:11:20:28 | name | clientSide.js:21:42:21:45 | name | provenance | | -| clientSide.js:20:18:20:28 | window.name | clientSide.js:20:11:20:28 | name | provenance | | +| clientSide.js:20:11:20:14 | name | clientSide.js:21:42:21:45 | name | provenance | | +| clientSide.js:20:18:20:28 | window.name | clientSide.js:20:11:20:14 | name | provenance | | | clientSide.js:21:42:21:45 | name | clientSide.js:21:13:21:53 | 'https: ... + '/id' | provenance | | nodes -| clientSide.js:11:11:11:53 | query | semmle.label | query | +| clientSide.js:11:11:11:15 | query | semmle.label | query | | clientSide.js:11:19:11:40 | window. ... .search | semmle.label | window. ... .search | | clientSide.js:11:19:11:53 | window. ... ring(1) | semmle.label | window. ... ring(1) | | clientSide.js:12:13:12:54 | 'https: ... + '/id' | semmle.label | 'https: ... + '/id' | | clientSide.js:12:42:12:46 | query | semmle.label | query | | clientSide.js:14:13:14:63 | 'https: ... .search | semmle.label | 'https: ... .search | | clientSide.js:14:42:14:63 | window. ... .search | semmle.label | window. ... .search | -| clientSide.js:16:11:16:54 | fragment | semmle.label | fragment | +| clientSide.js:16:11:16:18 | fragment | semmle.label | fragment | | clientSide.js:16:22:16:41 | window.location.hash | semmle.label | window.location.hash | | clientSide.js:16:22:16:54 | window. ... ring(1) | semmle.label | window. ... ring(1) | | clientSide.js:17:13:17:57 | 'https: ... + '/id' | semmle.label | 'https: ... + '/id' | | clientSide.js:17:42:17:49 | fragment | semmle.label | fragment | -| clientSide.js:20:11:20:28 | name | semmle.label | name | +| clientSide.js:20:11:20:14 | name | semmle.label | name | | clientSide.js:20:18:20:28 | window.name | semmle.label | window.name | | clientSide.js:21:13:21:53 | 'https: ... + '/id' | semmle.label | 'https: ... + '/id' | | clientSide.js:21:42:21:45 | name | semmle.label | name | diff --git a/javascript/ql/test/query-tests/Security/CWE-918/RequestForgery.expected b/javascript/ql/test/query-tests/Security/CWE-918/RequestForgery.expected index f7ff324b4018..a91a6348dfa6 100644 --- a/javascript/ql/test/query-tests/Security/CWE-918/RequestForgery.expected +++ b/javascript/ql/test/query-tests/Security/CWE-918/RequestForgery.expected @@ -40,58 +40,58 @@ | serverSide.js:145:3:145:23 | axios.g ... dedUrl) | serverSide.js:139:17:139:29 | req.query.url | serverSide.js:145:13:145:22 | encodedUrl | The $@ of this request depends on a $@. | serverSide.js:145:13:145:22 | encodedUrl | URL | serverSide.js:139:17:139:29 | req.query.url | user-provided value | | serverSide.js:147:3:147:23 | axios.g ... pedUrl) | serverSide.js:139:17:139:29 | req.query.url | serverSide.js:147:13:147:22 | escapedUrl | The $@ of this request depends on a $@. | serverSide.js:147:13:147:22 | escapedUrl | URL | serverSide.js:139:17:139:29 | req.query.url | user-provided value | edges -| Request/app/api/proxy/route2.serverSide.ts:4:9:4:15 | { url } | Request/app/api/proxy/route2.serverSide.ts:4:9:4:34 | url | provenance | | -| Request/app/api/proxy/route2.serverSide.ts:4:9:4:34 | url | Request/app/api/proxy/route2.serverSide.ts:5:27:5:29 | url | provenance | | +| Request/app/api/proxy/route2.serverSide.ts:4:9:4:15 | { url } | Request/app/api/proxy/route2.serverSide.ts:4:11:4:13 | url | provenance | | +| Request/app/api/proxy/route2.serverSide.ts:4:11:4:13 | url | Request/app/api/proxy/route2.serverSide.ts:5:27:5:29 | url | provenance | | | Request/app/api/proxy/route2.serverSide.ts:4:19:4:34 | await req.json() | Request/app/api/proxy/route2.serverSide.ts:4:9:4:15 | { url } | provenance | | | Request/app/api/proxy/route2.serverSide.ts:4:25:4:34 | req.json() | Request/app/api/proxy/route2.serverSide.ts:4:19:4:34 | await req.json() | provenance | | -| Request/app/api/proxy/route.serverSide.ts:2:9:2:15 | { url } | Request/app/api/proxy/route.serverSide.ts:2:9:2:34 | url | provenance | | -| Request/app/api/proxy/route.serverSide.ts:2:9:2:34 | url | Request/app/api/proxy/route.serverSide.ts:3:27:3:29 | url | provenance | | +| Request/app/api/proxy/route.serverSide.ts:2:9:2:15 | { url } | Request/app/api/proxy/route.serverSide.ts:2:11:2:13 | url | provenance | | +| Request/app/api/proxy/route.serverSide.ts:2:11:2:13 | url | Request/app/api/proxy/route.serverSide.ts:3:27:3:29 | url | provenance | | | Request/app/api/proxy/route.serverSide.ts:2:19:2:34 | await req.json() | Request/app/api/proxy/route.serverSide.ts:2:9:2:15 | { url } | provenance | | | Request/app/api/proxy/route.serverSide.ts:2:25:2:34 | req.json() | Request/app/api/proxy/route.serverSide.ts:2:19:2:34 | await req.json() | provenance | | -| Request/middleware.ts:4:11:4:30 | target | Request/middleware.ts:7:31:7:36 | target | provenance | | -| Request/middleware.ts:4:20:4:30 | req.nextUrl | Request/middleware.ts:4:11:4:30 | target | provenance | | -| Request/middleware.ts:5:11:5:53 | target2 | Request/middleware.ts:12:33:12:39 | target2 | provenance | | -| Request/middleware.ts:5:21:5:53 | target. ... arget') | Request/middleware.ts:5:11:5:53 | target2 | provenance | | -| apollo.serverSide.ts:7:36:7:44 | files | apollo.serverSide.ts:8:13:8:17 | files | provenance | | -| apollo.serverSide.ts:7:36:7:44 | { files } | apollo.serverSide.ts:7:36:7:44 | files | provenance | | +| Request/middleware.ts:4:11:4:16 | target | Request/middleware.ts:7:31:7:36 | target | provenance | | +| Request/middleware.ts:4:20:4:30 | req.nextUrl | Request/middleware.ts:4:11:4:16 | target | provenance | | +| Request/middleware.ts:5:11:5:17 | target2 | Request/middleware.ts:12:33:12:39 | target2 | provenance | | +| Request/middleware.ts:5:21:5:53 | target. ... arget') | Request/middleware.ts:5:11:5:17 | target2 | provenance | | +| apollo.serverSide.ts:7:36:7:44 | { files } | apollo.serverSide.ts:7:38:7:42 | files | provenance | | +| apollo.serverSide.ts:7:38:7:42 | files | apollo.serverSide.ts:8:13:8:17 | files | provenance | | | apollo.serverSide.ts:8:13:8:17 | files | apollo.serverSide.ts:8:28:8:31 | file | provenance | | | apollo.serverSide.ts:8:28:8:31 | file | apollo.serverSide.ts:8:43:8:46 | file | provenance | | | apollo.serverSide.ts:8:43:8:46 | file | apollo.serverSide.ts:8:43:8:50 | file.url | provenance | | -| apollo.serverSide.ts:17:34:17:42 | files | apollo.serverSide.ts:18:11:18:15 | files | provenance | | -| apollo.serverSide.ts:17:34:17:42 | { files } | apollo.serverSide.ts:17:34:17:42 | files | provenance | | +| apollo.serverSide.ts:17:34:17:42 | { files } | apollo.serverSide.ts:17:36:17:40 | files | provenance | | +| apollo.serverSide.ts:17:36:17:40 | files | apollo.serverSide.ts:18:11:18:15 | files | provenance | | | apollo.serverSide.ts:18:11:18:15 | files | apollo.serverSide.ts:18:26:18:29 | file | provenance | | | apollo.serverSide.ts:18:26:18:29 | file | apollo.serverSide.ts:18:41:18:44 | file | provenance | | | apollo.serverSide.ts:18:41:18:44 | file | apollo.serverSide.ts:18:41:18:48 | file.url | provenance | | -| axiosInterceptors.serverSide.js:19:11:19:17 | { url } | axiosInterceptors.serverSide.js:19:11:19:28 | url | provenance | | -| axiosInterceptors.serverSide.js:19:11:19:28 | url | axiosInterceptors.serverSide.js:20:23:20:25 | url | provenance | | +| axiosInterceptors.serverSide.js:19:11:19:17 | { url } | axiosInterceptors.serverSide.js:19:13:19:15 | url | provenance | | +| axiosInterceptors.serverSide.js:19:13:19:15 | url | axiosInterceptors.serverSide.js:20:23:20:25 | url | provenance | | | axiosInterceptors.serverSide.js:19:21:19:28 | req.body | axiosInterceptors.serverSide.js:19:11:19:17 | { url } | provenance | | -| axiosInterceptors.serverSide.js:20:5:20:25 | userProvidedUrl | axiosInterceptors.serverSide.js:11:26:11:40 | userProvidedUrl | provenance | | -| axiosInterceptors.serverSide.js:20:23:20:25 | url | axiosInterceptors.serverSide.js:20:5:20:25 | userProvidedUrl | provenance | | +| axiosInterceptors.serverSide.js:20:5:20:19 | userProvidedUrl | axiosInterceptors.serverSide.js:11:26:11:40 | userProvidedUrl | provenance | | +| axiosInterceptors.serverSide.js:20:23:20:25 | url | axiosInterceptors.serverSide.js:20:5:20:19 | userProvidedUrl | provenance | | | serverSide2.js:9:34:9:63 | qs.pars ... .query) | serverSide2.js:19:24:19:51 | req.par ... rsedUrl | provenance | | | serverSide2.js:9:43:9:56 | req._parsedUrl | serverSide2.js:9:34:9:63 | qs.pars ... .query) | provenance | | | serverSide2.js:10:25:10:31 | req.url | serverSide2.js:16:23:16:41 | req.parsedQuery.url | provenance | | | serverSide2.js:11:24:11:30 | req.url | serverSide2.js:25:24:25:41 | req.SomeObject.url | provenance | | -| serverSide2.js:16:11:16:41 | targetUrl | serverSide2.js:17:38:17:46 | targetUrl | provenance | | -| serverSide2.js:16:23:16:41 | req.parsedQuery.url | serverSide2.js:16:11:16:41 | targetUrl | provenance | | -| serverSide2.js:19:11:19:55 | targetUrl1 | serverSide2.js:20:39:20:48 | targetUrl1 | provenance | | -| serverSide2.js:19:24:19:51 | req.par ... rsedUrl | serverSide2.js:19:11:19:55 | targetUrl1 | provenance | | -| serverSide2.js:22:11:22:36 | targetUrl2 | serverSide2.js:23:39:23:48 | targetUrl2 | provenance | | -| serverSide2.js:22:24:22:30 | req.url | serverSide2.js:22:11:22:36 | targetUrl2 | provenance | | -| serverSide2.js:25:11:25:47 | targetUrl3 | serverSide2.js:26:39:26:48 | targetUrl3 | provenance | | -| serverSide2.js:25:24:25:41 | req.SomeObject.url | serverSide2.js:25:11:25:47 | targetUrl3 | provenance | | -| serverSide.js:14:9:14:52 | tainted | serverSide.js:18:13:18:19 | tainted | provenance | | -| serverSide.js:14:9:14:52 | tainted | serverSide.js:20:17:20:23 | tainted | provenance | | -| serverSide.js:14:9:14:52 | tainted | serverSide.js:23:19:23:25 | tainted | provenance | | -| serverSide.js:14:9:14:52 | tainted | serverSide.js:26:25:26:31 | tainted | provenance | | -| serverSide.js:14:9:14:52 | tainted | serverSide.js:28:36:28:42 | tainted | provenance | | -| serverSide.js:14:9:14:52 | tainted | serverSide.js:30:37:30:43 | tainted | provenance | | -| serverSide.js:14:9:14:52 | tainted | serverSide.js:34:34:34:40 | tainted | provenance | | -| serverSide.js:14:9:14:52 | tainted | serverSide.js:36:24:36:30 | tainted | provenance | | -| serverSide.js:14:9:14:52 | tainted | serverSide.js:37:30:37:36 | tainted | provenance | | -| serverSide.js:14:9:14:52 | tainted | serverSide.js:41:43:41:49 | tainted | provenance | | -| serverSide.js:14:9:14:52 | tainted | serverSide.js:43:46:43:52 | tainted | provenance | | -| serverSide.js:14:9:14:52 | tainted | serverSide.js:45:50:45:56 | tainted | provenance | | -| serverSide.js:14:19:14:42 | url.par ... , true) | serverSide.js:14:9:14:52 | tainted | provenance | | +| serverSide2.js:16:11:16:19 | targetUrl | serverSide2.js:17:38:17:46 | targetUrl | provenance | | +| serverSide2.js:16:23:16:41 | req.parsedQuery.url | serverSide2.js:16:11:16:19 | targetUrl | provenance | | +| serverSide2.js:19:11:19:20 | targetUrl1 | serverSide2.js:20:39:20:48 | targetUrl1 | provenance | | +| serverSide2.js:19:24:19:51 | req.par ... rsedUrl | serverSide2.js:19:11:19:20 | targetUrl1 | provenance | | +| serverSide2.js:22:11:22:20 | targetUrl2 | serverSide2.js:23:39:23:48 | targetUrl2 | provenance | | +| serverSide2.js:22:24:22:30 | req.url | serverSide2.js:22:11:22:20 | targetUrl2 | provenance | | +| serverSide2.js:25:11:25:20 | targetUrl3 | serverSide2.js:26:39:26:48 | targetUrl3 | provenance | | +| serverSide2.js:25:24:25:41 | req.SomeObject.url | serverSide2.js:25:11:25:20 | targetUrl3 | provenance | | +| serverSide.js:14:9:14:15 | tainted | serverSide.js:18:13:18:19 | tainted | provenance | | +| serverSide.js:14:9:14:15 | tainted | serverSide.js:20:17:20:23 | tainted | provenance | | +| serverSide.js:14:9:14:15 | tainted | serverSide.js:23:19:23:25 | tainted | provenance | | +| serverSide.js:14:9:14:15 | tainted | serverSide.js:26:25:26:31 | tainted | provenance | | +| serverSide.js:14:9:14:15 | tainted | serverSide.js:28:36:28:42 | tainted | provenance | | +| serverSide.js:14:9:14:15 | tainted | serverSide.js:30:37:30:43 | tainted | provenance | | +| serverSide.js:14:9:14:15 | tainted | serverSide.js:34:34:34:40 | tainted | provenance | | +| serverSide.js:14:9:14:15 | tainted | serverSide.js:36:24:36:30 | tainted | provenance | | +| serverSide.js:14:9:14:15 | tainted | serverSide.js:37:30:37:36 | tainted | provenance | | +| serverSide.js:14:9:14:15 | tainted | serverSide.js:41:43:41:49 | tainted | provenance | | +| serverSide.js:14:9:14:15 | tainted | serverSide.js:43:46:43:52 | tainted | provenance | | +| serverSide.js:14:9:14:15 | tainted | serverSide.js:45:50:45:56 | tainted | provenance | | +| serverSide.js:14:19:14:42 | url.par ... , true) | serverSide.js:14:9:14:15 | tainted | provenance | | | serverSide.js:14:29:14:35 | req.url | serverSide.js:14:19:14:42 | url.par ... , true) | provenance | | | serverSide.js:26:25:26:31 | tainted | serverSide.js:26:13:26:31 | "http://" + tainted | provenance | | | serverSide.js:28:36:28:42 | tainted | serverSide.js:28:13:28:42 | "http:/ ... tainted | provenance | | @@ -101,101 +101,101 @@ edges | serverSide.js:41:43:41:49 | tainted | serverSide.js:41:13:41:51 | `http:/ ... inted}` | provenance | | | serverSide.js:43:46:43:52 | tainted | serverSide.js:43:13:43:54 | `http:/ ... inted}` | provenance | | | serverSide.js:45:50:45:56 | tainted | serverSide.js:45:13:45:56 | 'http:/ ... tainted | provenance | | -| serverSide.js:58:9:58:52 | tainted | serverSide.js:61:29:61:35 | tainted | provenance | | -| serverSide.js:58:9:58:52 | tainted | serverSide.js:61:29:61:35 | tainted | provenance | | -| serverSide.js:58:19:58:42 | url.par ... , true) | serverSide.js:58:9:58:52 | tainted | provenance | | +| serverSide.js:58:9:58:15 | tainted | serverSide.js:61:29:61:35 | tainted | provenance | | +| serverSide.js:58:9:58:15 | tainted | serverSide.js:61:29:61:35 | tainted | provenance | | +| serverSide.js:58:19:58:42 | url.par ... , true) | serverSide.js:58:9:58:15 | tainted | provenance | | | serverSide.js:58:29:58:35 | req.url | serverSide.js:58:19:58:42 | url.par ... , true) | provenance | | | serverSide.js:61:29:61:35 | tainted | serverSide.js:64:30:64:36 | tainted | provenance | | | serverSide.js:61:29:61:35 | tainted | serverSide.js:68:30:68:36 | tainted | provenance | | -| serverSide.js:74:9:74:52 | tainted | serverSide.js:76:19:76:25 | tainted | provenance | | -| serverSide.js:74:19:74:42 | url.par ... , true) | serverSide.js:74:9:74:52 | tainted | provenance | | +| serverSide.js:74:9:74:15 | tainted | serverSide.js:76:19:76:25 | tainted | provenance | | +| serverSide.js:74:19:74:42 | url.par ... , true) | serverSide.js:74:9:74:15 | tainted | provenance | | | serverSide.js:74:29:74:35 | req.url | serverSide.js:74:19:74:42 | url.par ... , true) | provenance | | | serverSide.js:83:38:83:43 | param1 | serverSide.js:84:19:84:24 | param1 | provenance | | | serverSide.js:90:19:90:28 | ctx.params | serverSide.js:90:19:90:32 | ctx.params.foo | provenance | | | serverSide.js:92:19:92:28 | ctx.params | serverSide.js:92:19:92:32 | ctx.params.foo | provenance | | -| serverSide.js:98:9:98:52 | tainted | serverSide.js:100:19:100:25 | tainted | provenance | | -| serverSide.js:98:19:98:42 | url.par ... , true) | serverSide.js:98:9:98:52 | tainted | provenance | | +| serverSide.js:98:9:98:15 | tainted | serverSide.js:100:19:100:25 | tainted | provenance | | +| serverSide.js:98:19:98:42 | url.par ... , true) | serverSide.js:98:9:98:15 | tainted | provenance | | | serverSide.js:98:29:98:35 | req.url | serverSide.js:98:19:98:42 | url.par ... , true) | provenance | | -| serverSide.js:108:11:108:27 | url | serverSide.js:109:27:109:29 | url | provenance | | -| serverSide.js:108:17:108:27 | request.url | serverSide.js:108:11:108:27 | url | provenance | | -| serverSide.js:115:11:115:42 | url | serverSide.js:117:27:117:29 | url | provenance | | -| serverSide.js:115:17:115:42 | new URL ... , base) | serverSide.js:115:11:115:42 | url | provenance | | +| serverSide.js:108:11:108:13 | url | serverSide.js:109:27:109:29 | url | provenance | | +| serverSide.js:108:17:108:27 | request.url | serverSide.js:108:11:108:13 | url | provenance | | +| serverSide.js:115:11:115:13 | url | serverSide.js:117:27:117:29 | url | provenance | | +| serverSide.js:115:17:115:42 | new URL ... , base) | serverSide.js:115:11:115:13 | url | provenance | | | serverSide.js:115:25:115:35 | request.url | serverSide.js:115:17:115:42 | new URL ... , base) | provenance | Config | -| serverSide.js:123:9:123:52 | tainted | serverSide.js:127:14:127:20 | tainted | provenance | | -| serverSide.js:123:9:123:52 | tainted | serverSide.js:130:37:130:43 | tainted | provenance | | -| serverSide.js:123:19:123:42 | url.par ... , true) | serverSide.js:123:9:123:52 | tainted | provenance | | +| serverSide.js:123:9:123:15 | tainted | serverSide.js:127:14:127:20 | tainted | provenance | | +| serverSide.js:123:9:123:15 | tainted | serverSide.js:130:37:130:43 | tainted | provenance | | +| serverSide.js:123:19:123:42 | url.par ... , true) | serverSide.js:123:9:123:15 | tainted | provenance | | | serverSide.js:123:29:123:35 | req.url | serverSide.js:123:19:123:42 | url.par ... , true) | provenance | | -| serverSide.js:130:9:130:45 | myUrl | serverSide.js:131:15:131:19 | myUrl | provenance | | -| serverSide.js:130:37:130:43 | tainted | serverSide.js:130:9:130:45 | myUrl | provenance | | -| serverSide.js:139:9:139:29 | input | serverSide.js:140:26:140:30 | input | provenance | | -| serverSide.js:139:9:139:29 | input | serverSide.js:144:32:144:36 | input | provenance | | -| serverSide.js:139:9:139:29 | input | serverSide.js:146:29:146:33 | input | provenance | | -| serverSide.js:139:17:139:29 | req.query.url | serverSide.js:139:9:139:29 | input | provenance | | -| serverSide.js:140:9:140:31 | target | serverSide.js:141:13:141:18 | target | provenance | | -| serverSide.js:140:9:140:31 | target | serverSide.js:142:13:142:18 | target | provenance | | -| serverSide.js:140:9:140:31 | target | serverSide.js:143:13:143:18 | target | provenance | | -| serverSide.js:140:18:140:31 | new URL(input) | serverSide.js:140:9:140:31 | target | provenance | | +| serverSide.js:130:9:130:13 | myUrl | serverSide.js:131:15:131:19 | myUrl | provenance | | +| serverSide.js:130:37:130:43 | tainted | serverSide.js:130:9:130:13 | myUrl | provenance | | +| serverSide.js:139:9:139:13 | input | serverSide.js:140:26:140:30 | input | provenance | | +| serverSide.js:139:9:139:13 | input | serverSide.js:144:32:144:36 | input | provenance | | +| serverSide.js:139:9:139:13 | input | serverSide.js:146:29:146:33 | input | provenance | | +| serverSide.js:139:17:139:29 | req.query.url | serverSide.js:139:9:139:13 | input | provenance | | +| serverSide.js:140:9:140:14 | target | serverSide.js:141:13:141:18 | target | provenance | | +| serverSide.js:140:9:140:14 | target | serverSide.js:142:13:142:18 | target | provenance | | +| serverSide.js:140:9:140:14 | target | serverSide.js:143:13:143:18 | target | provenance | | +| serverSide.js:140:18:140:31 | new URL(input) | serverSide.js:140:9:140:14 | target | provenance | | | serverSide.js:140:26:140:30 | input | serverSide.js:140:18:140:31 | new URL(input) | provenance | Config | | serverSide.js:141:13:141:18 | target | serverSide.js:141:13:141:29 | target.toString() | provenance | | | serverSide.js:143:13:143:18 | target | serverSide.js:143:13:143:23 | target.href | provenance | | -| serverSide.js:144:9:144:37 | encodedUrl | serverSide.js:145:13:145:22 | encodedUrl | provenance | | -| serverSide.js:144:22:144:37 | encodeURI(input) | serverSide.js:144:9:144:37 | encodedUrl | provenance | | +| serverSide.js:144:9:144:18 | encodedUrl | serverSide.js:145:13:145:22 | encodedUrl | provenance | | +| serverSide.js:144:22:144:37 | encodeURI(input) | serverSide.js:144:9:144:18 | encodedUrl | provenance | | | serverSide.js:144:32:144:36 | input | serverSide.js:144:22:144:37 | encodeURI(input) | provenance | | -| serverSide.js:146:9:146:34 | escapedUrl | serverSide.js:147:13:147:22 | escapedUrl | provenance | | -| serverSide.js:146:22:146:34 | escape(input) | serverSide.js:146:9:146:34 | escapedUrl | provenance | | +| serverSide.js:146:9:146:18 | escapedUrl | serverSide.js:147:13:147:22 | escapedUrl | provenance | | +| serverSide.js:146:22:146:34 | escape(input) | serverSide.js:146:9:146:18 | escapedUrl | provenance | | | serverSide.js:146:29:146:33 | input | serverSide.js:146:22:146:34 | escape(input) | provenance | | nodes | Request/app/api/proxy/route2.serverSide.ts:4:9:4:15 | { url } | semmle.label | { url } | -| Request/app/api/proxy/route2.serverSide.ts:4:9:4:34 | url | semmle.label | url | +| Request/app/api/proxy/route2.serverSide.ts:4:11:4:13 | url | semmle.label | url | | Request/app/api/proxy/route2.serverSide.ts:4:19:4:34 | await req.json() | semmle.label | await req.json() | | Request/app/api/proxy/route2.serverSide.ts:4:25:4:34 | req.json() | semmle.label | req.json() | | Request/app/api/proxy/route2.serverSide.ts:5:27:5:29 | url | semmle.label | url | | Request/app/api/proxy/route.serverSide.ts:2:9:2:15 | { url } | semmle.label | { url } | -| Request/app/api/proxy/route.serverSide.ts:2:9:2:34 | url | semmle.label | url | +| Request/app/api/proxy/route.serverSide.ts:2:11:2:13 | url | semmle.label | url | | Request/app/api/proxy/route.serverSide.ts:2:19:2:34 | await req.json() | semmle.label | await req.json() | | Request/app/api/proxy/route.serverSide.ts:2:25:2:34 | req.json() | semmle.label | req.json() | | Request/app/api/proxy/route.serverSide.ts:3:27:3:29 | url | semmle.label | url | -| Request/middleware.ts:4:11:4:30 | target | semmle.label | target | +| Request/middleware.ts:4:11:4:16 | target | semmle.label | target | | Request/middleware.ts:4:20:4:30 | req.nextUrl | semmle.label | req.nextUrl | -| Request/middleware.ts:5:11:5:53 | target2 | semmle.label | target2 | +| Request/middleware.ts:5:11:5:17 | target2 | semmle.label | target2 | | Request/middleware.ts:5:21:5:53 | target. ... arget') | semmle.label | target. ... arget') | | Request/middleware.ts:7:31:7:36 | target | semmle.label | target | | Request/middleware.ts:12:33:12:39 | target2 | semmle.label | target2 | -| apollo.serverSide.ts:7:36:7:44 | files | semmle.label | files | | apollo.serverSide.ts:7:36:7:44 | { files } | semmle.label | { files } | +| apollo.serverSide.ts:7:38:7:42 | files | semmle.label | files | | apollo.serverSide.ts:8:13:8:17 | files | semmle.label | files | | apollo.serverSide.ts:8:28:8:31 | file | semmle.label | file | | apollo.serverSide.ts:8:43:8:46 | file | semmle.label | file | | apollo.serverSide.ts:8:43:8:50 | file.url | semmle.label | file.url | -| apollo.serverSide.ts:17:34:17:42 | files | semmle.label | files | | apollo.serverSide.ts:17:34:17:42 | { files } | semmle.label | { files } | +| apollo.serverSide.ts:17:36:17:40 | files | semmle.label | files | | apollo.serverSide.ts:18:11:18:15 | files | semmle.label | files | | apollo.serverSide.ts:18:26:18:29 | file | semmle.label | file | | apollo.serverSide.ts:18:41:18:44 | file | semmle.label | file | | apollo.serverSide.ts:18:41:18:48 | file.url | semmle.label | file.url | | axiosInterceptors.serverSide.js:11:26:11:40 | userProvidedUrl | semmle.label | userProvidedUrl | | axiosInterceptors.serverSide.js:19:11:19:17 | { url } | semmle.label | { url } | -| axiosInterceptors.serverSide.js:19:11:19:28 | url | semmle.label | url | +| axiosInterceptors.serverSide.js:19:13:19:15 | url | semmle.label | url | | axiosInterceptors.serverSide.js:19:21:19:28 | req.body | semmle.label | req.body | -| axiosInterceptors.serverSide.js:20:5:20:25 | userProvidedUrl | semmle.label | userProvidedUrl | +| axiosInterceptors.serverSide.js:20:5:20:19 | userProvidedUrl | semmle.label | userProvidedUrl | | axiosInterceptors.serverSide.js:20:23:20:25 | url | semmle.label | url | | serverSide2.js:9:34:9:63 | qs.pars ... .query) | semmle.label | qs.pars ... .query) | | serverSide2.js:9:43:9:56 | req._parsedUrl | semmle.label | req._parsedUrl | | serverSide2.js:10:25:10:31 | req.url | semmle.label | req.url | | serverSide2.js:11:24:11:30 | req.url | semmle.label | req.url | -| serverSide2.js:16:11:16:41 | targetUrl | semmle.label | targetUrl | +| serverSide2.js:16:11:16:19 | targetUrl | semmle.label | targetUrl | | serverSide2.js:16:23:16:41 | req.parsedQuery.url | semmle.label | req.parsedQuery.url | | serverSide2.js:17:38:17:46 | targetUrl | semmle.label | targetUrl | -| serverSide2.js:19:11:19:55 | targetUrl1 | semmle.label | targetUrl1 | +| serverSide2.js:19:11:19:20 | targetUrl1 | semmle.label | targetUrl1 | | serverSide2.js:19:24:19:51 | req.par ... rsedUrl | semmle.label | req.par ... rsedUrl | | serverSide2.js:20:39:20:48 | targetUrl1 | semmle.label | targetUrl1 | -| serverSide2.js:22:11:22:36 | targetUrl2 | semmle.label | targetUrl2 | +| serverSide2.js:22:11:22:20 | targetUrl2 | semmle.label | targetUrl2 | | serverSide2.js:22:24:22:30 | req.url | semmle.label | req.url | | serverSide2.js:23:39:23:48 | targetUrl2 | semmle.label | targetUrl2 | -| serverSide2.js:25:11:25:47 | targetUrl3 | semmle.label | targetUrl3 | +| serverSide2.js:25:11:25:20 | targetUrl3 | semmle.label | targetUrl3 | | serverSide2.js:25:24:25:41 | req.SomeObject.url | semmle.label | req.SomeObject.url | | serverSide2.js:26:39:26:48 | targetUrl3 | semmle.label | targetUrl3 | -| serverSide.js:14:9:14:52 | tainted | semmle.label | tainted | +| serverSide.js:14:9:14:15 | tainted | semmle.label | tainted | | serverSide.js:14:19:14:42 | url.par ... , true) | semmle.label | url.par ... , true) | | serverSide.js:14:29:14:35 | req.url | semmle.label | req.url | | serverSide.js:18:13:18:19 | tainted | semmle.label | tainted | @@ -218,14 +218,14 @@ nodes | serverSide.js:43:46:43:52 | tainted | semmle.label | tainted | | serverSide.js:45:13:45:56 | 'http:/ ... tainted | semmle.label | 'http:/ ... tainted | | serverSide.js:45:50:45:56 | tainted | semmle.label | tainted | -| serverSide.js:58:9:58:52 | tainted | semmle.label | tainted | +| serverSide.js:58:9:58:15 | tainted | semmle.label | tainted | | serverSide.js:58:19:58:42 | url.par ... , true) | semmle.label | url.par ... , true) | | serverSide.js:58:29:58:35 | req.url | semmle.label | req.url | | serverSide.js:61:29:61:35 | tainted | semmle.label | tainted | | serverSide.js:61:29:61:35 | tainted | semmle.label | tainted | | serverSide.js:64:30:64:36 | tainted | semmle.label | tainted | | serverSide.js:68:30:68:36 | tainted | semmle.label | tainted | -| serverSide.js:74:9:74:52 | tainted | semmle.label | tainted | +| serverSide.js:74:9:74:15 | tainted | semmle.label | tainted | | serverSide.js:74:19:74:42 | url.par ... , true) | semmle.label | url.par ... , true) | | serverSide.js:74:29:74:35 | req.url | semmle.label | req.url | | serverSide.js:76:19:76:25 | tainted | semmle.label | tainted | @@ -235,27 +235,27 @@ nodes | serverSide.js:90:19:90:32 | ctx.params.foo | semmle.label | ctx.params.foo | | serverSide.js:92:19:92:28 | ctx.params | semmle.label | ctx.params | | serverSide.js:92:19:92:32 | ctx.params.foo | semmle.label | ctx.params.foo | -| serverSide.js:98:9:98:52 | tainted | semmle.label | tainted | +| serverSide.js:98:9:98:15 | tainted | semmle.label | tainted | | serverSide.js:98:19:98:42 | url.par ... , true) | semmle.label | url.par ... , true) | | serverSide.js:98:29:98:35 | req.url | semmle.label | req.url | | serverSide.js:100:19:100:25 | tainted | semmle.label | tainted | -| serverSide.js:108:11:108:27 | url | semmle.label | url | +| serverSide.js:108:11:108:13 | url | semmle.label | url | | serverSide.js:108:17:108:27 | request.url | semmle.label | request.url | | serverSide.js:109:27:109:29 | url | semmle.label | url | -| serverSide.js:115:11:115:42 | url | semmle.label | url | +| serverSide.js:115:11:115:13 | url | semmle.label | url | | serverSide.js:115:17:115:42 | new URL ... , base) | semmle.label | new URL ... , base) | | serverSide.js:115:25:115:35 | request.url | semmle.label | request.url | | serverSide.js:117:27:117:29 | url | semmle.label | url | -| serverSide.js:123:9:123:52 | tainted | semmle.label | tainted | +| serverSide.js:123:9:123:15 | tainted | semmle.label | tainted | | serverSide.js:123:19:123:42 | url.par ... , true) | semmle.label | url.par ... , true) | | serverSide.js:123:29:123:35 | req.url | semmle.label | req.url | | serverSide.js:127:14:127:20 | tainted | semmle.label | tainted | -| serverSide.js:130:9:130:45 | myUrl | semmle.label | myUrl | +| serverSide.js:130:9:130:13 | myUrl | semmle.label | myUrl | | serverSide.js:130:37:130:43 | tainted | semmle.label | tainted | | serverSide.js:131:15:131:19 | myUrl | semmle.label | myUrl | -| serverSide.js:139:9:139:29 | input | semmle.label | input | +| serverSide.js:139:9:139:13 | input | semmle.label | input | | serverSide.js:139:17:139:29 | req.query.url | semmle.label | req.query.url | -| serverSide.js:140:9:140:31 | target | semmle.label | target | +| serverSide.js:140:9:140:14 | target | semmle.label | target | | serverSide.js:140:18:140:31 | new URL(input) | semmle.label | new URL(input) | | serverSide.js:140:26:140:30 | input | semmle.label | input | | serverSide.js:141:13:141:18 | target | semmle.label | target | @@ -263,11 +263,11 @@ nodes | serverSide.js:142:13:142:18 | target | semmle.label | target | | serverSide.js:143:13:143:18 | target | semmle.label | target | | serverSide.js:143:13:143:23 | target.href | semmle.label | target.href | -| serverSide.js:144:9:144:37 | encodedUrl | semmle.label | encodedUrl | +| serverSide.js:144:9:144:18 | encodedUrl | semmle.label | encodedUrl | | serverSide.js:144:22:144:37 | encodeURI(input) | semmle.label | encodeURI(input) | | serverSide.js:144:32:144:36 | input | semmle.label | input | | serverSide.js:145:13:145:22 | encodedUrl | semmle.label | encodedUrl | -| serverSide.js:146:9:146:34 | escapedUrl | semmle.label | escapedUrl | +| serverSide.js:146:9:146:18 | escapedUrl | semmle.label | escapedUrl | | serverSide.js:146:22:146:34 | escape(input) | semmle.label | escape(input) | | serverSide.js:146:29:146:33 | input | semmle.label | input | | serverSide.js:147:13:147:22 | escapedUrl | semmle.label | escapedUrl | diff --git a/javascript/ql/test/tutorials/Analyzing data flow in JavaScript/Local data flow/query1.expected b/javascript/ql/test/tutorials/Analyzing data flow in JavaScript/Local data flow/query1.expected index 42bfa5e64308..fef71929fdff 100644 --- a/javascript/ql/test/tutorials/Analyzing data flow in JavaScript/Local data flow/query1.expected +++ b/javascript/ql/test/tutorials/Analyzing data flow in JavaScript/Local data flow/query1.expected @@ -1,3 +1,3 @@ -| test.js:4:5:4:22 | firstArg | +| test.js:4:5:4:12 | firstArg | | test.js:4:16:4:22 | args[2] | | test.js:5:13:5:20 | firstArg |