40 Commits

Author SHA1 Message Date
Serhiy Storchaka
212d32f45c bpo-42249: Fix writing binary Plist files larger than 4 GiB. (GH-23121) 2020-11-03 16:15:56 +02:00
Serhiy Storchaka
34637a0ce2 bpo-42103: Improve validation of Plist files. (GH-22882)
* Prevent some possible DoS attacks via providing invalid Plist files
  with extremely large number of objects or collection sizes.
* Raise InvalidFileException for too large bytes and string size instead of returning garbage.
* Raise InvalidFileException instead of ValueError for specific invalid datetime (NaN).
* Raise InvalidFileException instead of TypeError for non-hashable dict keys.
* Add more tests for invalid Plist files.
2020-11-02 23:01:40 +02:00
Ronald Oussoren
3185267400 bpo-41491: plistlib: accept hexadecimal integer values in xml plist files (GH-22764) 2020-10-20 09:26:33 +02:00
Ronald Oussoren
05ee790f4d bpo-42051: Reject XML entity declarations in plist files (#22760) 2020-10-19 20:13:49 +02:00
Victor Stinner
90549676e0 bpo-40443: Remove unused imports in the stdlib (GH-19803) 2020-04-30 11:26:33 +02:00
Jon Janzen
ce81a925ef bpo-36409: Remove old plistlib API deprecated in 3.4 (GH-15615)
* Remove implementation for old plistlib API deprecated in 3.4
2019-09-05 10:11:35 +02:00
Collin Styles
0d4f4352ef Clarify that plistlib's load and dump functions take a binary file object (GH-9825)
The documentation says that the fp parameter to plistlib.load "should be a
readable and binary file object" but the docstring only mentions that it
should be readable. Similarly, plistlib.dump's docstring only mentions
"writable". This commit clarifies that fp should also be binary.

https://docs.python.org/3/library/plistlib.html#plistlib.load
https://docs.python.org/3/library/plistlib.html#plistlib.dump
2019-07-14 11:01:48 +02:00
Jon Janzen
c981ad16b0 bpo-26707: Enable plistlib to read UID keys. (GH-12153)
Plistlib currently throws an exception when asked to decode a valid
.plist file that was generated by Apple's NSKeyedArchiver. Specifically,
this is caused by a byte 0x80 (signifying a UID) not being understood.

This fixes the problem by enabling the binary plist reader and writer
to read and write plistlib.UID objects.
2019-05-15 23:14:38 +03:00
Srinivas Reddy Thatiparthy (శ్రీనివాస్ రెడ్డి తాటిపర్తి)
acdc660efc bpo-33908: Remove two superfluous assignments (GH-7116)
Signed-off-by: Srinivas Reddy Thatiparthy <thatiparthysreenivas@gmail.com>
2018-06-20 13:07:31 +08:00
Serhiy Storchaka
a897aeeef6 bpo-32072: Fix issues with binary plists. (#4455)
* Fixed saving bytearrays.
* Identical objects will be saved only once.
* Equal references will be load as identical objects.
* Added support for saving and loading recursive data structures.
2017-11-30 23:26:11 +02:00
Serhiy Storchaka
db91e0fe24 bpo-31897: Convert unexpected errors when read bogus binary plists into InvalidFileException. (#4171) 2017-10-31 14:05:53 +02:00
Serhiy Storchaka
edef358ed6 bpo-29196: Removed old-deprecated classes Plist, Dict and _InternalDict (#488)
in the plistlib module.  Dict values in the result of functions
readPlist() and readPlistFromBytes() are now exact dicts.
2017-05-15 13:21:31 +03:00
Serhiy Storchaka
db8d6265fa Issue #28321: Fixed writing non-BMP characters with binary format in plistlib. 2016-10-04 20:08:29 +03:00
Serhiy Storchaka
7338ebc4ba Issue #28321: Fixed writing non-BMP characters with binary format in plistlib. 2016-10-04 20:04:30 +03:00
Martin Panter
d04d21373f Issue #27109: Add InvalidFileException to __all__, by Jacek Kołodziej 2016-06-06 02:00:50 +00:00
Serhiy Storchaka
dd1bcdf618 Issue #26711: Fixed the comparison of plistlib.Data with other types. 2016-05-01 13:36:16 +03:00
Serhiy Storchaka
94ad49fabc Issue #26709: Fixed Y2038 problem in loading binary PLists. 2016-04-08 15:00:02 +03:00
Serhiy Storchaka
8966759b03 Issue #21888: plistlib's load() and loads() now work if the fmt parameter is
specified.
2014-07-23 18:49:31 +03:00
Serhiy Storchaka
065266450e Issue #21538: The plistlib module now supports loading of binary plist files
when reference or offset size is not a power of two.
2014-05-23 16:13:33 +03:00
Ronald Oussoren
94e44a935b Issue #14455: fix handling of unsigned long long values for binary plist files
Values in the range of an unsigned long long, but outside of the range
of a signed long long were serialized as a negative value.

Due to a bug in PyObjC my test scripts indicated that the previous behavior
matched Apple's plist code, instead the handle large unsigned values correctly.

The change to plistlib.py is from a patch by Serhiy.
2014-02-06 11:19:18 +01:00
Ronald Oussoren
6db6653bbc Issue #14455: Fix some issues with plistlib
* Negative integer support in binary plists was broken

* Better exception for invalid data

* Fix the versionadded/versionchanged markup in the documentation

* Add the interface cleanup to what's new for 3.4
2014-01-15 11:32:35 +01:00
Ned Deily
c06d6fdc37 Issue #14455: Fix maybe_open typo in Plist.fromFile(). 2013-11-21 20:56:23 -08:00
Ronald Oussoren
c5cf797342 Issue #14455: plistlib now supports binary plists and has an updated API.
This patch adds support for binary plists on OSX to plistlib (based
on a patch by 'dpounces').

The patch also cleans up the API for the plistlib module.
2013-11-21 15:46:49 +01:00
Ronald Oussoren
326edfde56 Ensure that plistlib doesn't corrupt deeply nested datastructures
Without this changeset plistlib would write empty tags for plistlib.Data
objects in deeply nested datastructures.

Fixes #17353
2013-04-23 13:47:22 +02:00
Hynek Schlawack
52209d3a1e #14835: Make plistlib output empty arrays & dicts like OS X
Patch by Sidney San Martín.
2012-05-29 12:04:54 +02:00