local fs: fixed paths validation for some Windows specific edge cases

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
This commit is contained in:
Nicola Murino 2022-12-12 10:40:04 +01:00
parent c23c73ed34
commit f13b901f2d
No known key found for this signature in database
GPG key ID: 935D2952DEC4EECF

View file

@ -32,6 +32,7 @@ import (
"github.com/rs/xid" "github.com/rs/xid"
"github.com/drakkan/sftpgo/v2/internal/logger" "github.com/drakkan/sftpgo/v2/internal/logger"
"github.com/drakkan/sftpgo/v2/internal/util"
) )
const ( const (
@ -406,6 +407,9 @@ func (fs *OsFs) findNonexistentDirs(filePath string) ([]string, error) {
for fs.IsNotExist(err) { for fs.IsNotExist(err) {
results = append(results, parent) results = append(results, parent)
parent = filepath.Dir(parent) parent = filepath.Dir(parent)
if util.Contains(results, parent) {
break
}
_, err = os.Stat(parent) _, err = os.Stat(parent)
} }
if err != nil { if err != nil {