Merge pull request #7013 from owncloud/dont_write_passwords_to_log
wrap stat() call in a try/catch block
This commit is contained in:
commit
c0aeaf9ec0
|
@ -504,11 +504,12 @@ class OC {
|
||||||
|
|
||||||
if (!defined('PHPUNIT_RUN')) {
|
if (!defined('PHPUNIT_RUN')) {
|
||||||
if (defined('DEBUG') and DEBUG) {
|
if (defined('DEBUG') and DEBUG) {
|
||||||
|
OC\Log\ErrorHandler::register(true);
|
||||||
set_exception_handler(array('OC_Template', 'printExceptionErrorPage'));
|
set_exception_handler(array('OC_Template', 'printExceptionErrorPage'));
|
||||||
} else {
|
} else {
|
||||||
OC\Log\ErrorHandler::register();
|
OC\Log\ErrorHandler::register();
|
||||||
OC\Log\ErrorHandler::setLogger(OC_Log::$object);
|
|
||||||
}
|
}
|
||||||
|
OC\Log\ErrorHandler::setLogger(OC_Log::$object);
|
||||||
}
|
}
|
||||||
|
|
||||||
// register the stream wrappers
|
// register the stream wrappers
|
||||||
|
|
|
@ -14,10 +14,23 @@ class ErrorHandler {
|
||||||
/** @var LoggerInterface */
|
/** @var LoggerInterface */
|
||||||
private static $logger;
|
private static $logger;
|
||||||
|
|
||||||
public static function register() {
|
/**
|
||||||
|
* @brief remove password in URLs
|
||||||
|
* @param string $msg
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
private static function removePassword($msg) {
|
||||||
|
return preg_replace('/\/\/(.*):(.*)@/', '//xxx:xxx@', $msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function register($debug=false) {
|
||||||
$handler = new ErrorHandler();
|
$handler = new ErrorHandler();
|
||||||
|
|
||||||
|
if ($debug) {
|
||||||
|
set_error_handler(array($handler, 'onAll'), E_ALL);
|
||||||
|
} else {
|
||||||
set_error_handler(array($handler, 'onError'));
|
set_error_handler(array($handler, 'onError'));
|
||||||
|
}
|
||||||
register_shutdown_function(array($handler, 'onShutdown'));
|
register_shutdown_function(array($handler, 'onShutdown'));
|
||||||
set_exception_handler(array($handler, 'onException'));
|
set_exception_handler(array($handler, 'onException'));
|
||||||
}
|
}
|
||||||
|
@ -32,14 +45,14 @@ class ErrorHandler {
|
||||||
if($error && self::$logger) {
|
if($error && self::$logger) {
|
||||||
//ob_end_clean();
|
//ob_end_clean();
|
||||||
$msg = $error['message'] . ' at ' . $error['file'] . '#' . $error['line'];
|
$msg = $error['message'] . ' at ' . $error['file'] . '#' . $error['line'];
|
||||||
self::$logger->critical($msg, array('app' => 'PHP'));
|
self::$logger->critical(self::removePassword($msg), array('app' => 'PHP'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Uncaught exception handler
|
// Uncaught exception handler
|
||||||
public static function onException($exception) {
|
public static function onException($exception) {
|
||||||
$msg = $exception->getMessage() . ' at ' . $exception->getFile() . '#' . $exception->getLine();
|
$msg = $exception->getMessage() . ' at ' . $exception->getFile() . '#' . $exception->getLine();
|
||||||
self::$logger->critical($msg, array('app' => 'PHP'));
|
self::$logger->critical(self::removePassword($msg), array('app' => 'PHP'));
|
||||||
}
|
}
|
||||||
|
|
||||||
//Recoverable errors handler
|
//Recoverable errors handler
|
||||||
|
@ -48,7 +61,15 @@ class ErrorHandler {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$msg = $message . ' at ' . $file . '#' . $line;
|
$msg = $message . ' at ' . $file . '#' . $line;
|
||||||
self::$logger->warning($msg, array('app' => 'PHP'));
|
self::$logger->error(self::removePassword($msg), array('app' => 'PHP'));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Recoverable handler which catch all errors, warnings and notices
|
||||||
|
public static function onAll($number, $message, $file, $line) {
|
||||||
|
$msg = $message . ' at ' . $file . '#' . $line;
|
||||||
|
self::$logger->debug(self::removePassword($msg), array('app' => 'PHP'));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,7 +69,6 @@ class OC_Log_Owncloud {
|
||||||
}
|
}
|
||||||
$time = new DateTime(null, $timezone);
|
$time = new DateTime(null, $timezone);
|
||||||
// remove username/passswords from URLs before writing the to the log file
|
// remove username/passswords from URLs before writing the to the log file
|
||||||
$message = preg_replace('/\/\/(.*):(.*)@/', '//xxx:xxx@', $message);
|
|
||||||
$entry=array('app'=>$app, 'message'=>$message, 'level'=>$level, 'time'=> $time->format($format));
|
$entry=array('app'=>$app, 'message'=>$message, 'level'=>$level, 'time'=> $time->format($format));
|
||||||
$entry = json_encode($entry);
|
$entry = json_encode($entry);
|
||||||
$handle = @fopen(self::$logFile, 'a');
|
$handle = @fopen(self::$logFile, 'a');
|
||||||
|
|
Loading…
Reference in New Issue