Browse Source

Replace username as well if it looks like a github oauth token

Jordi Boggiano 8 years ago
parent
commit
e3ae45fa12
2 changed files with 14 additions and 2 deletions
  1. 7 1
      src/Composer/Util/Git.php
  2. 7 1
      src/Composer/Util/ProcessExecutor.php

+ 7 - 1
src/Composer/Util/Git.php

@@ -251,7 +251,13 @@ class Git
 
     public static function sanitizeUrl($message)
     {
-        return preg_replace('{://([^@]+?):.+?@}', '://$1:***@', $message);
+        return preg_replace_callback('{://(?P<user>[^@]+?):(?P<password>.+?)@}', function ($m) {
+            if (preg_match('{^[a-f0-9]{12,}$}', $m[1])) {
+                return '://***:***@';
+            }
+
+            return '://'.$m[1].':***@';
+        }, $message);
     }
 
     private function throwException($message, $url)

+ 7 - 1
src/Composer/Util/ProcessExecutor.php

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