Bug #53573
closedFormDataTraverser::getFieldValueRecursive() might return NULL
100%
Description
This can cause WARNINGS in LanguageService, because of the calls in FormEngine::getPlaceholderValue.
Either check the $value in FormEngine::getPlaceholderAttribute() or ensure getFieldValueRecursive() behaves like documented and not returning NULL.
Updated by Oliver Hader over 10 years ago
- Target version changed from next-patchlevel to 6.2.0
Updated by Oliver Hader over 10 years ago
- Status changed from New to Needs Feedback
Can you please add a proper testplan or complete stack trace for that? Which PHP version are you using?
Updated by Markus Klein over 10 years ago
Testplan by reading:
Code in FormEngine::getPlaceholderAttribute() line 6493:
$value = $this->getPlaceholderValue($table, $field, $config, $row); // Cleanup the string and support 'LLL:' $value = htmlspecialchars(trim($this->sL($value)));
Call stack:
1: FormEngine::getPlaceholderAttribute()
2: FormEngine::getPlaceholderValue() -> called in FormEngine:6493
3: FormDataTraverser::getTraversedFieldValue() -> called in FormEngine:6519
4: FormDataTraverser::getFieldValueRecursive() -> called in FormDataTraverser:110
Since getFieldValueRecursive() might return NULL, $value in the code above can be NULL, therefore a call to $this->sL(NULL) can happen, which furthermore calls $GLOBALS['LANG']->sL($x), which access some array with $theArray[...][$x] -> PHP Warning
Besides that getFieldValueRecursive() should have NULL in the @return clause.
Updated by Oliver Hader over 10 years ago
- Assignee deleted (
Oliver Hader) - Priority changed from Must have to Could have
- Is Regression changed from Yes to No
Ok, so this is highly theoretical and there is way to reproduce your bug-report. Lets start nitpicking:
- the documentation on FormDataTraverser::getTraversedFieldValue needs to be modified
- this method shall return data/values from database, thus "mixed" would be a proper return value there, since there is no casting to string either
- thus everything that can be interpreted as TRUE will be returned as delivered by the (individual) DatabaseConnection
- the "undefined index" thingy is a PHP notice on PHP 5.3, that's why I asked for your PHP version, maybe it's different there
- but I guess it's still just a PHP notice and not a warning and we already have a lots of notices in the whole system
Thus, I could easily close this report as "cannot reproduce" or just change the documentation.
Since there are lots of other calls to $LANG->sL() with NULL values and undefined index earlier in the whole system, I kindly ask you to not create reports and also not to assign them to me directly.
Updated by Oliver Hader over 10 years ago
- Subject changed from FormDataTraverser:: getFieldValueRecursive() might return NULL to FormDataTraverser::getFieldValueRecursive() might return NULL
Updated by Gerrit Code Review over 10 years ago
- Status changed from Needs Feedback to Under Review
Patch set 1 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/25366
Updated by Oliver Hader over 10 years ago
- Status changed from Under Review to Resolved
- % Done changed from 0 to 100
Applied in changeset be3712e8054c340a9fb29394cd01c214bb035d9c.
Updated by Riccardo De Contardi over 6 years ago
- Status changed from Resolved to Closed