From 2c3457399e472b23f369b675c6cee3471ecddb7a Mon Sep 17 00:00:00 2001
From: Max Kellermann <noreply@example.com>
Date: Mon, 6 Feb 2023 12:14:30 +0000
Subject: [PATCH] [TASK] sysext/install/Check: check PHP extension "tokenizer"

Various libraries incorporated by TYPO3 use the "token_get_all"
function, crashing PHP execution if the "tokenizer" extension is not
loaded.

The system environment pre-check now checks the presence of the PHP
extension. Also, Composer now requires the presence of the
`ext-tokenizer` module.

Releases: main
Resolves: #99842
Change-Id: I57cb6244d8eb3d8364eae5d23430370e60fd9658
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/77711
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: core-ci <typo3@b13.com>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Markus Klein <markus.klein@typo3.org>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Benni Mack <benni@typo3.org>
---
 composer.json                                            | 1 +
 composer.lock                                            | 3 ++-
 typo3/sysext/core/composer.json                          | 1 +
 typo3/sysext/install/Classes/SystemEnvironment/Check.php | 1 +
 4 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/composer.json b/composer.json
index b574959656ce..dc53aa8295ab 100644
--- a/composer.json
+++ b/composer.json
@@ -45,6 +45,7 @@
 		"ext-mbstring": "*",
 		"ext-pcre": "*",
 		"ext-session": "*",
+		"ext-tokenizer": "*",
 		"ext-xml": "*",
 		"composer-runtime-api": "^2.1",
 		"bacon/bacon-qr-code": "^2.0.7",
diff --git a/composer.lock b/composer.lock
index f2492b51e7e7..38de88a13332 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "95c552d41acec33b145ec7bea700127a",
+    "content-hash": "2b08a93fffec94932c4952ce844ef7f3",
     "packages": [
         {
             "name": "bacon/bacon-qr-code",
@@ -8980,6 +8980,7 @@
         "ext-mbstring": "*",
         "ext-pcre": "*",
         "ext-session": "*",
+        "ext-tokenizer": "*",
         "ext-xml": "*",
         "composer-runtime-api": "^2.1"
     },
diff --git a/typo3/sysext/core/composer.json b/typo3/sysext/core/composer.json
index 00dad5132778..34953af2373a 100644
--- a/typo3/sysext/core/composer.json
+++ b/typo3/sysext/core/composer.json
@@ -28,6 +28,7 @@
 		"ext-mbstring": "*",
 		"ext-pcre": "*",
 		"ext-session": "*",
+		"ext-tokenizer": "*",
 		"ext-xml": "*",
 		"composer-runtime-api": "^2.1",
 		"bacon/bacon-qr-code": "^2.0.7",
diff --git a/typo3/sysext/install/Classes/SystemEnvironment/Check.php b/typo3/sysext/install/Classes/SystemEnvironment/Check.php
index 1da1b695372a..016a9297d537 100644
--- a/typo3/sysext/install/Classes/SystemEnvironment/Check.php
+++ b/typo3/sysext/install/Classes/SystemEnvironment/Check.php
@@ -74,6 +74,7 @@ class Check implements CheckInterface
         'session',
         'SPL',
         'standard',
+        'tokenizer',
         'xml',
         'zip',
         'zlib',
-- 
GitLab