Fix AttributeError crash in user_defaults artifact parsing #1412
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.
When processing artifacts, the user_defaults module crashed with an
AttributeError: 'str' object has no attribute 'items'.This occurs because, in some instances, the plist loader returns a string (e.g., when a previous exception handler sets the plist content to
"INVALID FILE") or fails to load a dictionary structure, but the code attempts to iterate over it using.items()without validation.Changes Made
Added Type Validation: Implemented
isinstance(plist, dict)checks before attempting to iterate throughplist.items(). This ensures that only valid dictionary objects are processed.Enhanced Error Handling: Wrapped the file processing loop in a try-except block to gracefully handle InvalidFileException or other generic exceptions.
Safety Checks: Added a check for MCMMetadataIdentifier to ensure the plist contains the necessary metadata before processing, preventing potential KeyErrors.
Test Result:
