Вход Регистрация
Файл: vendor/league/flysystem/src/WhitespacePathNormalizer.php
Строк: 21
<?php

declare(strict_types=1);

namespace 
LeagueFlysystem;

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);
    }
}
Онлайн: 0
Реклама