[BUGFIX] Use EXEC_TIME for sys_log entry instead of time() 33/52833/3
authorHelmut Hummel <typo3@helhum.io>
Wed, 17 May 2017 12:11:04 +0000 (14:11 +0200)
committerHelmut Hummel <typo3@helhum.io>
Thu, 18 May 2017 10:39:47 +0000 (12:39 +0200)
DataHandler does a lookup in sys_log table after it performed
its operations to find relevant error entries for the current request.

It determines relevance by looking for entries with the same
timestamp as $GLOBALS['EXEC_TIME'].

However error log entries are written using time(). Now if the
DataHandler operations take longer than one second, or the log entry
is written directly before a next tick, it can happen, that errors
will not be detected during the lookup process.

Since such errors are exposed to the user, it can happen that an operation
fails, but the users will not be notified.

Fix this by using $GLOBALS['EXEC_TIME'] when writing the log entries.

Resolves: #81244
Releases: master, 8.7, 7.6
Change-Id: Ic22b5f51ba4e10991be4a59ae28cb1f77a91c71e
Reviewed-on: https://review.typo3.org/52833
Reviewed-by: Helmut Hummel <typo3@helhum.io>
Tested-by: Helmut Hummel <typo3@helhum.io>
typo3/sysext/core/Classes/Authentication/BackendUserAuthentication.php

index d0e5ee6..eb736d4 100644 (file)
@@ -2305,7 +2305,7 @@ class BackendUserAuthentication extends AbstractUserAuthentication
             'tablename' => $tablename,
             'recuid' => (int)$recuid,
             'IP' => (string)GeneralUtility::getIndpEnv('REMOTE_ADDR'),
-            'tstamp' => time(),
+            'tstamp' => $GLOBALS['EXEC_TIME'] ?? time(),
             'event_pid' => (int)$event_pid,
             'NEWid' => $NEWid,
             'workspace' => $this->workspace