mirror of
https://github.com/mickael-kerjean/filestash
synced 2025-12-06 16:32:31 +01:00
20 lines
458 B
Go
20 lines
458 B
Go
package common
|
|
|
|
import (
|
|
"errors"
|
|
"io/fs"
|
|
"os"
|
|
"syscall"
|
|
)
|
|
|
|
func SafeOsOpenFile(path string, flag int, perm os.FileMode) (*os.File, error) {
|
|
if err := safePath(path); err != nil {
|
|
Log.Debug("common::files safeOsOpenFile err[%s] path[%s]", err.Error(), path)
|
|
return nil, ErrFilesystemError
|
|
}
|
|
f, err := os.OpenFile(path, flag|syscall.O_NOFOLLOW, perm)
|
|
if err != nil && errors.Is(err, fs.ErrNotExist) {
|
|
return nil, ErrNotFound
|
|
}
|
|
return f, err
|
|
}
|