mirror of
https://github.com/securego/gosec.git
synced 2024-12-24 11:35:52 +00:00
Merge pull request #18 from HewlettPackard/issue16
Expand cases accepted by -exclude
This commit is contained in:
commit
2d0a26dafe
1 changed files with 26 additions and 4 deletions
30
filelist.go
30
filelist.go
|
@ -15,6 +15,8 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
)
|
||||
|
@ -30,17 +32,37 @@ func (f *filelist) Set(val string) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (f *filelist) Contains(path string) bool {
|
||||
func (f *filelist) Contains(pathname string) bool {
|
||||
|
||||
// Ignore dot files
|
||||
_, filename := filepath.Split(path)
|
||||
_, filename := filepath.Split(pathname)
|
||||
if strings.HasPrefix(filename, ".") {
|
||||
return true
|
||||
}
|
||||
|
||||
cwd, _ := os.Getwd()
|
||||
abs, _ := filepath.Abs(pathname)
|
||||
|
||||
for _, pattern := range *f {
|
||||
// Match entire path
|
||||
if rv, err := filepath.Match(pattern, path); rv && err == nil {
|
||||
|
||||
// Also check working directory
|
||||
rel := path.Join(cwd, pattern)
|
||||
|
||||
// Match pattern directly
|
||||
if matched, _ := filepath.Match(pattern, pathname); matched {
|
||||
return true
|
||||
}
|
||||
// Also check pattern relative to working directory
|
||||
if matched, _ := filepath.Match(rel, pathname); matched {
|
||||
return true
|
||||
}
|
||||
|
||||
// Finally try absolute path
|
||||
st, e := os.Stat(rel)
|
||||
if !os.IsNotExist(e) && st.IsDir() && strings.HasPrefix(abs, rel) {
|
||||
return true
|
||||
}
|
||||
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue