issue #319 - NOTE: this does not fix the issue, it only reports it and continues. We need to examine any logger statements that contain 'stack:' as a result of reporting this issue and find and fix the original problem - which is that set_pconfig is being called without a valid $uid. I'm worried that since we will now continue on without throwing a PHP error that nobody will ever notice or find the problem that is causing this.
This commit is contained in:
parent
08461c7049
commit
6a6dbec033
@ -287,6 +287,17 @@ function get_pconfig($uid, $family, $key, $instore = false) {
|
|||||||
function set_pconfig($uid, $family, $key, $value) {
|
function set_pconfig($uid, $family, $key, $value) {
|
||||||
global $a;
|
global $a;
|
||||||
|
|
||||||
|
// this catches subtle errors where this function has been called
|
||||||
|
// with local_channel() when not logged in (which returns false)
|
||||||
|
// and throws an error in array_key_exists below.
|
||||||
|
// we provide a function backtrace in the logs so that we can find
|
||||||
|
// and fix the calling function.
|
||||||
|
|
||||||
|
if($uid === false) {
|
||||||
|
btlogger('UID is FALSE!', LOGGER_NORMAL, LOG_ERR);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// manage array value
|
// manage array value
|
||||||
$dbvalue = ((is_array($value)) ? serialize($value) : $value);
|
$dbvalue = ((is_array($value)) ? serialize($value) : $value);
|
||||||
$dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
|
$dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
|
||||||
|
@ -25,16 +25,7 @@ function rsa_verify($data,$sig,$key,$alg = 'sha256') {
|
|||||||
if(! $verify) {
|
if(! $verify) {
|
||||||
while($msg = openssl_error_string())
|
while($msg = openssl_error_string())
|
||||||
logger('openssl_verify: ' . $msg,LOGGER_NORMAL,LOG_ERR);
|
logger('openssl_verify: ' . $msg,LOGGER_NORMAL,LOG_ERR);
|
||||||
logger('openssl_verify: key: ' . $key, LOGGER_DEBUG, LOG_ERR);
|
btlogger('openssl_verify: key: ' . $key, LOGGER_DEBUG, LOG_ERR);
|
||||||
// provide a backtrace so that we can debug key issues
|
|
||||||
if(version_compare(PHP_VERSION, '5.4.0') >= 0) {
|
|
||||||
$stack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
|
|
||||||
if($stack) {
|
|
||||||
foreach($stack as $s) {
|
|
||||||
logger('stack: ' . basename($s['file']) . ':' . $s['line'] . ':' . $s['function'] . '()',LOGGER_DEBUG,LOG_ERR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $verify;
|
return $verify;
|
||||||
|
@ -569,6 +569,25 @@ function logger($msg, $level = LOGGER_NORMAL, $priority = LOG_INFO) {
|
|||||||
@file_put_contents($pluginfo['filename'], $pluginfo['message'], FILE_APPEND);
|
@file_put_contents($pluginfo['filename'], $pluginfo['message'], FILE_APPEND);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// like logger() but with a function backtrace to pinpoint certain classes
|
||||||
|
// of problems which show up deep in the calling stack
|
||||||
|
|
||||||
|
|
||||||
|
function btlogger($msg, $level = LOGGER_NORMAL, $priority = LOG_INFO) {
|
||||||
|
|
||||||
|
logger($msg, $level, $priority);
|
||||||
|
if(version_compare(PHP_VERSION, '5.4.0') >= 0) {
|
||||||
|
$stack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
|
||||||
|
if($stack) {
|
||||||
|
for($x = 1; $x < count($stack); $x ++) {
|
||||||
|
logger('stack: ' . basename($stack[$x]['file']) . ':' . $stack[$x]['line'] . ':' . $stack[$x]['function'] . '()',$level, $priority);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function log_priority_str($priority) {
|
function log_priority_str($priority) {
|
||||||
$parr = array(
|
$parr = array(
|
||||||
LOG_EMERG => 'LOG_EMERG',
|
LOG_EMERG => 'LOG_EMERG',
|
||||||
|
@ -1 +1 @@
|
|||||||
2016-03-29.1350H
|
2016-03-30.1351H
|
||||||
|
Reference in New Issue
Block a user