remove args from logging of common-spelled methods dependent on class

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
This commit is contained in:
Arthur Schiwon 2019-05-07 00:19:48 +02:00 committed by Backportbot
parent 7886642979
commit b70053be25
1 changed files with 25 additions and 11 deletions

View File

@ -21,7 +21,9 @@
namespace OC\Log;
use OC\Core\Controller\SetupController;
use OC\HintException;
use OC\Setup;
class ExceptionSerializer {
const methodsWithSensitiveParameters = [
@ -76,24 +78,36 @@ class ExceptionSerializer {
// files_external: UserStoragesController
'update',
// Setup
'install',
// SetupController
'run',
'display',
'loadAutoConfig',
];
const methodsWithSensitiveParametersByClass = [
SetupController::class => [
'run',
'display',
'loadAutoConfig',
],
Setup::class => [
'install'
]
];
private function editTrace(array &$sensitiveValues, array $traceLine): array {
$sensitiveValues = array_merge($sensitiveValues, $traceLine['args']);
$traceLine['args'] = ['*** sensitive parameters replaced ***'];
return $traceLine;
}
private function filterTrace(array $trace) {
$sensitiveValues = [];
$trace = array_map(function (array $traceLine) use (&$sensitiveValues) {
$className = $traceLine['class'];
if (isset(self::methodsWithSensitiveParametersByClass[$className])
&& in_array($traceLine['function'], self::methodsWithSensitiveParametersByClass[$className], true)) {
return $this->editTrace($sensitiveValues, $traceLine);
}
foreach (self::methodsWithSensitiveParameters as $sensitiveMethod) {
if (strpos($traceLine['function'], $sensitiveMethod) !== false) {
$sensitiveValues = array_merge($sensitiveValues, $traceLine['args']);
$traceLine['args'] = ['*** sensitive parameters replaced ***'];
return $traceLine;
return $this->editTrace($sensitiveValues, $traceLine);
}
}
return $traceLine;