123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542 |
- --TEST--
- Bug #76514 Regression in preg_match makes it fail with PREG_JIT_STACKLIMIT_ERROR
- --FILE--
- <?php
- $str = '{
- "config": {
- "cache-files-ttl": 0,
- "discard-changes": true
- },
- "minimum-stability": "stable",
- "prefer-stable": false,
- "provide": {
- "heroku-sys/cedar": "14.2016.03.22"
- },
- "repositories": [
- {
- "packagist.org": false
- },
- {
- "type": "package",
- "package": [
- {
- "type": "metapackage",
- "name": "anthonymartin/geo-location",
- "version": "v1.0.0",
- "require": {
- "heroku-sys/php": ">=5.3.0"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "aws/aws-sdk-php",
- "version": "3.9.4",
- "require": {
- "heroku-sys/php": ">=5.5"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "cloudinary/cloudinary_php",
- "version": "dev-master",
- "require": {
- "heroku-sys/ext-curl": "*",
- "heroku-sys/ext-json": "*",
- "heroku-sys/php": ">=5.3.0"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "doctrine/annotations",
- "version": "v1.2.7",
- "require": {
- "heroku-sys/php": ">=5.3.2"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "doctrine/cache",
- "version": "v1.6.0",
- "require": {
- "heroku-sys/php": "~5.5|~7.0"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "doctrine/collections",
- "version": "v1.3.0",
- "require": {
- "heroku-sys/php": ">=5.3.2"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "doctrine/common",
- "version": "v2.6.1",
- "require": {
- "heroku-sys/php": "~5.5|~7.0"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "doctrine/inflector",
- "version": "v1.1.0",
- "require": {
- "heroku-sys/php": ">=5.3.2"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "doctrine/lexer",
- "version": "v1.0.1",
- "require": {
- "heroku-sys/php": ">=5.3.2"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "geoip/geoip",
- "version": "v1.16",
- "require": [],
- "replace": [],
- "provide": [],
- "conflict": {
- "heroku-sys/ext-geoip": "*"
- }
- },
- {
- "type": "metapackage",
- "name": "giggsey/libphonenumber-for-php",
- "version": "7.2.5",
- "require": {
- "heroku-sys/ext-mbstring": "*"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "guzzlehttp/guzzle",
- "version": "5.3.0",
- "require": {
- "heroku-sys/php": ">=5.4.0"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "guzzlehttp/promises",
- "version": "1.0.3",
- "require": {
- "heroku-sys/php": ">=5.5.0"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "guzzlehttp/psr7",
- "version": "1.2.3",
- "require": {
- "heroku-sys/php": ">=5.4.0"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "guzzlehttp/ringphp",
- "version": "1.1.0",
- "require": {
- "heroku-sys/php": ">=5.4.0"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "guzzlehttp/streams",
- "version": "3.0.0",
- "require": {
- "heroku-sys/php": ">=5.4.0"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "hipchat/hipchat-php",
- "version": "v1.4",
- "require": {
- "heroku-sys/php": ">=5.3.0"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "kriswallsmith/buzz",
- "version": "v0.15",
- "require": {
- "heroku-sys/php": ">=5.3.0"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "league/csv",
- "version": "8.0.0",
- "require": {
- "heroku-sys/ext-mbstring": "*",
- "heroku-sys/php": ">=5.5.0"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "league/fractal",
- "version": "0.13.0",
- "require": {
- "heroku-sys/php": ">=5.4"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "mashape/unirest-php",
- "version": "1.2.1",
- "require": {
- "heroku-sys/ext-curl": "*",
- "heroku-sys/ext-json": "*",
- "heroku-sys/php": ">=5.3.0"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "mtdowling/jmespath.php",
- "version": "2.3.0",
- "require": {
- "heroku-sys/php": ">=5.4.0"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "palex/phpstructureddata",
- "version": "v2.0.1",
- "require": {
- "heroku-sys/php": ">=5.3.0"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "psr/http-message",
- "version": "1.0",
- "require": {
- "heroku-sys/php": ">=5.3.0"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "react/promise",
- "version": "v2.2.1",
- "require": {
- "heroku-sys/php": ">=5.4.0"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "rollbar/rollbar",
- "version": "v0.15.0",
- "require": {
- "heroku-sys/ext-curl": "*"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "ronanguilloux/isocodes",
- "version": "1.2.0",
- "require": {
- "heroku-sys/ext-bcmath": "*",
- "heroku-sys/php": ">=5.4.0"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "sendgrid/sendgrid",
- "version": "2.1.1",
- "require": {
- "heroku-sys/php": ">=5.3"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "sendgrid/smtpapi",
- "version": "0.0.1",
- "require": {
- "heroku-sys/php": ">=5.3"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "symfony/css-selector",
- "version": "v2.8.2",
- "require": {
- "heroku-sys/php": ">=5.3.9"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "symfony/http-foundation",
- "version": "v2.8.2",
- "require": {
- "heroku-sys/php": ">=5.3.9"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "symfony/polyfill-php54",
- "version": "v1.1.0",
- "require": {
- "heroku-sys/php": ">=5.3.3"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "symfony/polyfill-php55",
- "version": "v1.1.0",
- "require": {
- "heroku-sys/php": ">=5.3.3"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "thepixeldeveloper/sitemap",
- "version": "3.0.0",
- "require": {
- "heroku-sys/php": ">=5.3.0"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "tijsverkoyen/css-to-inline-styles",
- "version": "1.5.5",
- "require": {
- "heroku-sys/php": ">=5.3.0"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "yiisoft/yii",
- "version": "1.1.17",
- "require": {
- "heroku-sys/php": ">=5.1.0"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- },
- {
- "type": "metapackage",
- "name": "composer.json/composer.lock",
- "version": "dev-597511d6d51b96e4a8afeba2c79982e5",
- "require": {
- "heroku-sys/php": "~5.6.0",
- "heroku-sys/ext-newrelic": "*",
- "heroku-sys/ext-gd": "*",
- "heroku-sys/ext-redis": "*"
- },
- "replace": [],
- "provide": [],
- "conflict": []
- }
- ]
- }
- ],
- "require": {
- "composer.json/composer.lock": "dev-597511d6d51b96e4a8afeba2c79982e5",
- "anthonymartin/geo-location": "v1.0.0",
- "aws/aws-sdk-php": "3.9.4",
- "cloudinary/cloudinary_php": "dev-master",
- "doctrine/annotations": "v1.2.7",
- "doctrine/cache": "v1.6.0",
- "doctrine/collections": "v1.3.0",
- "doctrine/common": "v2.6.1",
- "doctrine/inflector": "v1.1.0",
- "doctrine/lexer": "v1.0.1",
- "geoip/geoip": "v1.16",
- "giggsey/libphonenumber-for-php": "7.2.5",
- "guzzlehttp/guzzle": "5.3.0",
- "guzzlehttp/promises": "1.0.3",
- "guzzlehttp/psr7": "1.2.3",
- "guzzlehttp/ringphp": "1.1.0",
- "guzzlehttp/streams": "3.0.0",
- "hipchat/hipchat-php": "v1.4",
- "kriswallsmith/buzz": "v0.15",
- "league/csv": "8.0.0",
- "league/fractal": "0.13.0",
- "mashape/unirest-php": "1.2.1",
- "mtdowling/jmespath.php": "2.3.0",
- "palex/phpstructureddata": "v2.0.1",
- "psr/http-message": "1.0",
- "react/promise": "v2.2.1",
- "rollbar/rollbar": "v0.15.0",
- "ronanguilloux/isocodes": "1.2.0",
- "sendgrid/sendgrid": "2.1.1",
- "sendgrid/smtpapi": "0.0.1",
- "symfony/css-selector": "v2.8.2",
- "symfony/http-foundation": "v2.8.2",
- "symfony/polyfill-php54": "v1.1.0",
- "symfony/polyfill-php55": "v1.1.0",
- "thepixeldeveloper/sitemap": "3.0.0",
- "tijsverkoyen/css-to-inline-styles": "1.5.5",
- "yiisoft/yii": "1.1.17",
- "heroku-sys/apache": "^2.4.10",
- "heroku-sys/nginx": "~1.8.0"
- }
- }';
- $res = preg_match('{(?(DEFINE)
- (?<number> -? (?= [1-9]|0(?!\d) ) \d+ (\.\d+)? ([eE] [+-]? \d+)? )
- (?<boolean> true | false | null )
- (?<string> " ([^"\\\\]* | \\\\ ["\\\\bfnrt\/] | \\\\ u [0-9a-f]{4} )* " )
- (?<array> \[ (?: (?&json) \s* (?: , (?&json) \s* )* )? \s* \] )
- (?<pair> \s* (?&string) \s* : (?&json) \s* )
- (?<object> \{ (?: (?&pair) (?: , (?&pair) )* )? \s* \} )
- (?<json> \s* (?: (?&number) | (?&boolean) | (?&string) | (?&array) | (?&object) ) )
- )
- ^(?P<start>\s*\{\s*(?:(?&string)\s*:\s*(?&json)\s*,\s*)*?)
- (?P<property>'.preg_quote('"require"').'\s*:\s*)(?P<value>(?&json))(?P<end>.*)}sx', $str, $match);
- var_dump($res, $match['value'] ?? null, preg_last_error() == PREG_JIT_STACKLIMIT_ERROR);
- ?>
- --EXPECT--
- int(1)
- string(1613) "{
- "composer.json/composer.lock": "dev-597511d6d51b96e4a8afeba2c79982e5",
- "anthonymartin/geo-location": "v1.0.0",
- "aws/aws-sdk-php": "3.9.4",
- "cloudinary/cloudinary_php": "dev-master",
- "doctrine/annotations": "v1.2.7",
- "doctrine/cache": "v1.6.0",
- "doctrine/collections": "v1.3.0",
- "doctrine/common": "v2.6.1",
- "doctrine/inflector": "v1.1.0",
- "doctrine/lexer": "v1.0.1",
- "geoip/geoip": "v1.16",
- "giggsey/libphonenumber-for-php": "7.2.5",
- "guzzlehttp/guzzle": "5.3.0",
- "guzzlehttp/promises": "1.0.3",
- "guzzlehttp/psr7": "1.2.3",
- "guzzlehttp/ringphp": "1.1.0",
- "guzzlehttp/streams": "3.0.0",
- "hipchat/hipchat-php": "v1.4",
- "kriswallsmith/buzz": "v0.15",
- "league/csv": "8.0.0",
- "league/fractal": "0.13.0",
- "mashape/unirest-php": "1.2.1",
- "mtdowling/jmespath.php": "2.3.0",
- "palex/phpstructureddata": "v2.0.1",
- "psr/http-message": "1.0",
- "react/promise": "v2.2.1",
- "rollbar/rollbar": "v0.15.0",
- "ronanguilloux/isocodes": "1.2.0",
- "sendgrid/sendgrid": "2.1.1",
- "sendgrid/smtpapi": "0.0.1",
- "symfony/css-selector": "v2.8.2",
- "symfony/http-foundation": "v2.8.2",
- "symfony/polyfill-php54": "v1.1.0",
- "symfony/polyfill-php55": "v1.1.0",
- "thepixeldeveloper/sitemap": "3.0.0",
- "tijsverkoyen/css-to-inline-styles": "1.5.5",
- "yiisoft/yii": "1.1.17",
- "heroku-sys/apache": "^2.4.10",
- "heroku-sys/nginx": "~1.8.0"
- }"
- bool(false)
|