mirror of
https://github.com/octoleo/syncthing.git
synced 2024-12-22 10:58:57 +00:00
lib/model: Accept scan requests of paths ending in slash (fixes #3804)
GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/3805
This commit is contained in:
parent
b279e261a1
commit
11b35d650d
@ -1690,7 +1690,10 @@ func (m *Model) internalScanFolderSubdirs(folder string, subDirs []string) error
|
||||
for i, sub := range subDirs {
|
||||
sub = osutil.NativeFilename(sub)
|
||||
// We test each path by joining with "root". What we join with is
|
||||
// not relevant, we just want the dotdot escape detection here.
|
||||
// not relevant, we just want the dotdot escape detection here. For
|
||||
// historical reasons we may get paths that end in a slash. We
|
||||
// remove that first to allow the rootedJoinedPath to pass.
|
||||
sub = strings.TrimRight(sub, string(os.PathSeparator))
|
||||
if _, err := rootedJoinedPath("root", sub); err != nil {
|
||||
return errors.New("invalid subpath")
|
||||
}
|
||||
|
@ -2166,6 +2166,21 @@ func TestIssue3496(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestIssue3804(t *testing.T) {
|
||||
dbi := db.OpenMemory()
|
||||
m := NewModel(defaultConfig, protocol.LocalDeviceID, "device", "syncthing", "dev", dbi, nil)
|
||||
m.AddFolder(defaultFolderConfig)
|
||||
m.StartFolder("default")
|
||||
m.ServeBackground()
|
||||
defer m.Stop()
|
||||
|
||||
// Subdirs ending in slash should be accepted
|
||||
|
||||
if err := m.ScanFolderSubdirs("default", []string{"baz/", "foo"}); err != nil {
|
||||
t.Error("Unexpected error:", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRootedJoinedPath(t *testing.T) {
|
||||
type testcase struct {
|
||||
root string
|
||||
|
Loading…
Reference in New Issue
Block a user