Security release for the 1.12 line.
🔒 Security
- PHP injection via translation tokens (GHSA-xw8p-7592-hg99):
@@Text@@entries are written withvar_export()instead of hand-made escaping. Tokens containing control characters or more than 1024 characters are rejected, and generated language files stop receiving entries above 1 MiB. Both limits are configurable throughi18n_token_max_lengthandi18n_lang_file_max_size. After upgrading, inspect and delete poisoned files intemplate/template_lang/— the advisory has the exact commands.
✨ Added
- Native WebP support: WebP files can be uploaded, processed and used like JPEG or PNG; image extension integrity checks cover the format.
🛠️ Changed
- Setup config writer:
write_conf_file()emits string values withvar_export(); the localescape_quote()helper is removed. - IPTC charset handling: validity is checked once and the data converted once.
🐛 Fixed
- Legacy IPTC charset: data without a 1:90 tag is decoded as Windows-1252 through
makeCharsetConversion()instead of the deprecatedutf8_encode(). - PHP 8.5 deprecations:
imagedestroy(),finfo_close()andcurl_close()replaced withunset();FEUSER_LOGIN_STATUSguarded against redeclaration; non-array article image data normalized; unused dynamicFeedItem::$updateDatewrite removed. - Forms and replacers: custom form anchors are honored,
parse_markdown()passes UTF-8 to CommonMark, captured{IMAGE*}/{RANDOM_*}values are escaped.
📦 Dependency Updates
phpmailer/phpmailer7.2.0,phpoffice/phpspreadsheet5.11.0,netcarver/textile4.1.9,tinymce/tinymce8.10.2,guzzlehttp/psr72.13.3,symfony/deprecation-contracts3.8.1, plus currentsimplepie/simplepieandmklkj/tinymce-i18nsnapshots.
Requires PHP 8.2+ and MySQL 5.5+ / MariaDB. Ships database revision r555.