Skip to content

Commit c92b782

Browse files
authored
Merge pull request github#6580 from smowton/smowton/admin/guava-models-mistakes
Fix minor mistakes in old Guava models
2 parents a80a367 + 7977d9c commit c92b782

File tree

4 files changed

+18
-3
lines changed

4 files changed

+18
-3
lines changed

java/ql/lib/semmle/code/java/frameworks/guava/Base.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ private class GuavaBaseCsv extends SummaryModelCsv {
6262
"com.google.common.base;Converter;true;apply;(Object);;Argument[0];ReturnValue;taint",
6363
"com.google.common.base;Converter;true;convert;(Object);;Argument[0];ReturnValue;taint",
6464
"com.google.common.base;Converter;true;convertAll;(Iterable);;Element of Argument[0];Element of ReturnValue;taint",
65-
"com.google.common.base;Supplier;true;get;();;Argument[0];ReturnValue;taint",
65+
"com.google.common.base;Supplier;true;get;();;Argument[-1];ReturnValue;taint",
6666
"com.google.common.base;Suppliers;false;ofInstance;(Object);;Argument[0];ReturnValue;taint",
6767
"com.google.common.base;Suppliers;false;memoize;(Supplier);;Argument[0];ReturnValue;taint",
6868
"com.google.common.base;Suppliers;false;memoizeWithExpiration;(Supplier,long,TimeUnit);;Argument[0];ReturnValue;taint",

java/ql/lib/semmle/code/java/frameworks/guava/IO.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ private class GuavaIoCsv extends SummaryModelCsv {
3434
"com.google.common.io;ByteSource;true;slice;(long,long);;Argument[-1];ReturnValue;taint",
3535
"com.google.common.io;ByteSource;true;wrap;(byte[]);;Argument[0];ReturnValue;taint",
3636
"com.google.common.io;ByteStreams;false;copy;(InputStream,OutputStream);;Argument[0];Argument[1];taint",
37-
"com.google.common.io;ByteStreams;false;copy;(ReadablyByteChannel,WritableByteChannel);;Argument[0];Argument[1];taint",
37+
"com.google.common.io;ByteStreams;false;copy;(ReadableByteChannel,WritableByteChannel);;Argument[0];Argument[1];taint",
3838
"com.google.common.io;ByteStreams;false;limit;(InputStream,long);;Argument[0];ReturnValue;taint",
3939
"com.google.common.io;ByteStreams;false;newDataInput;(byte[]);;Argument[0];ReturnValue;taint",
4040
"com.google.common.io;ByteStreams;false;newDataInput;(byte[],int);;Argument[0];ReturnValue;taint",

java/ql/test/library-tests/frameworks/guava/TestBase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ void test5() {
7575
}
7676

7777
void test6() {
78-
sink(Suppliers.memoize(Suppliers.memoizeWithExpiration(Suppliers.synchronizedSupplier(Suppliers.ofInstance(taint())), 3, TimeUnit.HOURS))); // $numTaintFlow=1
78+
sink(Suppliers.memoize(Suppliers.memoizeWithExpiration(Suppliers.synchronizedSupplier(Suppliers.ofInstance(taint())), 3, TimeUnit.HOURS)).get()); // $numTaintFlow=1
7979
}
8080

8181
void test7() {

java/ql/test/library-tests/frameworks/guava/TestIO.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,19 @@
88
import java.io.ByteArrayOutputStream;
99
import java.io.InputStream;
1010
import java.io.Closeable;
11+
import java.nio.channels.FileChannel;
12+
import java.nio.channels.ReadableByteChannel;
13+
import java.nio.channels.WritableByteChannel;
1114
import java.nio.file.Path;
15+
import java.nio.file.Paths;
1216
import java.io.IOException;
1317

1418
class TestIO {
1519
Object taint() { return null; }
1620
String staint(){ return (String) taint(); }
1721
byte[] btaint() { return (byte[]) taint(); }
1822
InputStream itaint() { return (InputStream) taint(); }
23+
ReadableByteChannel rbctaint() { return (ReadableByteChannel) taint(); }
1924
Reader rtaint() { return new InputStreamReader(itaint()); }
2025
Path ptaint() { return (Path) taint(); }
2126

@@ -75,6 +80,16 @@ class MyLineProcessor implements LineProcessor<String> {
7580
}
7681

7782
void test3() throws IOException {
83+
{
84+
ByteArrayOutputStream out = new ByteArrayOutputStream();
85+
ByteStreams.copy(itaint(), out);
86+
sink(out); // $numTaintFlow=1
87+
}
88+
{
89+
WritableByteChannel out = FileChannel.open(Paths.get("/tmp/xyz"));
90+
ByteStreams.copy(rbctaint(), out);
91+
sink(out); // $numTaintFlow=1
92+
}
7893
sink(ByteStreams.limit(itaint(), 1337)); // $numTaintFlow=1
7994
sink(ByteStreams.newDataInput(btaint())); // $numTaintFlow=1
8095
sink(ByteStreams.newDataInput(btaint(), 0)); // $numTaintFlow=1

0 commit comments

Comments
 (0)