Bug #88118

Loose reference while remove items from a tree based on a callback in PageTreeRepository

Added by Steve Lenz 7 months ago. Updated 7 months ago.

Status:
Under Review
Priority:
Must have
Assignee:
Category:
Authentication
Target version:
-
Start date:
2019-04-09
Due date:
% Done:

0%

TYPO3 Version:
9
PHP Version:
7.2
Tags:
Complexity:
Is Regression:
Sprint Focus:

Description

Hook "$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauthgroup.php']['calcPerms']" in BackendUserAuthentication has no effect.

The bug is in PageTreeRepository::applyCallbackToChildren in line 145:

/**
     * Removes items from a tree based on a callback, usually used for permission checks
     *
     * @param array $tree
     * @param callable $callback
     */
    protected function applyCallbackToChildren(array &$tree, callable $callback)
    {
        if (!isset($tree['_children'])) {
            return;
        }
        foreach ($tree['_children'] as $k => $childPage) {
            if (!call_user_func_array($callback, [$childPage])) {
                unset($tree['_children'][$k]);
                continue;
            }
            $this->applyCallbackToChildren($childPage, $callback);
        }
    }

The unset does not effect on _children array, because the iteration ignores the reference.

The solution to set reference for $childPage:

foreach ($tree['_children'] as $k => &$childPage) {
...
}

Related issues

Duplicated by TYPO3 Core - Bug #88257: Pages below first menu level visible in pagetree even if the backend user has no permissions Closed 2019-05-02

History

#1 Updated by Gerrit Code Review 7 months ago

  • Status changed from New 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/c/Packages/TYPO3.CMS/+/60425

#3 Updated by Oliver Hader 6 months ago

  • Duplicated by Bug #88257: Pages below first menu level visible in pagetree even if the backend user has no permissions added

Also available in: Atom PDF