Skip to content
This repository was archived by the owner on Jan 5, 2023. It is now read-only.

Commit 412ba12

Browse files
committed
Add taint-tracking for encoding/ascii85
1 parent a47842d commit 412ba12

3 files changed

Lines changed: 95 additions & 0 deletions

File tree

ql/src/semmle/go/frameworks/Stdlib.qll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import semmle.go.frameworks.stdlib.Mime
1616
import semmle.go.frameworks.stdlib.MimeMultipart
1717
import semmle.go.frameworks.stdlib.MimeQuotedprintable
1818
import semmle.go.frameworks.stdlib.Encoding
19+
import semmle.go.frameworks.stdlib.EncodingAscii85
1920
import semmle.go.frameworks.stdlib.Path
2021
import semmle.go.frameworks.stdlib.PathFilepath
2122
import semmle.go.frameworks.stdlib.Reflect
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
* Provides classes modeling security-relevant aspects of the `encoding/ascii85` package.
3+
*/
4+
5+
import go
6+
7+
/** Provides models of commonly used functions in the `encoding/ascii85` package. */
8+
module EncodingAscii85 {
9+
private class FunctionModels extends TaintTracking::FunctionModel {
10+
FunctionInput inp;
11+
FunctionOutput outp;
12+
13+
FunctionModels() {
14+
// signature: func Decode(dst []byte, src []byte, flush bool) (ndst int, nsrc int, err error)
15+
hasQualifiedName("encoding/ascii85", "Decode") and
16+
(inp.isParameter(1) and outp.isParameter(0))
17+
or
18+
// signature: func Encode(dst []byte, src []byte) int
19+
hasQualifiedName("encoding/ascii85", "Encode") and
20+
(inp.isParameter(1) and outp.isParameter(0))
21+
or
22+
// signature: func NewDecoder(r io.Reader) io.Reader
23+
hasQualifiedName("encoding/ascii85", "NewDecoder") and
24+
(inp.isParameter(0) and outp.isResult())
25+
or
26+
// signature: func NewEncoder(w io.Writer) io.WriteCloser
27+
hasQualifiedName("encoding/ascii85", "NewEncoder") and
28+
(inp.isResult() and outp.isParameter(0))
29+
}
30+
31+
override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) {
32+
input = inp and output = outp
33+
}
34+
}
35+
}

ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/EncodingAscii85.go

Lines changed: 59 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)