mirror of
https://github.com/drakkan/sftpgo.git
synced 2025-12-07 06:40:54 +03:00
Improve checking for the create_dirs permission
Do not allow implicit directory creation on file uploads if create_dirs permission is not granted Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
This commit is contained in:
@@ -242,7 +242,13 @@ func (fs *S3Fs) Open(name string, offset int64) (File, *pipeat.PipeReaderAt, fun
|
||||
}
|
||||
|
||||
// Create creates or opens the named file for writing
|
||||
func (fs *S3Fs) Create(name string, flag int) (File, *PipeWriter, func(), error) {
|
||||
func (fs *S3Fs) Create(name string, flag, checks int) (File, *PipeWriter, func(), error) {
|
||||
if checks&CheckParentDir != 0 {
|
||||
_, err := fs.Stat(path.Dir(name))
|
||||
if err != nil {
|
||||
return nil, nil, nil, err
|
||||
}
|
||||
}
|
||||
r, w, err := pipeat.PipeInDir(fs.localTempDir)
|
||||
if err != nil {
|
||||
return nil, nil, nil, err
|
||||
@@ -294,6 +300,10 @@ func (fs *S3Fs) Rename(source, target string) error {
|
||||
if source == target {
|
||||
return nil
|
||||
}
|
||||
_, err := fs.Stat(path.Dir(target))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fi, err := fs.Stat(source)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -775,7 +785,7 @@ func (fs *S3Fs) mkdirInternal(name string) error {
|
||||
if !strings.HasSuffix(name, "/") {
|
||||
name += "/"
|
||||
}
|
||||
_, w, _, err := fs.Create(name, -1)
|
||||
_, w, _, err := fs.Create(name, -1, 0)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user