diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d185fc..1f752e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html) where applicable. +## 1.1.14 — 2026-11-06 + +- Require the patched Symfony Config, Filesystem, HttpFoundation, HttpKernel, Routing and Yaml components from the 8.1.11 security release. +- Rebuild the production kernel cache after upgrading so compiled route tables include the fix for CVE-2026-118516. + ## 1.1.13 — 2026-10-24 - Qualify native Symfony 8.2 service shutdown in the WordPress App lifecycle, with final cleanup, error continuation and shutdown-aware autoconfiguration. The native path stays inactive on Symfony 8.1 and Service Contracts 3.7. diff --git a/composer.json b/composer.json index 293bd22..997330a 100644 --- a/composer.json +++ b/composer.json @@ -17,18 +17,18 @@ "psr/clock": "^1.0", "psr/event-dispatcher": "^1.0", "psr/log": "^3.0", - "symfony/config": "^8.0", + "symfony/config": "^8.1.11", "symfony/console": "^8.0", "symfony/clock": "^8.0", "symfony/dependency-injection": "^8.1.8", "symfony/event-dispatcher": "^8.0", "symfony/expression-language": "^8.1.9", - "symfony/filesystem": "^8.0", - "symfony/http-foundation": "^8.1.9", - "symfony/http-kernel": "^8.1", - "symfony/routing": "^8.1", + "symfony/filesystem": "^8.1.11", + "symfony/http-foundation": "^8.1.11", + "symfony/http-kernel": "^8.1.11", + "symfony/routing": "^8.1.11", "symfony/service-contracts": "^3.6", - "symfony/yaml": "^8.1.6" + "symfony/yaml": "^8.1.11" }, "require-dev": { "composer/semver": "^3.4", diff --git a/composer.lock b/composer.lock index 5c1b3ab..3c5e187 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": "71106f15695a03fb4afcbefc0e6321d1", + "content-hash": "d2c4b9aea4a87977f2e9b213bf4b1722", "packages": [ { "name": "psr/cache", @@ -204,7 +204,8 @@ "issues": "https://github.com/php-fig/event-dispatcher/issues", "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" }, - "time": "2019-01-08T18:20:26+00:00" + "time": "2019-01-08T18:20:26+00:00", + "published-time": "2019-03-25T15:31:44+00:00" }, { "name": "psr/log", @@ -254,7 +255,8 @@ "support": { "source": "https://github.com/php-fig/log/tree/3.0.2" }, - "time": "2024-09-11T13:17:53+00:00" + "time": "2024-09-11T13:17:53+00:00", + "published-time": "2024-09-11T13:21:14+00:00" }, { "name": "symfony/cache", @@ -514,16 +516,16 @@ }, { "name": "symfony/config", - "version": "v8.1.5", + "version": "v8.1.11", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "ec711a6c14ae287d9618fbd2c9de4e223a1a4b02" + "reference": "8a6f757bf803464bc8451e1fafc3699588e29c48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/ec711a6c14ae287d9618fbd2c9de4e223a1a4b02", - "reference": "ec711a6c14ae287d9618fbd2c9de4e223a1a4b02", + "url": "https://api.github.com/repos/symfony/config/zipball/8a6f757bf803464bc8451e1fafc3699588e29c48", + "reference": "8a6f757bf803464bc8451e1fafc3699588e29c48", "shasum": "" }, "require": { @@ -568,7 +570,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v8.1.5" + "source": "https://github.com/symfony/config/tree/v8.1.11" }, "funding": [ { @@ -588,7 +590,8 @@ "type": "tidelift" } ], - "time": "2026-08-20T09:59:12+00:00" + "time": "2026-11-04T08:39:20+00:00", + "published-time": "2026-11-04T11:31:48+00:00" }, { "name": "symfony/console", @@ -840,7 +843,8 @@ "type": "tidelift" } ], - "time": "2026-06-05T06:23:12+00:00" + "time": "2026-06-05T06:23:12+00:00", + "published-time": "2026-06-27T21:46:34+00:00" }, { "name": "symfony/error-handler", @@ -921,7 +925,8 @@ "type": "tidelift" } ], - "time": "2026-09-22T18:58:53+00:00" + "time": "2026-09-22T18:58:53+00:00", + "published-time": "2026-09-29T14:10:14+00:00" }, { "name": "symfony/event-dispatcher", @@ -1007,7 +1012,8 @@ "type": "tidelift" } ], - "time": "2026-08-21T17:47:34+00:00" + "time": "2026-08-21T17:47:34+00:00", + "published-time": "2026-08-22T13:46:58+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -1087,7 +1093,8 @@ "type": "tidelift" } ], - "time": "2026-06-05T06:23:12+00:00" + "time": "2026-06-05T06:23:12+00:00", + "published-time": "2026-06-27T21:46:35+00:00" }, { "name": "symfony/expression-language", @@ -1158,16 +1165,16 @@ }, { "name": "symfony/filesystem", - "version": "v8.1.9", + "version": "v8.1.11", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "43d109c803d22c00bb820ed45df250b6a8792ca2" + "reference": "58f57b6a33e3495f7f41e01258f1ae5ef76cccd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/43d109c803d22c00bb820ed45df250b6a8792ca2", - "reference": "43d109c803d22c00bb820ed45df250b6a8792ca2", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/58f57b6a33e3495f7f41e01258f1ae5ef76cccd2", + "reference": "58f57b6a33e3495f7f41e01258f1ae5ef76cccd2", "shasum": "" }, "require": { @@ -1205,7 +1212,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v8.1.9" + "source": "https://github.com/symfony/filesystem/tree/v8.1.11" }, "funding": [ { @@ -1225,20 +1232,21 @@ "type": "tidelift" } ], - "time": "2026-10-06T20:05:50+00:00" + "time": "2026-11-04T08:39:20+00:00", + "published-time": "2026-11-04T11:32:01+00:00" }, { "name": "symfony/http-foundation", - "version": "v8.1.9", + "version": "v8.1.11", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "7850897fb8659f98491b03be79ac48600bdaf9ab" + "reference": "30fa3efe6e736b0d06f5331cc6abe813582c0a26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/7850897fb8659f98491b03be79ac48600bdaf9ab", - "reference": "7850897fb8659f98491b03be79ac48600bdaf9ab", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/30fa3efe6e736b0d06f5331cc6abe813582c0a26", + "reference": "30fa3efe6e736b0d06f5331cc6abe813582c0a26", "shasum": "" }, "require": { @@ -1286,7 +1294,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v8.1.9" + "source": "https://github.com/symfony/http-foundation/tree/v8.1.11" }, "funding": [ { @@ -1306,20 +1314,21 @@ "type": "tidelift" } ], - "time": "2026-10-08T16:57:43+00:00" + "time": "2026-11-04T08:39:20+00:00", + "published-time": "2026-11-04T11:31:54+00:00" }, { "name": "symfony/http-kernel", - "version": "v8.1.9", + "version": "v8.1.11", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "55c6935bb4c004a72b55f723e79d5404881dcad3" + "reference": "460658504e26a2794aa614b4fbe6cf9bac2076fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/55c6935bb4c004a72b55f723e79d5404881dcad3", - "reference": "55c6935bb4c004a72b55f723e79d5404881dcad3", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/460658504e26a2794aa614b4fbe6cf9bac2076fe", + "reference": "460658504e26a2794aa614b4fbe6cf9bac2076fe", "shasum": "" }, "require": { @@ -1396,7 +1405,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v8.1.9" + "source": "https://github.com/symfony/http-kernel/tree/v8.1.11" }, "funding": [ { @@ -1416,7 +1425,8 @@ "type": "tidelift" } ], - "time": "2026-10-14T06:47:03+00:00" + "time": "2026-11-04T11:29:46+00:00", + "published-time": "2026-11-04T11:32:19+00:00" }, { "name": "symfony/polyfill-ctype", @@ -1499,7 +1509,8 @@ "type": "tidelift" } ], - "time": "2026-04-10T16:19:22+00:00" + "time": "2026-04-10T16:19:22+00:00", + "published-time": "2026-04-26T14:44:50+00:00" }, { "name": "symfony/polyfill-deepclone", @@ -1838,7 +1849,8 @@ "type": "tidelift" } ], - "time": "2026-09-24T15:19:04+00:00" + "time": "2026-09-24T15:19:04+00:00", + "published-time": "2026-09-30T10:23:35+00:00" }, { "name": "symfony/polyfill-php85", @@ -1918,20 +1930,21 @@ "type": "tidelift" } ], - "time": "2026-09-25T15:46:47+00:00" + "time": "2026-09-25T15:46:47+00:00", + "published-time": "2026-09-30T10:23:32+00:00" }, { "name": "symfony/routing", - "version": "v8.1.9", + "version": "v8.1.11", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "edb06fb6ced3c1faaaed74c1c6c0f176a614c330" + "reference": "f3fefc6cad3748d538be970ca81b71f06d7aa8b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/edb06fb6ced3c1faaaed74c1c6c0f176a614c330", - "reference": "edb06fb6ced3c1faaaed74c1c6c0f176a614c330", + "url": "https://api.github.com/repos/symfony/routing/zipball/f3fefc6cad3748d538be970ca81b71f06d7aa8b3", + "reference": "f3fefc6cad3748d538be970ca81b71f06d7aa8b3", "shasum": "" }, "require": { @@ -1978,7 +1991,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v8.1.9" + "source": "https://github.com/symfony/routing/tree/v8.1.11" }, "funding": [ { @@ -1998,7 +2011,8 @@ "type": "tidelift" } ], - "time": "2026-10-12T12:37:13+00:00" + "time": "2026-11-04T08:39:20+00:00", + "published-time": "2026-11-04T11:30:59+00:00" }, { "name": "symfony/service-contracts", @@ -2262,7 +2276,8 @@ "type": "tidelift" } ], - "time": "2026-10-13T05:48:51+00:00" + "time": "2026-10-13T05:48:51+00:00", + "published-time": "2026-10-14T06:48:50+00:00" }, { "name": "symfony/var-exporter", @@ -2349,16 +2364,16 @@ }, { "name": "symfony/yaml", - "version": "v8.1.9", + "version": "v8.1.11", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "6107ee26a25215c3df3af0a3315e56bb4fd0b7db" + "reference": "e8266f55160f674f290a5f567cb55e11e21f921b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/6107ee26a25215c3df3af0a3315e56bb4fd0b7db", - "reference": "6107ee26a25215c3df3af0a3315e56bb4fd0b7db", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e8266f55160f674f290a5f567cb55e11e21f921b", + "reference": "e8266f55160f674f290a5f567cb55e11e21f921b", "shasum": "" }, "require": { @@ -2401,7 +2416,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v8.1.9" + "source": "https://github.com/symfony/yaml/tree/v8.1.11" }, "funding": [ { @@ -2421,7 +2436,8 @@ "type": "tidelift" } ], - "time": "2026-10-12T12:37:13+00:00" + "time": "2026-11-04T08:39:20+00:00", + "published-time": "2026-11-04T11:31:03+00:00" } ], "packages-dev": [ @@ -2710,7 +2726,8 @@ "type": "github" } ], - "time": "2026-08-11T10:17:44+00:00" + "time": "2026-08-11T10:17:44+00:00", + "published-time": "2026-08-11T10:29:20+00:00" }, { "name": "nikic/php-parser", @@ -2767,7 +2784,8 @@ "issues": "https://github.com/nikic/PHP-Parser/issues", "source": "https://github.com/nikic/PHP-Parser/tree/v5.9.0" }, - "time": "2026-09-13T18:51:52+00:00" + "time": "2026-09-13T18:51:52+00:00", + "published-time": "2026-09-13T18:53:16+00:00" }, { "name": "phar-io/manifest", @@ -2834,7 +2852,8 @@ "type": "github" } ], - "time": "2024-03-03T12:33:53+00:00" + "time": "2024-03-03T12:33:53+00:00", + "published-time": "2024-03-03T12:39:44+00:00" }, { "name": "phar-io/version", @@ -2885,7 +2904,8 @@ "issues": "https://github.com/phar-io/version/issues", "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "time": "2022-02-21T01:04:05+00:00" + "time": "2022-02-21T01:04:05+00:00", + "published-time": "2022-02-21T01:04:30+00:00" }, { "name": "php-stubs/wordpress-stubs", @@ -3532,7 +3552,8 @@ "type": "tidelift" } ], - "time": "2026-10-03T14:05:38+00:00" + "time": "2026-10-03T14:05:38+00:00", + "published-time": "2026-10-03T14:05:51+00:00" }, { "name": "phpunit/php-file-iterator", @@ -3605,7 +3626,8 @@ "type": "tidelift" } ], - "time": "2026-08-25T14:47:43+00:00" + "time": "2026-08-25T14:47:43+00:00", + "published-time": "2026-08-25T14:48:49+00:00" }, { "name": "phpunit/php-invoker", @@ -3681,7 +3703,8 @@ "type": "tidelift" } ], - "time": "2026-02-06T04:34:47+00:00" + "time": "2026-02-06T04:34:47+00:00", + "published-time": "2026-02-06T04:35:29+00:00" }, { "name": "phpunit/php-text-template", @@ -3753,7 +3776,8 @@ "type": "tidelift" } ], - "time": "2026-10-03T04:54:24+00:00" + "time": "2026-10-03T04:54:24+00:00", + "published-time": "2026-10-03T04:54:39+00:00" }, { "name": "phpunit/php-timer", @@ -3825,20 +3849,21 @@ "type": "tidelift" } ], - "time": "2026-02-06T04:37:53+00:00" + "time": "2026-02-06T04:37:53+00:00", + "published-time": "2026-02-06T04:38:39+00:00" }, { "name": "phpunit/phpunit", - "version": "13.4.3", + "version": "13.4.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "2180c47c4229e5da117ff248753370443c074f10" + "reference": "941457a4f147a60fe2074d40e1fce0d08ea8d930" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2180c47c4229e5da117ff248753370443c074f10", - "reference": "2180c47c4229e5da117ff248753370443c074f10", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/941457a4f147a60fe2074d40e1fce0d08ea8d930", + "reference": "941457a4f147a60fe2074d40e1fce0d08ea8d930", "shasum": "" }, "require": { @@ -3863,7 +3888,7 @@ "sebastian/environment": "^9.3.3", "sebastian/exporter": "^8.2.1", "sebastian/file-filter": "^1.0", - "sebastian/git-state": "^1.0", + "sebastian/git-state": "^1.1", "sebastian/global-state": "^9.0.1", "sebastian/object-enumerator": "^8.1.0", "sebastian/recursion-context": "^8.0.1", @@ -3909,7 +3934,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/13.4.3" + "source": "https://github.com/sebastianbergmann/phpunit/tree/13.4.5" }, "funding": [ { @@ -3917,7 +3942,8 @@ "type": "other" } ], - "time": "2026-10-16T05:56:47+00:00" + "time": "2026-10-27T04:16:22+00:00", + "published-time": "2026-10-27T04:18:40+00:00" }, { "name": "sebastian/cli-parser", @@ -3986,7 +4012,8 @@ "type": "tidelift" } ], - "time": "2026-08-01T04:27:14+00:00" + "time": "2026-08-01T04:27:14+00:00", + "published-time": "2026-08-01T04:29:01+00:00" }, { "name": "sebastian/comparator", @@ -4078,7 +4105,8 @@ "type": "tidelift" } ], - "time": "2026-08-07T07:23:13+00:00" + "time": "2026-08-07T07:23:13+00:00", + "published-time": "2026-08-07T07:23:29+00:00" }, { "name": "sebastian/complexity", @@ -4148,7 +4176,8 @@ "type": "tidelift" } ], - "time": "2026-02-06T04:41:32+00:00" + "time": "2026-02-06T04:41:32+00:00", + "published-time": "2026-02-06T04:41:49+00:00" }, { "name": "sebastian/diff", @@ -4227,7 +4256,8 @@ "type": "tidelift" } ], - "time": "2026-08-25T15:38:55+00:00" + "time": "2026-08-25T15:38:55+00:00", + "published-time": "2026-08-25T15:39:44+00:00" }, { "name": "sebastian/environment", @@ -4303,7 +4333,8 @@ "type": "tidelift" } ], - "time": "2026-10-01T12:37:56+00:00" + "time": "2026-10-01T12:37:56+00:00", + "published-time": "2026-10-01T12:38:48+00:00" }, { "name": "sebastian/exporter", @@ -4393,7 +4424,8 @@ "type": "tidelift" } ], - "time": "2026-08-07T07:22:06+00:00" + "time": "2026-08-07T07:22:06+00:00", + "published-time": "2026-08-07T07:23:47+00:00" }, { "name": "sebastian/file-filter", @@ -4462,7 +4494,8 @@ "type": "tidelift" } ], - "time": "2026-04-22T07:20:04+00:00" + "time": "2026-04-22T07:20:04+00:00", + "published-time": "2026-04-22T07:20:25+00:00" }, { "name": "sebastian/git-state", @@ -4531,7 +4564,8 @@ "type": "tidelift" } ], - "time": "2026-10-21T05:59:52+00:00" + "time": "2026-10-21T05:59:52+00:00", + "published-time": "2026-10-21T06:01:28+00:00" }, { "name": "sebastian/global-state", @@ -4605,7 +4639,8 @@ "type": "tidelift" } ], - "time": "2026-06-01T15:11:33+00:00" + "time": "2026-06-01T15:11:33+00:00", + "published-time": "2026-06-01T15:20:45+00:00" }, { "name": "sebastian/lines-of-code", @@ -4675,7 +4710,8 @@ "type": "tidelift" } ], - "time": "2026-07-09T08:42:34+00:00" + "time": "2026-07-09T08:42:34+00:00", + "published-time": "2026-07-09T08:44:06+00:00" }, { "name": "sebastian/object-enumerator", @@ -4744,7 +4780,8 @@ "type": "tidelift" } ], - "time": "2026-08-13T07:05:05+00:00" + "time": "2026-08-13T07:05:05+00:00", + "published-time": "2026-08-13T07:07:58+00:00" }, { "name": "sebastian/object-reflector", @@ -4812,7 +4849,8 @@ "type": "tidelift" } ], - "time": "2026-08-13T06:34:36+00:00" + "time": "2026-08-13T06:34:36+00:00", + "published-time": "2026-08-13T06:39:22+00:00" }, { "name": "sebastian/recursion-context", @@ -4888,7 +4926,8 @@ "type": "tidelift" } ], - "time": "2026-08-03T05:58:12+00:00" + "time": "2026-08-03T05:58:12+00:00", + "published-time": "2026-08-03T05:59:59+00:00" }, { "name": "sebastian/type", @@ -4957,7 +4996,8 @@ "type": "tidelift" } ], - "time": "2026-08-10T08:00:57+00:00" + "time": "2026-08-10T08:00:57+00:00", + "published-time": "2026-08-10T08:01:43+00:00" }, { "name": "sebastian/version", @@ -5023,7 +5063,8 @@ "type": "tidelift" } ], - "time": "2026-10-04T05:51:14+00:00" + "time": "2026-10-04T05:51:14+00:00", + "published-time": "2026-10-04T05:52:22+00:00" }, { "name": "sirbrillig/phpcs-variable-analysis", @@ -5275,7 +5316,8 @@ "type": "github" } ], - "time": "2024-10-20T05:08:20+00:00" + "time": "2024-10-20T05:08:20+00:00", + "published-time": "2024-10-20T05:09:39+00:00" }, { "name": "symfony/process", @@ -5577,7 +5619,8 @@ "type": "github" } ], - "time": "2025-12-08T11:19:18+00:00" + "time": "2025-12-08T11:19:18+00:00", + "published-time": "2025-12-08T11:19:39+00:00" }, { "name": "wp-coding-standards/wpcs", @@ -5657,5 +5700,5 @@ "ext-json": "*" }, "platform-dev": {}, - "plugin-api-version": "2.9.0" + "plugin-api-version": "2.11.0" } diff --git a/tests/Routing/RouteAttributeTest.php b/tests/Routing/RouteAttributeTest.php index 43d56aa..483e1d1 100644 --- a/tests/Routing/RouteAttributeTest.php +++ b/tests/Routing/RouteAttributeTest.php @@ -36,6 +36,9 @@ function register_rest_route( use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\HttpFoundation\Request; + use Symfony\Component\Routing\Exception\ResourceNotFoundException; + use Symfony\Component\Routing\Matcher\CompiledUrlMatcher; + use Symfony\Component\Routing\RequestContext; final class RouteAttributeTest extends TestCase { @@ -81,6 +84,34 @@ public function testFrontendRoutesAreMatchedAndControllersAreResolvedLazily(): v self::assertSame('GET', $methodMismatch->headers->get('Allow')); } + public function testCompiledHostPlaceholderCannotConsumeTheRequestPath(): void + { + $route = [ + 'name' => 'report', + 'path' => '/admin/report/{id}', + 'methods' => ['GET'], + 'schemes' => [], + 'host' => 'app.{domain}', + 'defaults' => [], + 'requirements' => ['domain' => '.+'], + 'options' => [], + 'condition' => '', + 'priority' => 0, + 'service' => 'demo', + 'class' => 'Demo', + 'method' => 'run', + ]; + $matcher = new CompiledUrlMatcher( + RouteLoader::compileRoutes([$route]), + new RequestContext(host: 'app.example.com'), + ); + + self::assertSame('report', $matcher->match('/admin/report/1')['_route']); + + $this->expectException(ResourceNotFoundException::class); + $matcher->match('/x./admin/report/1'); + } + public function testRoutesWithConditionsKeepTheRuntimeMatcher(): void { $route = [ diff --git a/tests/Security/SymfonySecurityCompatibilityTest.php b/tests/Security/SymfonySecurityCompatibilityTest.php index fec5c10..0949698 100644 --- a/tests/Security/SymfonySecurityCompatibilityTest.php +++ b/tests/Security/SymfonySecurityCompatibilityTest.php @@ -31,9 +31,12 @@ public static function dependencyBoundaries(): iterable { yield 'expression initial incomplete fix' => ['symfony/expression-language', '8.1.6', '8.1.9']; yield 'expression last affected patch' => ['symfony/expression-language', '8.1.8', '8.1.9']; - yield 'yaml inline lexer' => ['symfony/yaml', '8.1.5', '8.1.6']; - yield 'header parser' => ['symfony/http-foundation', '8.1.6', '8.1.9']; - yield 'header whitespace separator regression' => ['symfony/http-foundation', '8.1.8', '8.1.9']; + yield 'yaml inline lexer' => ['symfony/yaml', '8.1.5', '8.1.11']; + yield 'header parser' => ['symfony/http-foundation', '8.1.6', '8.1.11']; + yield 'header whitespace separator regression' => ['symfony/http-foundation', '8.1.8', '8.1.11']; + foreach (['config', 'filesystem', 'http-foundation', 'http-kernel', 'routing', 'yaml'] as $component) { + yield $component . ' November security boundary' => ['symfony/' . $component, '8.1.10', '8.1.11']; + } } #[DataProvider('deepExpressions')]