aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorredmatrix <git@macgirvin.com>2016-03-30 16:33:23 -0700
committerredmatrix <git@macgirvin.com>2016-03-30 16:33:23 -0700
commit6a6dbec0335c43137e4dc5e84b5b188edc57ba10 (patch)
tree4a329ee9050be11da2ffc4a75b5d3002f35d3ecd /include
parent08461c7049ee5c9788e815537b540b9987a5eace (diff)
downloadvolse-hubzilla-6a6dbec0335c43137e4dc5e84b5b188edc57ba10.tar.gz
volse-hubzilla-6a6dbec0335c43137e4dc5e84b5b188edc57ba10.tar.bz2
volse-hubzilla-6a6dbec0335c43137e4dc5e84b5b188edc57ba10.zip
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.
Diffstat (limited to 'include')
-rw-r--r--include/config.php11
-rw-r--r--include/crypto.php11
-rw-r--r--include/text.php19
3 files changed, 31 insertions, 10 deletions
diff --git a/include/config.php b/include/config.php
index 51d4e99ac..28a72f7ea 100644
--- a/include/config.php
+++ b/include/config.php
@@ -287,6 +287,17 @@ function get_pconfig($uid, $family, $key, $instore = false) {
function set_pconfig($uid, $family, $key, $value) {
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
$dbvalue = ((is_array($value)) ? serialize($value) : $value);
$dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
diff --git a/include/crypto.php b/include/crypto.php
index d82ee5114..d636c6848 100644
--- a/include/crypto.php
+++ b/include/crypto.php
@@ -25,16 +25,7 @@ function rsa_verify($data,$sig,$key,$alg = 'sha256') {
if(! $verify) {
while($msg = openssl_error_string())
logger('openssl_verify: ' . $msg,LOGGER_NORMAL,LOG_ERR);
- logger('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);
- }
- }
- }
+ btlogger('openssl_verify: key: ' . $key, LOGGER_DEBUG, LOG_ERR);
}
return $verify;
diff --git a/include/text.php b/include/text.php
index 621f4cf93..8e822532e 100644
--- a/include/text.php
+++ b/include/text.php
@@ -569,6 +569,25 @@ function logger($msg, $level = LOGGER_NORMAL, $priority = LOG_INFO) {
@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) {
$parr = array(
LOG_EMERG => 'LOG_EMERG',