-
oggdec treats all negative return values coming from ov_read as OV_HOLE errors and therefore as recoverable. So even in the case of fatal errors it keeps on calling ov_read, which may either crash (libvorbis' data structures may be uninitialized) or simply not progress and therefore trap oggdec in an infinite loop. Fix this by distinguishing between recoverable and non-recoverable errors. In the case of fatal errors, exit gracefully with an error message. The error string is "borrowed" from ogg123 and therefore already translated into several languages. Bug-Debian: https://bugs.debian.org/772978 Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/vorbis-tools/+bug/629135 Forwarded: https://trac.xiph.org/ticket/2148
2d544500