diff --git a/ql/src/semmle/go/frameworks/stdlib/EncodingBase64.qll b/ql/src/semmle/go/frameworks/stdlib/EncodingBase64.qll index 60dd745f855..36bce15ed60 100644 --- a/ql/src/semmle/go/frameworks/stdlib/EncodingBase64.qll +++ b/ql/src/semmle/go/frameworks/stdlib/EncodingBase64.qll @@ -14,10 +14,6 @@ module EncodingBase64 { // signature: func NewDecoder(enc *Encoding, r io.Reader) io.Reader hasQualifiedName("encoding/base64", "NewDecoder") and (inp.isParameter(1) and outp.isResult()) - or - // signature: func NewEncoder(enc *Encoding, w io.Writer) io.WriteCloser - hasQualifiedName("encoding/base64", "NewEncoder") and - (inp.isResult() and outp.isParameter(1)) } override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { @@ -37,14 +33,6 @@ module EncodingBase64 { // signature: func (*Encoding).DecodeString(s string) ([]byte, error) this.hasQualifiedName("encoding/base64", "Encoding", "DecodeString") and (inp.isParameter(0) and outp.isResult(0)) - or - // signature: func (*Encoding).Encode(dst []byte, src []byte) - this.hasQualifiedName("encoding/base64", "Encoding", "Encode") and - (inp.isParameter(1) and outp.isParameter(0)) - or - // signature: func (*Encoding).EncodeToString(src []byte) string - this.hasQualifiedName("encoding/base64", "Encoding", "EncodeToString") and - (inp.isParameter(0) and outp.isResult()) } override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { diff --git a/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/EncodingBase64.go b/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/EncodingBase64.go index 94f84678ab4..9fb443c12a3 100644 --- a/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/EncodingBase64.go +++ b/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/EncodingBase64.go @@ -13,42 +13,19 @@ func TaintStepTest_EncodingBase64NewDecoder_B0I0O0(sourceCQL interface{}) interf return intoReader414 } -func TaintStepTest_EncodingBase64NewEncoder_B0I0O0(sourceCQL interface{}) interface{} { - fromWriteCloser518 := sourceCQL.(io.WriteCloser) - var intoWriter650 io.Writer - intermediateCQL := base64.NewEncoder(nil, intoWriter650) - link(fromWriteCloser518, intermediateCQL) - return intoWriter650 -} - func TaintStepTest_EncodingBase64EncodingDecode_B0I0O0(sourceCQL interface{}) interface{} { - fromByte784 := sourceCQL.([]byte) - var intoByte957 []byte + fromByte518 := sourceCQL.([]byte) + var intoByte650 []byte var mediumObjCQL base64.Encoding - mediumObjCQL.Decode(intoByte957, fromByte784) - return intoByte957 + mediumObjCQL.Decode(intoByte650, fromByte518) + return intoByte650 } func TaintStepTest_EncodingBase64EncodingDecodeString_B0I0O0(sourceCQL interface{}) interface{} { - fromString520 := sourceCQL.(string) + fromString784 := sourceCQL.(string) var mediumObjCQL base64.Encoding - intoByte443, _ := mediumObjCQL.DecodeString(fromString520) - return intoByte443 -} - -func TaintStepTest_EncodingBase64EncodingEncode_B0I0O0(sourceCQL interface{}) interface{} { - fromByte127 := sourceCQL.([]byte) - var intoByte483 []byte - var mediumObjCQL base64.Encoding - mediumObjCQL.Encode(intoByte483, fromByte127) - return intoByte483 -} - -func TaintStepTest_EncodingBase64EncodingEncodeToString_B0I0O0(sourceCQL interface{}) interface{} { - fromByte989 := sourceCQL.([]byte) - var mediumObjCQL base64.Encoding - intoString982 := mediumObjCQL.EncodeToString(fromByte989) - return intoString982 + intoByte957, _ := mediumObjCQL.DecodeString(fromString784) + return intoByte957 } func RunAllTaints_EncodingBase64() { @@ -59,27 +36,12 @@ func RunAllTaints_EncodingBase64() { } { source := newSource(1) - out := TaintStepTest_EncodingBase64NewEncoder_B0I0O0(source) + out := TaintStepTest_EncodingBase64EncodingDecode_B0I0O0(source) sink(1, out) } { source := newSource(2) - out := TaintStepTest_EncodingBase64EncodingDecode_B0I0O0(source) + out := TaintStepTest_EncodingBase64EncodingDecodeString_B0I0O0(source) sink(2, out) } - { - source := newSource(3) - out := TaintStepTest_EncodingBase64EncodingDecodeString_B0I0O0(source) - sink(3, out) - } - { - source := newSource(4) - out := TaintStepTest_EncodingBase64EncodingEncode_B0I0O0(source) - sink(4, out) - } - { - source := newSource(5) - out := TaintStepTest_EncodingBase64EncodingEncodeToString_B0I0O0(source) - sink(5, out) - } }