Hi, it comes to me that interpretation of CE needs a safety net against endless loops.
I recently participated as instigator and reviewer in the implementation of such a loop breaker in GRUB. It was committed together with a bug fix as https://git.savannah.gnu.org/cgit/grub.git/commit/?id=2a96eab759aff74c2a214da66eefeb1e770c0820 (actually submitted by Lidong Chen, not by me). Adapted to libcdio this would mean to have a local variable "ce_counter", a limit (GRUB and libisofs have 100000, Linux has 31), and a test in the SIG('C','E')-case which bails out if the incremented ce_counter exceeds the limit. I demonstrated the CE-loop problem by a killer ISO which is now part of GRUB's test suite: https://git.savannah.gnu.org/cgit/grub.git/tree/tests/iso9660_ce_loop.iso.gz (897 bytes which inflate to 128 KiB of iso9660_ce_loop.iso) Have a nice day :) Thomas