From d75645e89adf5cfde32fbec945c7096612aec930 Mon Sep 17 00:00:00 2001 From: Napalys Klicius Date: Mon, 28 Apr 2025 11:44:30 +0200 Subject: [PATCH] Added test case for class harness containing failing test --- .../ql/test/library-tests/TripleDot/class.js | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 javascript/ql/test/library-tests/TripleDot/class.js diff --git a/javascript/ql/test/library-tests/TripleDot/class.js b/javascript/ql/test/library-tests/TripleDot/class.js new file mode 100644 index 000000000000..6f8426262e5e --- /dev/null +++ b/javascript/ql/test/library-tests/TripleDot/class.js @@ -0,0 +1,87 @@ +import 'dummy'; + +class Foo { + constructor() { + this.size = 1024 * 1024 * 4; + this.buffer = null; + } + + someSink() { + sink(this.buffer); // $ MISSING: hasTaintFlow=h1.1 + } + + setData2(data) { + this.buffer = Buffer.from(data); + } + + setData() { + this.setData2(source("h1.1")); + } + + allocate_buffers () { + this.buffer = new Buffer(this.size); + } +} + +// Tests pass without allocate_buffers function present in the class +class Baz { + constructor() { + this.size = 1024 * 1024 * 4; + this.buffer = null; + } + + someSink() { + sink(this.buffer); // $ hasTaintFlow=h1.2 + } + + setData2(data) { + this.buffer = Buffer.from(data); + } + + setData() { + this.setData2(source("h1.2")); + } +} + +// Tests pass with single setData instead of setData -> setData2 +class Baz { + constructor() { + this.size = 1024 * 1024 * 4; + this.buffer = null; + } + + someSink() { + sink(this.buffer); // $ hasTaintFlow=h1.3 + } + + setData() { + this.buffer = Buffer.from(source("h1.3")); + } + + allocate_buffers () { + this.buffer = new Buffer(this.size); + } +} + +// Tests pass taking hardcoded value instead of class member +class Foz { + constructor() { + this.buffer = null; + } + + someSink() { + sink(this.buffer); // $ hasTaintFlow=h1.1 + } + + setData2(data) { + this.buffer = Buffer.from(data); + } + + setData() { + this.setData2(source("h1.1")); + } + + allocate_buffers () { + this.buffer = new Buffer(1024 * 1024 * 4); + } +}