mirror of
https://github.com/securego/gosec.git
synced 2025-07-13 01:00:25 +02:00
update to G304 which adds binary expressions and file joining (#233)
* Added features to G304 * Linted * Added path selectors * Used better solution * removed debugging lines * fixed comments * Added test code * fixed a spacing change
This commit is contained in:
committed by
Grant Murphy
parent
e4ba96adc3
commit
7fd94463ed
@ -500,7 +500,7 @@ import (
|
||||
|
||||
func main() {
|
||||
http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) {
|
||||
title := r.URL.Query().Get("title")
|
||||
title := r.URL.Query().Get("title")
|
||||
f, err := os.Open(title)
|
||||
if err != nil {
|
||||
fmt.Printf("Error: %v\n", err)
|
||||
@ -512,6 +512,65 @@ func main() {
|
||||
fmt.Fprintf(w, "%s", body)
|
||||
})
|
||||
log.Fatal(http.ListenAndServe(":3000", nil))
|
||||
}`, 1}, {`
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
"io/ioutil"
|
||||
)
|
||||
|
||||
func main() {
|
||||
f2 := os.Getenv("tainted_file2")
|
||||
body, err := ioutil.ReadFile("/tmp/" + f2)
|
||||
if err != nil {
|
||||
log.Printf("Error: %v\n", err)
|
||||
}
|
||||
log.Print(body)
|
||||
}`, 1}, {`
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
func main() {
|
||||
reader := bufio.NewReader(os.Stdin)
|
||||
fmt.Print("Please enter file to read: ")
|
||||
file, _ := reader.ReadString('\n')
|
||||
file = file[:len(file)-1]
|
||||
f, err := os.Open(filepath.Join("/tmp/service/", file))
|
||||
if err != nil {
|
||||
fmt.Printf("Error: %v\n", err)
|
||||
}
|
||||
contents := make([]byte, 15)
|
||||
if _, err = f.Read(contents); err != nil {
|
||||
fmt.Printf("Error: %v\n", err)
|
||||
}
|
||||
fmt.Println(string(contents))
|
||||
}`, 1}, {`
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
"io/ioutil"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
func main() {
|
||||
dir := os.Getenv("server_root")
|
||||
f3 := os.Getenv("tainted_file3")
|
||||
// edge case where both a binary expression and file Join are used.
|
||||
body, err := ioutil.ReadFile(filepath.Join("/var/"+dir, f3))
|
||||
if err != nil {
|
||||
log.Printf("Error: %v\n", err)
|
||||
}
|
||||
log.Print(body)
|
||||
}`, 1}}
|
||||
|
||||
// SampleCodeG305 - File path traversal when extracting zip archives
|
||||
|
Reference in New Issue
Block a user