소스 검색

Merge pull request #5723 from alcohol/user-password-mask-patch

User password masking patch
Jordi Boggiano 8 년 전
부모
커밋
d7f821434d
2개의 변경된 파일10개의 추가작업 그리고 4개의 파일을 삭제
  1. 3 3
      src/Composer/Util/ProcessExecutor.php
  2. 7 1
      tests/Composer/Test/Util/ProcessExecutorTest.php

+ 3 - 3
src/Composer/Util/ProcessExecutor.php

@@ -44,12 +44,12 @@ class ProcessExecutor
     public function execute($command, &$output = null, $cwd = null)
     {
         if ($this->io && $this->io->isDebug()) {
-            $safeCommand = preg_replace_callback('{(://)(?P<user>[^:/\s]+):(?P<password>[^@\s/]+)}i', function ($m) {
+            $safeCommand = preg_replace_callback('{://(?P<user>[^:/\s]+):(?P<password>[^@\s/]+)@}i', function ($m) {
                 if (preg_match('{^[a-f0-9]{12,}$}', $m['user'])) {
-                    return '://***:***';
+                    return '://***:***@';
                 }
 
-                return '://'.$m['user'].':***';
+                return '://'.$m['user'].':***@';
             }, $command);
             $this->io->writeError('Executing command ('.($cwd ?: 'CWD').'): '.$safeCommand);
         }

+ 7 - 1
tests/Composer/Test/Util/ProcessExecutorTest.php

@@ -54,10 +54,16 @@ class ProcessExecutorTest extends TestCase
     {
         $process = new ProcessExecutor($buffer = new BufferIO('', StreamOutput::VERBOSITY_DEBUG));
         $process->execute('echo https://foo:bar@example.org/ && echo http://foo@example.org && echo http://abcdef1234567890234578:x-oauth-token@github.com/', $output);
-
         $this->assertEquals('Executing command (CWD): echo https://foo:***@example.org/ && echo http://foo@example.org && echo http://***:***@github.com/', trim($buffer->getOutput()));
     }
 
+    public function testDoesntHidePorts()
+    {
+        $process = new ProcessExecutor($buffer = new BufferIO('', StreamOutput::VERBOSITY_DEBUG));
+        $process->execute('echo https://localhost:1234/', $output);
+        $this->assertEquals('Executing command (CWD): echo https://localhost:1234/', trim($buffer->getOutput()));
+    }
+
     public function testSplitLines()
     {
         $process = new ProcessExecutor;