XMP Toolkit's `XmpFile::close` can trigger undefined behavior
Low severity
GitHub Reviewed
Published
Jul 26, 2024
to the GitHub Advisory Database
•
Updated May 15, 2025
Description
Published to the GitHub Advisory Database
Jul 26, 2024
Reviewed
Jul 26, 2024
Last updated
May 15, 2025
Affected versions of the crate failed to catch C++ exceptions raised within the
XmpFile::closefunction. If such an exception occurred, it would trigger undefined behavior, typically a process abort.This is best demonstrated in issue #230, where a race condition causes the
closecall to fail due to file I/O errors.This was fixed in PR #232 (released as crate version 1.9.0), which now safely handles the exception.
For backward compatibility, the existing API ignores the error. A new API
XmpFile::try_closewas added to allow callers to receive and process the error result.Users of all prior versions of
xmp_toolkitare encouraged to update to version 1.9.0 to avoid undefined behavior.References