There was an error while loading. Please reload this page.
2 parents 3b1bc78 + de5f9f4 commit 6c8b66cCopy full SHA for 6c8b66c
2 files changed
Lib/test/test_pyexpat.py
@@ -3,6 +3,7 @@
3
4
from io import BytesIO
5
import os
6
+import sys
7
import sysconfig
8
import unittest
9
import traceback
@@ -543,6 +544,8 @@ def test_wrong_size(self):
543
544
parser.buffer_size = -1
545
with self.assertRaises(ValueError):
546
parser.buffer_size = 0
547
+ with self.assertRaises((ValueError, OverflowError)):
548
+ parser.buffer_size = sys.maxsize + 1
549
with self.assertRaises(TypeError):
550
parser.buffer_size = 512.0
551
Modules/pyexpat.c
@@ -1440,17 +1440,18 @@ xmlparse_setattro(xmlparseobject *self, PyObject *name, PyObject *v)
1440
return -1;
1441
}
1442
1443
- new_buffer_size=PyLong_AS_LONG(v);
+ new_buffer_size = PyLong_AsLong(v);
1444
+ if (new_buffer_size <= 0) {
1445
+ if (!PyErr_Occurred())
1446
+ PyErr_SetString(PyExc_ValueError, "buffer_size must be greater than zero");
1447
+ return -1;
1448
+ }
1449
+
1450
/* trivial case -- no change */
1451
if (new_buffer_size == self->buffer_size) {
1452
return 0;
1453
1454
- if (new_buffer_size <= 0) {
- PyErr_SetString(PyExc_ValueError, "buffer_size must be greater than zero");
- return -1;
- }
-
1455
/* check maximum */
1456
if (new_buffer_size > INT_MAX) {
1457
char errmsg[100];
0 commit comments