Bug #53573

FormDataTraverser::getFieldValueRecursive() might return NULL

Added by Markus Klein over 1 year ago. Updated over 1 year ago.

Status:Resolved Start date:2013-11-12
Priority:Could have Due date:
Assigned To:- % Done:

100%

Category:Backend API Spent time: -
Target version:6.2.0
TYPO3 Version:6.2 Is Regression:No
PHP Version: Sprint Focus:
Complexity:easy

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.


Related issues

related to Core - Bug #52630: PlaceHolder Feature in TCEforms only works on first relat... Resolved 2013-11-13 2013-11-13
related to Core - Bug #53594: No placeholder attribute in backend forms Resolved 2013-11-13

Associated revisions

Revision be3712e8
Added by Oliver Hader over 1 year ago

[TASK] FormDataTraverser::getFieldValueRecursive() might return NULL

FormDataTraverser::getFieldValueRecursive() might return NULL or
any other type as well, as it has been provided by the database.
Thus, PHPdoc comments are modified to reflect the possible return
values as well.

Fixes: #53573
Releases: 6.2
Change-Id: Idcdbe21ccdcf694b8ceb5ecf0b4a192ad51c4871
Reviewed-on: https://review.typo3.org/25366
Reviewed-by: Markus Klein
Tested-by: Markus Klein
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn

History

#1 Updated by Oliver Hader over 1 year ago

  • Target version changed from next-patchlevel to 6.2.0

#2 Updated by Oliver Hader over 1 year 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?

#3 Updated by Markus Klein over 1 year 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.

#4 Updated by Oliver Hader over 1 year ago

  • Assigned To 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.

#5 Updated by Oliver Hader over 1 year ago

  • Subject changed from FormDataTraverser:: getFieldValueRecursive() might return NULL to FormDataTraverser::getFieldValueRecursive() might return NULL

#6 Updated by Gerrit Code Review over 1 year 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

#7 Updated by Oliver Hader over 1 year ago

  • Status changed from Under Review to Resolved
  • % Done changed from 0 to 100

Also available in: Atom PDF