[issue26707] plistlib fails to parse bplist with 0x80 UID values

Jon Janzen report at bugs.python.org
Tue Mar 13 13:29:20 EDT 2018


Jon Janzen <jjjonjanzen at gmail.com> added the comment:

Support for KeyedArchives are not limited to the Swift implementation I linked to. They have been supported since Mac OS X since 10.2 (long before Swift came around). The documentation (https://developer.apple.com/documentation/foundation/nskeyedarchiver?language=objc) shows that NSKeyedArchive can only output in plist format since outputFormat is of type NSPropertyListFormat (allowing to output in either XML or binary).

The other unimplemented binary token types (URL, UUID, set, ordset) are not used under NSKeyedArchive (see the "Encoding Data and Objects" section of the documentation mentioned above) so there's no concern that supporting 0x80 (UID) will suddenly necessitate implementing the other unimplemented types. If you feel that it would be necessary to implement them in order to accept the patch I would be happy to try and implement them.

I know I certainly have an use case (reading to-do list data from the 2Do app) and the creator of this bug wanted to read SnapChat data files.

Currently, I am using a hot-patched plistlib._BinaryPlistParser to read the data I need (see attached for a snippet) and I would rather not do that, but if you think my use case scope does not warrant inclusion in the standard library then I'll just have to deal with that.

----------
Added file: https://bugs.python.org/file47483/plist_hack.py

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue26707>
_______________________________________


More information about the Python-bugs-list mailing list