Skip to content

Commit 5a3a8d7

Browse files
committed
fix some flowstate bug which Had caused to FP
1 parent 08f78a2 commit 5a3a8d7

1 file changed

Lines changed: 17 additions & 23 deletions

File tree

go/ql/src/experimental/CWE-522-DecompressionBombs/DecompressionBombs.ql

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -31,48 +31,42 @@ module DecompressionBombs implements DataFlow::StateConfigSig {
3131
or
3232
exists(DataFlow::Function f |
3333
(
34-
f.hasQualifiedName("archive/zip", ["OpenReader", "NewReader"]) and
35-
state = "ZipOpenReader"
34+
f.hasQualifiedName("archive/zip", ["OpenReader", "NewReader"])
3635
or
37-
f.hasQualifiedName("github.com/klauspost/compress/zip", ["NewReader", "OpenReader"]) and
38-
state = "ZipKlauspost"
36+
f.hasQualifiedName("github.com/klauspost/compress/zip", ["NewReader", "OpenReader"])
3937
or
40-
f.hasQualifiedName("github.com/ulikunitz/xz", "NewReader") and
41-
state = "XzNewReader"
38+
f.hasQualifiedName("github.com/ulikunitz/xz", "NewReader")
4239
or
4340
f.hasQualifiedName([
4441
"compress/gzip", "github.com/klauspost/compress/gzip", "github.com/klauspost/pgzip"
45-
], "NewReader") and
46-
state = "GzipNewReader"
42+
], "NewReader")
4743
or
4844
f.hasQualifiedName([
4945
"compress/bzip2", "github.com/dsnet/compress/bzip2", "github.com/cosnicolaou/pbzip2"
50-
], "NewReader") and
51-
state = "Bzip2NewReader"
46+
], "NewReader")
5247
or
53-
f.hasQualifiedName(["github.com/dsnet/compress/flate"], "NewReader") and
54-
state = "FlateNewReader"
48+
f.hasQualifiedName(["github.com/dsnet/compress/flate"], "NewReader")
5549
or
5650
f.hasQualifiedName(["compress/flate", "github.com/klauspost/compress/flate"],
57-
["NewReaderDict", "NewReader"]) and
58-
state = "FlateNewReader"
51+
["NewReaderDict", "NewReader"])
5952
or
60-
f.hasQualifiedName(["compress/zlib", "github.com/klauspost/compress/zlib"], "NewReader") and
61-
state = "ZlibNewReader"
53+
f.hasQualifiedName(["compress/zlib", "github.com/klauspost/compress/zlib"], "NewReader")
6254
or
6355
f.hasQualifiedName(["github.com/klauspost/compress/zstd", "github.com/DataDog/zstd"],
64-
"NewReader") and
65-
state = "ZstdNewReader"
56+
"NewReader")
6657
or
6758
f.hasQualifiedName(["github.com/golang/snappy", "github.com/klauspost/compress/snappy"],
68-
"NewReader") and
69-
state = "SnapyNewReader"
59+
"NewReader")
7060
or
71-
f.hasQualifiedName("github.com/klauspost/compress/s2", "NewReader") and
72-
state = "S2NewReader"
61+
f.hasQualifiedName("github.com/klauspost/compress/s2", "NewReader")
7362
) and
7463
source = f.getACall().getResult(0) and
75-
not TaintTracking::localExprTaint(any(StringLit c), source.asExpr())
64+
not TaintTracking::localExprTaint(any(StringLit c), source.asExpr()) and
65+
state =
66+
[
67+
"ZstdNewReader", "XzNewReader", "GzipNewReader", "S2NewReader", "SnapyNewReader",
68+
"ZlibNewReader", "FlateNewReader", "Bzip2NewReader", "ZipOpenReader", "ZipKlauspost"
69+
]
7670
)
7771
}
7872

0 commit comments

Comments
 (0)