[New-bugs-announce] [issue22993] Plistlib fails on certain valid plist values

Connor Wolf report at bugs.python.org
Thu Dec 4 07:34:34 CET 2014


New submission from Connor Wolf:

I'm using plistlib to process plist files produced by an iphone app. Somehow, the application is generating plist files with a absolute date value along the lines of `0000-12-30T00:00:00Z`.

This is a valid date, and the apple plist libraries can handle this without issue. However, it causes a ValueError if you load a plist containing it.

Minimal example:

python file:  
```
import plistlib
test = plistlib.readPlist('./test.plist')
```

plist file:  
```
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Test</key>
	<date>0000-12-30T00:00:00Z</date>
</dict>
</plist>
```

This fails on both python3 and python2, with the exact same error:


```
herp at mainnas:/media/Storage/Scripts/pFail$ python3 test.py
Traceback (most recent call last):
  File "test.py", line 3, in <module>
    test = plistlib.readPlist('./test.plist')
  File "/usr/lib/python3.4/plistlib.py", line 164, in readPlist
    dict_type=_InternalDict)
  File "/usr/lib/python3.4/plistlib.py", line 995, in load
    return p.parse(fp)
  File "/usr/lib/python3.4/plistlib.py", line 325, in parse
    self.parser.ParseFile(fileobj)
  File "/usr/lib/python3.4/plistlib.py", line 337, in handle_end_element
    handler()
  File "/usr/lib/python3.4/plistlib.py", line 413, in end_date
    self.add_object(_date_from_string(self.get_data()))
  File "/usr/lib/python3.4/plistlib.py", line 291, in _date_from_string
    return datetime.datetime(*lst)
ValueError: year is out of range
herp at mainnas:/media/Storage/Scripts/pFail$ python test.py
Traceback (most recent call last):
  File "test.py", line 3, in <module>
    test = plistlib.readPlist('./test.plist')
  File "/usr/lib/python2.7/plistlib.py", line 78, in readPlist
    rootObject = p.parse(pathOrFile)
  File "/usr/lib/python2.7/plistlib.py", line 406, in parse
    parser.ParseFile(fileobj)
  File "/usr/lib/python2.7/plistlib.py", line 418, in handleEndElement
    handler()
  File "/usr/lib/python2.7/plistlib.py", line 474, in end_date
    self.addObject(_dateFromString(self.getData()))
  File "/usr/lib/python2.7/plistlib.py", line 198, in _dateFromString
    return datetime.datetime(*lst)
ValueError: year is out of range
herp at mainnas:/media/Storage/Scripts/pFail$

```

----------
components: Library (Lib)
messages: 232107
nosy: Connor.Wolf
priority: normal
severity: normal
status: open
title: Plistlib fails on certain valid plist values
type: behavior
versions: Python 2.7, Python 3.4

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue22993>
_______________________________________


More information about the New-bugs-announce mailing list