Bug #42921
closed
t3lib_div->trimExplode fills database table sys_log
Added by Christian Finkemeier about 12 years ago.
Updated about 6 years ago.
Description
There are several uses of t3lib_div::trimExplode with wrong parameter types.
The second parameter must be a string, otherwise a php warning is stored to the sys_log database table, e.g. in tslib_fe::initFEuser (line 623) where the argument is null or in t3lib_userAuth::getAuthInfoArray (line 1299) where the argument is an integer...
This could be easily resolved by mapping the variable $string to string like this:
public static function trimExplode($delim, $string, $removeEmptyValues = FALSE, $limit = 0) {
$explodedValues = explode($delim, (string)$string);
best regards
Christian
Hi Christian,
can you please post your PHP settings. Did you activate STRICT mode?
Usually the implicit conversion from integer to string should not issue a PHP warning.
- Category set to Miscellaneous
- Status changed from New to Needs Feedback
My PHP settings for error_reporting is "E_ALL & ~E_DEPRECATED"
That should be ok.
Can you please post the complete error message from the log and maybe a stack trace?
This is the error message from sys_log:
Core: Error handler (FE): PHP Warning: explode() expects parameter 2 to be string, null given in /typo3_src-4.5.22/t3lib/class.t3lib_div.php on line 1950
And this is an backtrace from t3lib_div::trimExplode:
require(YPO3/typo3_src-4.5.22/typo3/sysext/cms/tslib/index_ts.php),YPO3/typo3_src-4.5.22/index.php#83 // tslib_fe->initFEuser#260 // t3lib_DB->cleanIntList#623 // t3lib_div::intExplode#856 // t3lib_div::trimExplode#1913
- Status changed from Needs Feedback to New
- Status changed from New to Under Review
- Status changed from Under Review to Resolved
- % Done changed from 0 to 100
Thanks for updating tslib_fe::initFEuser. But you forgot t3lib_userAuth::getAuthInfoArray :-)
It should be
@@ -1282,20 1282,24 @@ t3lib_userAuth::getAuthInfoArray
function getAuthInfoArray() {
$authInfo = array();
$authInfo['loginType'] = $this->loginType;
$authInfo['refInfo'] = parse_url(t3lib_div::getIndpEnv('HTTP_REFERER'));
$authInfo['HTTP_HOST'] = t3lib_div::getIndpEnv('HTTP_HOST');
$authInfo['REMOTE_ADDR'] = t3lib_div::getIndpEnv('REMOTE_ADDR');
$authInfo['REMOTE_HOST'] = t3lib_div::getIndpEnv('REMOTE_HOST');
$authInfo['security_level'] = $this->security_level;
$authInfo['showHiddenRecords'] = $this->showHiddenRecords;
// can be overidden in localconf by SVCONF:
$authInfo['db_user']['table'] = $this->user_table;
$authInfo['db_user']['userid_column'] = $this->userid_column;
$authInfo['db_user']['username_column'] = $this->username_column;
$authInfo['db_user']['userident_column'] = $this->userident_column;
$authInfo['db_user']['usergroup_column'] = $this->usergroup_column;
$authInfo['db_user']['enable_clause'] = $this->user_where_clause();
- $authInfo['db_user']['checkPidList'] = $this->checkPid ? $this->checkPid_value : '';
+ $authInfo['db_user']['checkPidList'] = ($this->checkPid && $this->checkPid_value)
+ ? $this->checkPid_value
+ : '';
- $authInfo['db_user']['check_pid_clause'] = $this->checkPid ? ' AND pid IN (' . $GLOBALS['TYPO3_DB']->cleanIntList($authInfo['db_user']['checkPidList']) . ')' : '';
+ $authInfo['db_user']['check_pid_clause'] = ($this->checkPid && $this->checkPid_value)
+ ? ' AND pid IN (' . $GLOBALS['TYPO3_DB']->cleanIntList($authInfo['db_user']['checkPidList']) . ')'
+ : '';
$authInfo['db_groups']['table'] = $this->usergroup_table;
return $authInfo;
}
@Christian: Indeed, I forgot about it.
Could you please file another forge issue and add this as related.
Feel free to add me as watcher as well.
Thanks.
- Status changed from Resolved to Closed
Also available in: Atom
PDF