public static string PreparePath(string objectName, FilesystemContext context)
        {
            if (objectName is null)
            {
                throw new ArgumentNullException(nameof(objectName));
            }

            if (context is null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (Path.DirectorySeparatorChar != '/')
            {
                objectName = objectName.Replace('/', Path.DirectorySeparatorChar);
            }

            var path = context.FilePath + Path.DirectorySeparatorChar + objectName;

            if (Path.GetFullPath(path) != path)
            {
                throw new ArgumentOutOfRangeException(nameof(path), path, FormattableString.Invariant($"The object name \"{objectName}\" produces an insecure path \"{path}\""));
            }

            return(path);
        }
Exemple #2
0
        public FilesystemObjectWriterLocker(FilesystemContext context, string lockName)
        {
            _context = context ?? throw new ArgumentNullException(nameof(context));
            if (!LockNameFilter.IsMatch(lockName))
            {
                throw new ArgumentException("Invalid filesystem lock name.", nameof(lockName));
            }

            _lockName = lockName;
        }
Exemple #3
0
 public FilesystemObjectReader(FilesystemContext context)
 {
     _context = context ?? throw new ArgumentNullException(nameof(context));
 }
 public FilesystemObjectWriter(FilesystemContext context, FilesystemContext?recycleContext)
 {
     _context        = context ?? throw new ArgumentNullException(nameof(context));
     _recycleContext = recycleContext;
 }