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:
Nicola Murino
2023-04-06 12:42:22 +02:00
parent fcd97ee20d
commit 2ccb6c2672
18 changed files with 119 additions and 72 deletions

View File

@@ -227,7 +227,13 @@ func (fs *AzureBlobFs) Open(name string, offset int64) (File, *pipeat.PipeReader
}
// Create creates or opens the named file for writing
func (fs *AzureBlobFs) Create(name string, flag int) (File, *PipeWriter, func(), error) {
func (fs *AzureBlobFs) 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
@@ -273,6 +279,10 @@ func (fs *AzureBlobFs) 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
@@ -832,7 +842,7 @@ func (fs *AzureBlobFs) setConfigDefaults() {
}
func (fs *AzureBlobFs) mkdirInternal(name string) error {
_, w, _, err := fs.Create(name, -1)
_, w, _, err := fs.Create(name, -1, 0)
if err != nil {
return err
}