Commit f8a455f
committed
gh-155397: Raise InvalidFileException for malformed XML plists
plistlib.load()/loads() is documented to raise InvalidFileException when
a file cannot be parsed, but _PlistParser.parse() called expat's
ParseFile() with no exception translation. Two classes of malformed XML
plist leaked the underlying exception instead:
* XML that is not well-formed raised xml.parsers.expat.ExpatError.
* An <?xml ... ?> declaration naming an encoding unknown to Python's
codec registry raised LookupError.
Neither is a subclass of ValueError (InvalidFileException's base), so
callers following the documented contract did not catch them. Translate
both into InvalidFileException and add regression tests.1 parent 67f4d53 commit f8a455f
3 files changed
Lines changed: 24 additions & 2 deletions
File tree
- Lib
- test
- Misc/NEWS.d/next/Library
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
67 | 67 | | |
68 | 68 | | |
69 | 69 | | |
70 | | - | |
| 70 | + | |
71 | 71 | | |
72 | 72 | | |
73 | 73 | | |
| |||
185 | 185 | | |
186 | 186 | | |
187 | 187 | | |
188 | | - | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
189 | 196 | | |
190 | 197 | | |
191 | 198 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
916 | 916 | | |
917 | 917 | | |
918 | 918 | | |
| 919 | + | |
| 920 | + | |
| 921 | + | |
| 922 | + | |
| 923 | + | |
| 924 | + | |
| 925 | + | |
| 926 | + | |
| 927 | + | |
| 928 | + | |
| 929 | + | |
| 930 | + | |
| 931 | + | |
| 932 | + | |
919 | 933 | | |
920 | 934 | | |
921 | 935 | | |
| |||
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
0 commit comments