Opened 19 minutes ago
Last modified 15 minutes ago
#66646 new task (blessed)
Update getID3 to version 1.9.28
| Reported by: | desrosj | Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | 7.2 |
| Component: | External Libraries | Version: | |
| Severity: | normal | Keywords: | has-patch |
| Cc: | Focuses: |
Description
getID3 1.9.28 has been released. Core is currently at 1.9.26 as of r63520 (see #66059).
This update primarily contains hardening fixes, a few bug fixes.
Release notes: https://github.com/JamesHeinrich/getID3/releases/tag/v1.9.28
Full list of changes: https://github.com/JamesHeinrich/getID3/compare/v1.9.26...v1.9.28
Change History (1)
This ticket was mentioned in PR #15878 on WordPress/wordpress-develop by @desrosj.
15 minutes ago
#1
Note:
See TracTickets
for help on using tickets.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)
Updates the bundled getID3 library from 1.9.26 to 1.9.28, which includes 1.9.27.
Changes
Three security fixes:
stsd,dref,elstandkeysatom parsers no longer trust entry counts larger than the atom's data can hold, which prevents memory exhaustion from crafted files.getid3_lib::XML2array()refuses to parse XML if external entity loading cannot be disabled. On PHP 8.0 and later, this code doesn't run.Bug fixes:
replaygain_album_peakis copied from TXXX frames to the main replay gain data.None of the changes are needed for PHP 8.6 compatibility. The one PHP 8.6-related getID3 change, replacing
is_integer(), shipped in 1.9.26.How this follows previous updates
license.txtandreadme.txt) were identical to upstream v1.9.26, so there are no local patches to carry forward. After it, all 18 are identical to upstream v1.9.28. Only 4 files changed:getid3.php,getid3.lib.php,module.audio-video.quicktime.phpandmodule.tag.id3v2.php.phpcompat.xml.distmatch on file path, so they still apply.phpcs.xml.distexcludessrc/wp-includes/ID3/entirely.Behavior change for reviewers
wp_add_id3_tag_data()storesreset( $list )for each key in$data['id3v2']['comments']. #510 changes the shape of two of those keys:involved_people_list(IPL and IPLS) used to be a list containing one array of pairs, so WordPress stored every pair. It's now the array of pairs itself, soreset()stores only the firstarray( 'position' => …, 'person' => … )pair.involved_people_list(TIPL) andmusician_credits_list(TMCL) in ID3v2.4 tags used to be parsed as plain text frames. They are now parsed into the same pairs.This only affects attachment metadata for audio files that have these frames, and it's displayed nowhere in core. It may be worth keeping the old shape for these keys in
wp_add_id3_tag_data(), or deciding it's acceptable.Testing
php -lon all bundled files: passes. Run on PHP 8.6.0-dev.vendor/bin/phpcs --standard=phpcompat.xml.dist src/wp-includes/ID3/: clean.wp_read_audio_metadata()andwp_read_video_metadata()tests intests/phpunit/tests/media.php.Use of AI Tools
wp_add_id3_tag_data(), running the checks above, and drafting this description. I reviewed the result.🤖 Generated with Claude Code
https://claude.ai/code/session_011Y86gx1T9qpKZuJWesSGiZ