@@ -38,7 +38,6 @@ func fasthttpClient() {
38
38
uri .Update ("http://httpbin.org/ip" ) // $ URI=uri
39
39
uri .UpdateBytes ([]byte ("http://httpbin.org/ip" )) // $ URI=uri
40
40
uri .Parse (nil , []byte ("http://httpbin.org/ip" )) // $ URI=uri
41
- uri .CopyTo (uri2 ) // $ URI=uri
42
41
43
42
req .SetHost ("UserControlled.com:80" ) // $ req=req
44
43
req .SetHostBytes ([]byte ("UserControlled.com:80" )) // $ req=req
@@ -94,7 +93,7 @@ func main() {
94
93
func fasthttpServer () {
95
94
ln , _ := net .Listen ("tcp4" , "127.0.0.1:8080" )
96
95
requestHandler := func (requestCtx * fasthttp.RequestCtx ) {
97
- filePath := requestCtx .QueryArgs ().Peek ("filePath" ) // $ UntrustedFlowSource=' call to Peek'
96
+ filePath := requestCtx .QueryArgs ().Peek ("filePath" ) // $ UntrustedFlowSource=" call to Peek"
98
97
// File System Access
99
98
_ = requestCtx .Response .SendFile (string (filePath )) // $ FileSystemAccess=string(filePath)
100
99
requestCtx .SendFile (string (filePath )) // $ FileSystemAccess=string(filePath)
@@ -106,80 +105,70 @@ func fasthttpServer() {
106
105
fasthttp .ServeFileBytes (requestCtx , filePath ) // $ FileSystemAccess=filePath
107
106
fasthttp .ServeFileBytesUncompressed (requestCtx , filePath ) // $ FileSystemAccess=filePath
108
107
109
- dstWriter := & bufio.Writer {}
110
108
dstReader := & bufio.Reader {}
111
109
// user controlled methods as source
112
110
requestHeader := & fasthttp.RequestHeader {}
113
- requestCtx .Request .Header .CopyTo (requestHeader ) // $ UntrustedFlowSource=requestHeader
114
- requestHeader .Write (dstWriter ) // $ UntrustedFlowSource=dstWriter
115
- requestHeader .Header () // $ UntrustedFlowSource=Header
116
- requestHeader .TrailerHeader () // $ UntrustedFlowSource=TrailerHeader
117
- requestHeader .String () // $ UntrustedFlowSource=String
118
- requestHeader .RequestURI () // $ UntrustedFlowSource=RequestURI
119
- requestHeader .Host () // $ UntrustedFlowSource=Host
120
- requestHeader .UserAgent () // $ UntrustedFlowSource=UserAgent
121
- requestHeader .ContentEncoding () // $ UntrustedFlowSource=ContentEncoding
122
- requestHeader .ContentType () // $ UntrustedFlowSource=ContentType
123
- requestHeader .Cookie ("ACookie" ) // $ UntrustedFlowSource=Cookie
124
- requestHeader .CookieBytes ([]byte ("ACookie" )) // $ UntrustedFlowSource=CookieBytes
125
- requestHeader .MultipartFormBoundary () // $ UntrustedFlowSource=MultipartFormBoundary
126
- requestHeader .Peek ("AHeaderName" ) // $ UntrustedFlowSource=Peek
127
- requestHeader .PeekAll ("AHeaderName" ) // $ UntrustedFlowSource=PeekAll
128
- requestHeader .PeekBytes ([]byte ("AHeaderName" )) // $ UntrustedFlowSource=PeekBytes
129
- requestHeader .PeekKeys () // $ UntrustedFlowSource=PeekKeys
130
- requestHeader .PeekTrailerKeys () // $ UntrustedFlowSource=PeekTrailerKeys
131
- requestHeader .Referer () // $ UntrustedFlowSource=Referer
132
- requestHeader .RawHeaders () // $ UntrustedFlowSource=RawHeaders
111
+ requestHeader .Header () // $ UntrustedFlowSource="call to Header"
112
+ requestHeader .TrailerHeader () // $ UntrustedFlowSource="call to TrailerHeader"
113
+ requestHeader .String () // $ UntrustedFlowSource="call to String"
114
+ requestHeader .RequestURI () // $ UntrustedFlowSource="call to RequestURI"
115
+ requestHeader .Host () // $ UntrustedFlowSource="call to Host"
116
+ requestHeader .UserAgent () // $ UntrustedFlowSource="call to UserAgent"
117
+ requestHeader .ContentEncoding () // $ UntrustedFlowSource="call to ContentEncoding"
118
+ requestHeader .ContentType () // $ UntrustedFlowSource="call to ContentType"
119
+ requestHeader .Cookie ("ACookie" ) // $ UntrustedFlowSource="call to Cookie"
120
+ requestHeader .CookieBytes ([]byte ("ACookie" )) // $ UntrustedFlowSource="call to CookieBytes"
121
+ requestHeader .MultipartFormBoundary () // $ UntrustedFlowSource="call to MultipartFormBoundary"
122
+ requestHeader .Peek ("AHeaderName" ) // $ UntrustedFlowSource="call to Peek"
123
+ requestHeader .PeekAll ("AHeaderName" ) // $ UntrustedFlowSource="call to PeekAll"
124
+ requestHeader .PeekBytes ([]byte ("AHeaderName" )) // $ UntrustedFlowSource="call to PeekBytes"
125
+ requestHeader .PeekKeys () // $ UntrustedFlowSource="call to PeekKeys"
126
+ requestHeader .PeekTrailerKeys () // $ UntrustedFlowSource="call to PeekTrailerKeys"
127
+ requestHeader .Referer () // $ UntrustedFlowSource="call to Referer"
128
+ requestHeader .RawHeaders () // $ UntrustedFlowSource="call to RawHeaders"
133
129
// multipart.Form is already implemented
134
130
// requestCtx.MultipartForm()
135
- requestCtx .URI ().Path () // $ UntrustedFlowSource=newArgs
136
- requestCtx .URI ().PathOriginal () // $ UntrustedFlowSource=newArgs
137
- newURI := & fasthttp.URI {}
138
- requestCtx .URI ().CopyTo (newURI ) // $ UntrustedFlowSource=CopyTo
139
- requestCtx .URI ().FullURI () // $ UntrustedFlowSource=FullURI
140
- requestCtx .URI ().LastPathSegment () // $ UntrustedFlowSource=LastPathSegment
141
- requestCtx .URI ().QueryString () // $ UntrustedFlowSource=QueryString
142
- requestCtx .URI ().String () // $ UntrustedFlowSource=String
143
- requestCtx .URI ().WriteTo (dstWriter ) // $ UntrustedFlowSource=WriteTo
144
-
145
- newArgs := & fasthttp.Args {}
131
+ requestCtx .URI ().Path () // $ UntrustedFlowSource="call to Path"
132
+ requestCtx .URI ().PathOriginal () // $ UntrustedFlowSource="call to PathOriginal"
133
+ requestCtx .URI ().FullURI () // $ UntrustedFlowSource="call to FullURI"
134
+ requestCtx .URI ().LastPathSegment () // $ UntrustedFlowSource="call to LastPathSegment"
135
+ requestCtx .URI ().QueryString () // $ UntrustedFlowSource="call to QueryString"
136
+ requestCtx .URI ().String () // $ UntrustedFlowSource="call to String"
137
+
146
138
//or requestCtx.PostArgs()
147
- requestCtx .URI ().QueryArgs ().CopyTo (newArgs ) // $ UntrustedFlowSource=newArgs
148
- requestCtx .URI ().QueryArgs ().Peek ("arg1" ) // $ UntrustedFlowSource=Peek
149
- requestCtx .URI ().QueryArgs ().PeekBytes ([]byte ("arg1" )) // $ UntrustedFlowSource=PeekBytes
150
- requestCtx .URI ().QueryArgs ().PeekMulti ("arg1" ) // $ UntrustedFlowSource=PeekMulti
151
- requestCtx .URI ().QueryArgs ().PeekMultiBytes ([]byte ("arg1" )) // $ UntrustedFlowSource=PeekMultiBytes
152
- requestCtx .URI ().QueryArgs ().QueryString () // $ UntrustedFlowSource=QueryString
153
- requestCtx .URI ().QueryArgs ().String () // $ UntrustedFlowSource=String
154
- requestCtx .URI ().QueryArgs ().WriteTo (dstWriter ) // $ UntrustedFlowSource=dstWriter
139
+ requestCtx .URI ().QueryArgs ().Peek ("arg1" ) // $ UntrustedFlowSource="call to Peek"
140
+ requestCtx .URI ().QueryArgs ().PeekBytes ([]byte ("arg1" )) // $ UntrustedFlowSource="call to PeekBytes"
141
+ requestCtx .URI ().QueryArgs ().PeekMulti ("arg1" ) // $ UntrustedFlowSource="call to PeekMulti"
142
+ requestCtx .URI ().QueryArgs ().PeekMultiBytes ([]byte ("arg1" )) // $ UntrustedFlowSource="call to PeekMultiBytes"
143
+ requestCtx .URI ().QueryArgs ().QueryString () // $ UntrustedFlowSource="call to QueryString"
144
+ requestCtx .URI ().QueryArgs ().String () // $ UntrustedFlowSource="call to String"
145
+ requestCtx .String () // $ UntrustedFlowSource="call to String"
155
146
// not sure what is the best way to write query for following
156
147
//requestCtx.URI().QueryArgs().VisitAll(type func(,))
157
148
158
- requestCtx .Path ()
149
+ requestCtx .Path () // $ UntrustedFlowSource="call to Path"
159
150
// multipart.Form is already implemented
160
151
// requestCtx.FormFile("FileName")
161
152
// requestCtx.FormValue("ValueName")
162
- requestCtx .Referer () // $ UntrustedFlowSource=Referer
163
- requestCtx .PostBody () // $ UntrustedFlowSource=PostBody
164
- requestCtx .RequestBodyStream () // $ UntrustedFlowSource=RequestBodyStream
165
- requestCtx .RequestURI () // $ UntrustedFlowSource=RequestURI
166
- requestCtx .UserAgent () // $ UntrustedFlowSource=UserAgent
167
- requestCtx .Host () // $ UntrustedFlowSource=Host
168
-
169
- requestCtx .Request .Host () // $ UntrustedFlowSource=Host
170
- requestCtx .Request .Body () // $ UntrustedFlowSource=Body
171
- requestCtx .Request .RequestURI () // $ UntrustedFlowSource=RequestURI
172
- requestCtx .Request .BodyGunzip () // $ UntrustedFlowSource=BodyGunzip
173
- requestCtx .Request .BodyInflate () // $ UntrustedFlowSource=BodyInflate
174
- requestCtx .Request .BodyUnbrotli () // $ UntrustedFlowSource=BodyUnbrotli
175
- requestCtx .Request .BodyStream () // $ UntrustedFlowSource=BodyStream
176
- requestCtx .Request .BodyWriteTo (dstWriter ) // $ UntrustedFlowSource=dstWriter
177
- requestCtx .Request .WriteTo (dstWriter ) // $ UntrustedFlowSource=dstWriter
178
- requestCtx .Request .BodyUncompressed () // $ UntrustedFlowSource=BodyUncompressed
179
- requestCtx .Request .ReadBody (dstReader , 100 , 1000 ) // $ UntrustedFlowSource=dstReader
180
- requestCtx .Request .ReadLimitBody (dstReader , 100 ) // $ UntrustedFlowSource=dstReader
181
- requestCtx .Request .ContinueReadBodyStream (dstReader , 100 , true ) // $ UntrustedFlowSource=dstReader
182
- requestCtx .Request .ContinueReadBody (dstReader , 100 ) // $ UntrustedFlowSource=dstReader
153
+ requestCtx .Referer () // $ UntrustedFlowSource="call to Referer"
154
+ requestCtx .PostBody () // $ UntrustedFlowSource="call to PostBody"
155
+ requestCtx .RequestBodyStream () // $ UntrustedFlowSource="call to RequestBodyStream"
156
+ requestCtx .RequestURI () // $ UntrustedFlowSource="call to RequestURI"
157
+ requestCtx .UserAgent () // $ UntrustedFlowSource="call to UserAgent"
158
+ requestCtx .Host () // $ UntrustedFlowSource="call to Host"
159
+
160
+ requestCtx .Request .Host () // $ UntrustedFlowSource="call to Host"
161
+ requestCtx .Request .Body () // $ UntrustedFlowSource="call to Body"
162
+ requestCtx .Request .RequestURI () // $ UntrustedFlowSource="call to RequestURI"
163
+ requestCtx .Request .BodyGunzip () // $ UntrustedFlowSource="call to BodyGunzip"
164
+ requestCtx .Request .BodyInflate () // $ UntrustedFlowSource="call to BodyInflate"
165
+ requestCtx .Request .BodyUnbrotli () // $ UntrustedFlowSource="call to BodyUnbrotli"
166
+ requestCtx .Request .BodyStream () // $ UntrustedFlowSource="call to BodyStream"
167
+ requestCtx .Request .BodyUncompressed () // $ UntrustedFlowSource="call to BodyUncompressed"
168
+ requestCtx .Request .ReadBody (dstReader , 100 , 1000 )
169
+ requestCtx .Request .ReadLimitBody (dstReader , 100 )
170
+ requestCtx .Request .ContinueReadBodyStream (dstReader , 100 , true )
171
+ requestCtx .Request .ContinueReadBody (dstReader , 100 )
183
172
// not sure what is the best way to write query for following
184
173
//requestCtx.Request.Header.VisitAllCookie()
185
174
0 commit comments