|  | 
| 21 | 21 | 
 | 
| 22 | 22 | namespace OC\Log; | 
| 23 | 23 | 
 | 
|  | 24 | +use OC\Core\Controller\SetupController; | 
| 24 | 25 | use OC\HintException; | 
|  | 26 | +use OC\Setup; | 
| 25 | 27 | 
 | 
| 26 | 28 | class ExceptionSerializer { | 
| 27 | 29 | 	const methodsWithSensitiveParameters = [ | 
| @@ -76,24 +78,36 @@ class ExceptionSerializer { | 
| 76 | 78 | 
 | 
| 77 | 79 | 		// files_external: UserStoragesController | 
| 78 | 80 | 		'update', | 
|  | 81 | +	]; | 
| 79 | 82 | 
 | 
| 80 |  | -		// Setup | 
| 81 |  | -		'install', | 
| 82 |  | - | 
| 83 |  | -		// SetupController | 
| 84 |  | -		'run', | 
| 85 |  | -		'display', | 
| 86 |  | -		'loadAutoConfig', | 
|  | 83 | +	const methodsWithSensitiveParametersByClass = [ | 
|  | 84 | +		SetupController::class => [ | 
|  | 85 | +			'run', | 
|  | 86 | +			'display', | 
|  | 87 | +			'loadAutoConfig', | 
|  | 88 | +		], | 
|  | 89 | +		Setup::class => [ | 
|  | 90 | +			'install' | 
|  | 91 | +		] | 
| 87 | 92 | 	]; | 
| 88 | 93 | 
 | 
|  | 94 | +	private function editTrace(array &$sensitiveValues, array $traceLine): array { | 
|  | 95 | +		$sensitiveValues = array_merge($sensitiveValues, $traceLine['args']); | 
|  | 96 | +		$traceLine['args'] = ['*** sensitive parameters replaced ***']; | 
|  | 97 | +		return $traceLine; | 
|  | 98 | +	} | 
|  | 99 | + | 
| 89 | 100 | 	private function filterTrace(array $trace) { | 
| 90 | 101 | 		$sensitiveValues = []; | 
| 91 | 102 | 		$trace = array_map(function (array $traceLine) use (&$sensitiveValues) { | 
|  | 103 | +			$className = $traceLine['class']; | 
|  | 104 | +			if (isset(self::methodsWithSensitiveParametersByClass[$className]) | 
|  | 105 | +				&& in_array($traceLine['function'], self::methodsWithSensitiveParametersByClass[$className], true)) { | 
|  | 106 | +				return $this->editTrace($sensitiveValues, $traceLine); | 
|  | 107 | +			} | 
| 92 | 108 | 			foreach (self::methodsWithSensitiveParameters as $sensitiveMethod) { | 
| 93 | 109 | 				if (strpos($traceLine['function'], $sensitiveMethod) !== false) { | 
| 94 |  | -					$sensitiveValues = array_merge($sensitiveValues, $traceLine['args']); | 
| 95 |  | -					$traceLine['args'] = ['*** sensitive parameters replaced ***']; | 
| 96 |  | -					return $traceLine; | 
|  | 110 | +					return $this->editTrace($sensitiveValues, $traceLine); | 
| 97 | 111 | 				} | 
| 98 | 112 | 			} | 
| 99 | 113 | 			return $traceLine; | 
|  | 
0 commit comments