[master] Fix issue 63779: Handle xattr.read unicode errors by mimicking builtin xattr #64039
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Apple puts bytes which are not decode-able into some common xattrs. This can be verified by downloading just about any app (from the web or the app store) and using the builtin
/usr/bin/xattr /path/to/app
on it and then attempting the same thing with Salt (salt-call xattr.list /path/to/app
).If you look at the actual bytes, it's tempting in some cases to try to parse them; often they are binary plists. However, these fail to parse with the builtin python plistlib (which does handle binary plists now). I tried it, they don't parse with NSPropertyListSerialization either, and even if they did, Salt for Mac no longer includes PyObjC so I'm not sure that would be helpful.
Regardless, I've seen other xattrs in the wild which are not binary plist and also fail when trying to decode to Unicode.
What issues does this PR fix or reference?
Fixes: #63779
Previous Behavior
Raises CommandExecutionError
New Behavior
Uses the
bytes.decode
argumenterrors="replace"
to sub in � for anything that fails decoding. (This is what the builtin xattr tool does on output as well).Merge requirements satisfied?
[NOTICE] Bug fixes or features added to Salt require tests.
Commits signed with GPG?
Yes
Please review Salt's Contributing Guide for best practices.
See GitHub's page on GPG signing for more information about signing commits with GPG.