Skip to content

Commit 9163598

Browse files
committed
fix: detect duplicate data arg in tp_init
1 parent b215bb6 commit 9163598

1 file changed

Lines changed: 16 additions & 0 deletions

File tree

src/_xxhash.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,10 @@ static int PYXXH32_init(PYXXH32Object *self, PyObject *args, PyObject *kwargs)
530530

531531
if (nargs >= 1) {
532532
data_obj = PyTuple_GET_ITEM(args, 0);
533+
if (kwargs && PyDict_GetItemString(kwargs, "data")) {
534+
PyErr_SetString(PyExc_TypeError, "__init__() got multiple values for argument 'data'");
535+
return -1;
536+
}
533537
if (nargs > 1) {
534538
PyErr_SetString(PyExc_TypeError, "__init__() takes at most 1 positional argument");
535539
return -1;
@@ -901,6 +905,10 @@ static int PYXXH64_init(PYXXH64Object *self, PyObject *args, PyObject *kwargs)
901905

902906
if (nargs >= 1) {
903907
data_obj = PyTuple_GET_ITEM(args, 0);
908+
if (kwargs && PyDict_GetItemString(kwargs, "data")) {
909+
PyErr_SetString(PyExc_TypeError, "__init__() got multiple values for argument 'data'");
910+
return -1;
911+
}
904912
if (nargs > 1) {
905913
PyErr_SetString(PyExc_TypeError, "__init__() takes at most 1 positional argument");
906914
return -1;
@@ -1271,6 +1279,10 @@ static int PYXXH3_64_init(PYXXH3_64Object *self, PyObject *args, PyObject *kwarg
12711279

12721280
if (nargs >= 1) {
12731281
data_obj = PyTuple_GET_ITEM(args, 0);
1282+
if (kwargs && PyDict_GetItemString(kwargs, "data")) {
1283+
PyErr_SetString(PyExc_TypeError, "__init__() got multiple values for argument 'data'");
1284+
return -1;
1285+
}
12741286
if (nargs > 1) {
12751287
PyErr_SetString(PyExc_TypeError, "__init__() takes at most 1 positional argument");
12761288
return -1;
@@ -1650,6 +1662,10 @@ static int PYXXH3_128_init(PYXXH3_128Object *self, PyObject *args, PyObject *kwa
16501662

16511663
if (nargs >= 1) {
16521664
data_obj = PyTuple_GET_ITEM(args, 0);
1665+
if (kwargs && PyDict_GetItemString(kwargs, "data")) {
1666+
PyErr_SetString(PyExc_TypeError, "__init__() got multiple values for argument 'data'");
1667+
return -1;
1668+
}
16531669
if (nargs > 1) {
16541670
PyErr_SetString(PyExc_TypeError, "__init__() takes at most 1 positional argument");
16551671
return -1;

0 commit comments

Comments
 (0)