XMP Toolkit's `XmpFile::close` can trigger undefined behavior
Low severity
GitHub Reviewed
Published
Jul 26, 2024
to the GitHub Advisory Database
•
Updated Jul 26, 2024
Description
Published to the GitHub Advisory Database
Jul 26, 2024
Reviewed
Jul 26, 2024
Last updated
Jul 26, 2024
Affected versions of the crate failed to catch C++ exceptions raised within the
XmpFile::close
function. If such an exception occured, it would trigger undefined behavior, typically a process abort.This is best demonstrated in issue #230, where a race condition causes the
close
call 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_close
was added to allow callers to receive and process the error result.Users of all prior versions of
xmp_toolkit
are encouraged to update to version 1.9.0 to avoid undefined behavior.References