Files
taglib/taglib/ogg
manuaudioandUrs Fleisch c3d4eef597 Speex: do not convert out of range properties to int
Same shape as Vorbis. The length comes from the difference between two
64 bit granule positions over a sample rate read from the Speex header,
so a file can declare 2^62 samples at 1 Hz. The millisecond length is
then ~4.6e21 and the conversion to int is undefined:

  taglib/ogg/speex/speexproperties.cpp:165:39: runtime error: 4.61169e+21
  is outside the range of representable values of type 'int'

The bitrate on the next line is reachable the other way round, with one
sample at a high declared rate making the divisor tiny:

  taglib/ogg/speex/speexproperties.cpp:166:39: runtime error: 3.61877e+13
  is outside the range of representable values of type 'int'

Leave the field at its default rather than converting.

Two reports before the change, none after. The 23 FLAC, APE, Ogg
Vorbis, Opus and Speex files in tests/data report identical channels,
sample rate, bitrate and length before and after, and the suite runs
576 tests either way.

Assisted-By: Claude Code (Claude Opus 5)
2026-08-15 18:18:23 +02:00
..
2024-01-21 20:46:27 +01:00
2024-01-21 20:46:27 +01:00