Seditio Source
Root |
./othercms/dle15_0/upload/engine/classes/composer/vendor/league/flysystem/src/WhitespacePathNormalizer.php
<?php

declare(strict_types=1);

namespace
League\Flysystem;

class
WhitespacePathNormalizer implements PathNormalizer
{
    public function
normalizePath(string $path): string
   
{
       
$path = str_replace('\\', '/', $path);
       
$this->rejectFunkyWhiteSpace($path);

        return
$this->normalizeRelativePath($path);
    }

    private function
rejectFunkyWhiteSpace(string $path): void
   
{
        if (
preg_match('#\p{C}+#u', $path)) {
            throw
CorruptedPathDetected::forPath($path);
        }
    }

    private function
normalizeRelativePath(string $path): string
   
{
       
$parts = [];

        foreach (
explode('/', $path) as $part) {
            switch (
$part) {
                case
'':
                case
'.':
                    break;

                case
'..':
                    if (empty(
$parts)) {
                        throw
PathTraversalDetected::forPath($path);
                    }
                   
array_pop($parts);
                    break;

                default:
                   
$parts[] = $part;
                    break;
            }
        }

        return
implode('/', $parts);
    }
}