summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_blake2/blake2b_impl.c31
-rw-r--r--Modules/_blake2/blake2s_impl.c31
-rw-r--r--Modules/_blake2/clinic/blake2b_impl.c.h18
-rw-r--r--Modules/_blake2/clinic/blake2s_impl.c.h18
-rw-r--r--Modules/clinic/selectmodule.c.h10
-rw-r--r--Modules/selectmodule.c34
6 files changed, 47 insertions, 95 deletions
diff --git a/Modules/_blake2/blake2b_impl.c b/Modules/_blake2/blake2b_impl.c
index 822b9f2..92d7c5c 100644
--- a/Modules/_blake2/blake2b_impl.c
+++ b/Modules/_blake2/blake2b_impl.c
@@ -75,8 +75,8 @@ _blake2b.blake2b.__new__ as py_blake2b_new
person: Py_buffer = None
fanout: int = 1
depth: int = 1
- leaf_size as leaf_size_obj: object = NULL
- node_offset as node_offset_obj: object = NULL
+ leaf_size: unsigned_long = 0
+ node_offset: unsigned_long_long = 0
node_depth: int = 0
inner_size: int = 0
last_node: bool = False
@@ -87,17 +87,14 @@ Return a new BLAKE2b hash object.
static PyObject *
py_blake2b_new_impl(PyTypeObject *type, PyObject *data, int digest_size,
Py_buffer *key, Py_buffer *salt, Py_buffer *person,
- int fanout, int depth, PyObject *leaf_size_obj,
- PyObject *node_offset_obj, int node_depth,
+ int fanout, int depth, unsigned long leaf_size,
+ unsigned long long node_offset, int node_depth,
int inner_size, int last_node)
-/*[clinic end generated code: output=7506d8d890e5f13b input=e41548dfa0866031]*/
+/*[clinic end generated code: output=65e732c66c2297a0 input=75ab5196b695adee]*/
{
BLAKE2bObject *self = NULL;
Py_buffer buf;
- unsigned long leaf_size = 0;
- unsigned long long node_offset = 0;
-
self = new_BLAKE2bObject(type);
if (self == NULL) {
goto error;
@@ -152,25 +149,13 @@ py_blake2b_new_impl(PyTypeObject *type, PyObject *data, int digest_size,
}
self->param.depth = (uint8_t)depth;
- if (leaf_size_obj != NULL) {
- leaf_size = PyLong_AsUnsignedLong(leaf_size_obj);
- if (leaf_size == (unsigned long) -1 && PyErr_Occurred()) {
- goto error;
- }
- if (leaf_size > 0xFFFFFFFFU) {
- PyErr_SetString(PyExc_OverflowError, "leaf_size is too large");
- goto error;
- }
+ if (leaf_size > 0xFFFFFFFFU) {
+ PyErr_SetString(PyExc_OverflowError, "leaf_size is too large");
+ goto error;
}
// NB: Simple assignment here would be incorrect on big endian platforms.
store32(&(self->param.leaf_length), leaf_size);
- if (node_offset_obj != NULL) {
- node_offset = PyLong_AsUnsignedLongLong(node_offset_obj);
- if (node_offset == (unsigned long long) -1 && PyErr_Occurred()) {
- goto error;
- }
- }
#ifdef HAVE_BLAKE2S
if (node_offset > 0xFFFFFFFFFFFFULL) {
/* maximum 2**48 - 1 */
diff --git a/Modules/_blake2/blake2s_impl.c b/Modules/_blake2/blake2s_impl.c
index 3b76c9c..8c49082 100644
--- a/Modules/_blake2/blake2s_impl.c
+++ b/Modules/_blake2/blake2s_impl.c
@@ -75,8 +75,8 @@ _blake2s.blake2s.__new__ as py_blake2s_new
person: Py_buffer = None
fanout: int = 1
depth: int = 1
- leaf_size as leaf_size_obj: object = NULL
- node_offset as node_offset_obj: object = NULL
+ leaf_size: unsigned_long = 0
+ node_offset: unsigned_long_long = 0
node_depth: int = 0
inner_size: int = 0
last_node: bool = False
@@ -87,17 +87,14 @@ Return a new BLAKE2s hash object.
static PyObject *
py_blake2s_new_impl(PyTypeObject *type, PyObject *data, int digest_size,
Py_buffer *key, Py_buffer *salt, Py_buffer *person,
- int fanout, int depth, PyObject *leaf_size_obj,
- PyObject *node_offset_obj, int node_depth,
+ int fanout, int depth, unsigned long leaf_size,
+ unsigned long long node_offset, int node_depth,
int inner_size, int last_node)
-/*[clinic end generated code: output=fe060b258a8cbfc6 input=458cfdcb3d0d47ff]*/
+/*[clinic end generated code: output=b95806be0514dcf7 input=f18d6efd9b9a1271]*/
{
BLAKE2sObject *self = NULL;
Py_buffer buf;
- unsigned long leaf_size = 0;
- unsigned long long node_offset = 0;
-
self = new_BLAKE2sObject(type);
if (self == NULL) {
goto error;
@@ -152,25 +149,13 @@ py_blake2s_new_impl(PyTypeObject *type, PyObject *data, int digest_size,
}
self->param.depth = (uint8_t)depth;
- if (leaf_size_obj != NULL) {
- leaf_size = PyLong_AsUnsignedLong(leaf_size_obj);
- if (leaf_size == (unsigned long) -1 && PyErr_Occurred()) {
- goto error;
- }
- if (leaf_size > 0xFFFFFFFFU) {
- PyErr_SetString(PyExc_OverflowError, "leaf_size is too large");
- goto error;
- }
+ if (leaf_size > 0xFFFFFFFFU) {
+ PyErr_SetString(PyExc_OverflowError, "leaf_size is too large");
+ goto error;
}
// NB: Simple assignment here would be incorrect on big endian platforms.
store32(&(self->param.leaf_length), leaf_size);
- if (node_offset_obj != NULL) {
- node_offset = PyLong_AsUnsignedLongLong(node_offset_obj);
- if (node_offset == (unsigned long long) -1 && PyErr_Occurred()) {
- goto error;
- }
- }
#ifdef HAVE_BLAKE2S
if (node_offset > 0xFFFFFFFFFFFFULL) {
/* maximum 2**48 - 1 */
diff --git a/Modules/_blake2/clinic/blake2b_impl.c.h b/Modules/_blake2/clinic/blake2b_impl.c.h
index 71c073a..3cb70fb 100644
--- a/Modules/_blake2/clinic/blake2b_impl.c.h
+++ b/Modules/_blake2/clinic/blake2b_impl.c.h
@@ -5,7 +5,7 @@ preserve
PyDoc_STRVAR(py_blake2b_new__doc__,
"blake2b(string=None, *, digest_size=_blake2b.blake2b.MAX_DIGEST_SIZE,\n"
" key=None, salt=None, person=None, fanout=1, depth=1,\n"
-" leaf_size=None, node_offset=None, node_depth=0, inner_size=0,\n"
+" leaf_size=0, node_offset=0, node_depth=0, inner_size=0,\n"
" last_node=False)\n"
"--\n"
"\n"
@@ -14,8 +14,8 @@ PyDoc_STRVAR(py_blake2b_new__doc__,
static PyObject *
py_blake2b_new_impl(PyTypeObject *type, PyObject *data, int digest_size,
Py_buffer *key, Py_buffer *salt, Py_buffer *person,
- int fanout, int depth, PyObject *leaf_size_obj,
- PyObject *node_offset_obj, int node_depth,
+ int fanout, int depth, unsigned long leaf_size,
+ unsigned long long node_offset, int node_depth,
int inner_size, int last_node);
static PyObject *
@@ -23,7 +23,7 @@ py_blake2b_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"string", "digest_size", "key", "salt", "person", "fanout", "depth", "leaf_size", "node_offset", "node_depth", "inner_size", "last_node", NULL};
- static _PyArg_Parser _parser = {"|O$iy*y*y*iiOOiip:blake2b", _keywords, 0};
+ static _PyArg_Parser _parser = {"|O$iy*y*y*iiO&O&iip:blake2b", _keywords, 0};
PyObject *data = NULL;
int digest_size = BLAKE2B_OUTBYTES;
Py_buffer key = {NULL, NULL};
@@ -31,17 +31,17 @@ py_blake2b_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
Py_buffer person = {NULL, NULL};
int fanout = 1;
int depth = 1;
- PyObject *leaf_size_obj = NULL;
- PyObject *node_offset_obj = NULL;
+ unsigned long leaf_size = 0;
+ unsigned long long node_offset = 0;
int node_depth = 0;
int inner_size = 0;
int last_node = 0;
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
- &data, &digest_size, &key, &salt, &person, &fanout, &depth, &leaf_size_obj, &node_offset_obj, &node_depth, &inner_size, &last_node)) {
+ &data, &digest_size, &key, &salt, &person, &fanout, &depth, _PyLong_UnsignedLong_Converter, &leaf_size, _PyLong_UnsignedLongLong_Converter, &node_offset, &node_depth, &inner_size, &last_node)) {
goto exit;
}
- return_value = py_blake2b_new_impl(type, data, digest_size, &key, &salt, &person, fanout, depth, leaf_size_obj, node_offset_obj, node_depth, inner_size, last_node);
+ return_value = py_blake2b_new_impl(type, data, digest_size, &key, &salt, &person, fanout, depth, leaf_size, node_offset, node_depth, inner_size, last_node);
exit:
/* Cleanup for key */
@@ -122,4 +122,4 @@ _blake2b_blake2b_hexdigest(BLAKE2bObject *self, PyObject *Py_UNUSED(ignored))
{
return _blake2b_blake2b_hexdigest_impl(self);
}
-/*[clinic end generated code: output=535a54852c98e51c input=a9049054013a1b77]*/
+/*[clinic end generated code: output=afc5c45dff0a24f9 input=a9049054013a1b77]*/
diff --git a/Modules/_blake2/clinic/blake2s_impl.c.h b/Modules/_blake2/clinic/blake2s_impl.c.h
index ca908d3..b444f7b 100644
--- a/Modules/_blake2/clinic/blake2s_impl.c.h
+++ b/Modules/_blake2/clinic/blake2s_impl.c.h
@@ -5,7 +5,7 @@ preserve
PyDoc_STRVAR(py_blake2s_new__doc__,
"blake2s(string=None, *, digest_size=_blake2s.blake2s.MAX_DIGEST_SIZE,\n"
" key=None, salt=None, person=None, fanout=1, depth=1,\n"
-" leaf_size=None, node_offset=None, node_depth=0, inner_size=0,\n"
+" leaf_size=0, node_offset=0, node_depth=0, inner_size=0,\n"
" last_node=False)\n"
"--\n"
"\n"
@@ -14,8 +14,8 @@ PyDoc_STRVAR(py_blake2s_new__doc__,
static PyObject *
py_blake2s_new_impl(PyTypeObject *type, PyObject *data, int digest_size,
Py_buffer *key, Py_buffer *salt, Py_buffer *person,
- int fanout, int depth, PyObject *leaf_size_obj,
- PyObject *node_offset_obj, int node_depth,
+ int fanout, int depth, unsigned long leaf_size,
+ unsigned long long node_offset, int node_depth,
int inner_size, int last_node);
static PyObject *
@@ -23,7 +23,7 @@ py_blake2s_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"string", "digest_size", "key", "salt", "person", "fanout", "depth", "leaf_size", "node_offset", "node_depth", "inner_size", "last_node", NULL};
- static _PyArg_Parser _parser = {"|O$iy*y*y*iiOOiip:blake2s", _keywords, 0};
+ static _PyArg_Parser _parser = {"|O$iy*y*y*iiO&O&iip:blake2s", _keywords, 0};
PyObject *data = NULL;
int digest_size = BLAKE2S_OUTBYTES;
Py_buffer key = {NULL, NULL};
@@ -31,17 +31,17 @@ py_blake2s_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
Py_buffer person = {NULL, NULL};
int fanout = 1;
int depth = 1;
- PyObject *leaf_size_obj = NULL;
- PyObject *node_offset_obj = NULL;
+ unsigned long leaf_size = 0;
+ unsigned long long node_offset = 0;
int node_depth = 0;
int inner_size = 0;
int last_node = 0;
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
- &data, &digest_size, &key, &salt, &person, &fanout, &depth, &leaf_size_obj, &node_offset_obj, &node_depth, &inner_size, &last_node)) {
+ &data, &digest_size, &key, &salt, &person, &fanout, &depth, _PyLong_UnsignedLong_Converter, &leaf_size, _PyLong_UnsignedLongLong_Converter, &node_offset, &node_depth, &inner_size, &last_node)) {
goto exit;
}
- return_value = py_blake2s_new_impl(type, data, digest_size, &key, &salt, &person, fanout, depth, leaf_size_obj, node_offset_obj, node_depth, inner_size, last_node);
+ return_value = py_blake2s_new_impl(type, data, digest_size, &key, &salt, &person, fanout, depth, leaf_size, node_offset, node_depth, inner_size, last_node);
exit:
/* Cleanup for key */
@@ -122,4 +122,4 @@ _blake2s_blake2s_hexdigest(BLAKE2sObject *self, PyObject *Py_UNUSED(ignored))
{
return _blake2s_blake2s_hexdigest_impl(self);
}
-/*[clinic end generated code: output=535ea7903f9ccf76 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=b705723d16f21f57 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/selectmodule.c.h b/Modules/clinic/selectmodule.c.h
index f66ceaa..b87b390 100644
--- a/Modules/clinic/selectmodule.c.h
+++ b/Modules/clinic/selectmodule.c.h
@@ -83,7 +83,7 @@ select_poll_register(pollObject *self, PyObject *const *args, Py_ssize_t nargs)
unsigned short eventmask = POLLIN | POLLPRI | POLLOUT;
if (!_PyArg_ParseStack(args, nargs, "O&|O&:register",
- fildes_converter, &fd, ushort_converter, &eventmask)) {
+ fildes_converter, &fd, _PyLong_UnsignedShort_Converter, &eventmask)) {
goto exit;
}
return_value = select_poll_register_impl(self, fd, eventmask);
@@ -122,7 +122,7 @@ select_poll_modify(pollObject *self, PyObject *const *args, Py_ssize_t nargs)
unsigned short eventmask;
if (!_PyArg_ParseStack(args, nargs, "O&O&:modify",
- fildes_converter, &fd, ushort_converter, &eventmask)) {
+ fildes_converter, &fd, _PyLong_UnsignedShort_Converter, &eventmask)) {
goto exit;
}
return_value = select_poll_modify_impl(self, fd, eventmask);
@@ -229,7 +229,7 @@ select_devpoll_register(devpollObject *self, PyObject *const *args, Py_ssize_t n
unsigned short eventmask = POLLIN | POLLPRI | POLLOUT;
if (!_PyArg_ParseStack(args, nargs, "O&|O&:register",
- fildes_converter, &fd, ushort_converter, &eventmask)) {
+ fildes_converter, &fd, _PyLong_UnsignedShort_Converter, &eventmask)) {
goto exit;
}
return_value = select_devpoll_register_impl(self, fd, eventmask);
@@ -269,7 +269,7 @@ select_devpoll_modify(devpollObject *self, PyObject *const *args, Py_ssize_t nar
unsigned short eventmask = POLLIN | POLLPRI | POLLOUT;
if (!_PyArg_ParseStack(args, nargs, "O&|O&:modify",
- fildes_converter, &fd, ushort_converter, &eventmask)) {
+ fildes_converter, &fd, _PyLong_UnsignedShort_Converter, &eventmask)) {
goto exit;
}
return_value = select_devpoll_modify_impl(self, fd, eventmask);
@@ -1047,4 +1047,4 @@ exit:
#ifndef SELECT_KQUEUE_CONTROL_METHODDEF
#define SELECT_KQUEUE_CONTROL_METHODDEF
#endif /* !defined(SELECT_KQUEUE_CONTROL_METHODDEF) */
-/*[clinic end generated code: output=3e425445d49c49e2 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=561bec8bcb0e00c5 input=a9049054013a1b77]*/
diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index 9ad6f8b..15aca27 100644
--- a/Modules/selectmodule.c
+++ b/Modules/selectmodule.c
@@ -430,30 +430,12 @@ update_ufd_array(pollObject *self)
return 1;
}
-static int
-ushort_converter(PyObject *obj, void *ptr)
-{
- unsigned long uval;
-
- uval = PyLong_AsUnsignedLong(obj);
- if (uval == (unsigned long)-1 && PyErr_Occurred())
- return 0;
- if (uval > USHRT_MAX) {
- PyErr_SetString(PyExc_OverflowError,
- "Python int too large for C unsigned short");
- return 0;
- }
-
- *(unsigned short *)ptr = Py_SAFE_DOWNCAST(uval, unsigned long, unsigned short);
- return 1;
-}
-
/*[clinic input]
select.poll.register
fd: fildes
either an integer, or an object with a fileno() method returning an int
- eventmask: object(converter="ushort_converter", type="unsigned short", c_default="POLLIN | POLLPRI | POLLOUT") = POLLIN | POLLPRI | POLLOUT
+ eventmask: unsigned_short(c_default="POLLIN | POLLPRI | POLLOUT") = POLLIN | POLLPRI | POLLOUT
an optional bitmask describing the type of events to check for
/
@@ -462,7 +444,7 @@ Register a file descriptor with the polling object.
static PyObject *
select_poll_register_impl(pollObject *self, int fd, unsigned short eventmask)
-/*[clinic end generated code: output=0dc7173c800a4a65 input=499d96a2836217f5]*/
+/*[clinic end generated code: output=0dc7173c800a4a65 input=f18711d9bb021e25]*/
{
PyObject *key, *value;
int err;
@@ -495,7 +477,7 @@ select.poll.modify
fd: fildes
either an integer, or an object with a fileno() method returning
an int
- eventmask: object(converter="ushort_converter", type="unsigned short")
+ eventmask: unsigned_short
a bitmask describing the type of events to check for
/
@@ -504,7 +486,7 @@ Modify an already registered file descriptor.
static PyObject *
select_poll_modify_impl(pollObject *self, int fd, unsigned short eventmask)
-/*[clinic end generated code: output=1a7b88bf079eff17 input=b8e0e04a1264b78f]*/
+/*[clinic end generated code: output=1a7b88bf079eff17 input=a8e383df075c32cf]*/
{
PyObject *key, *value;
int err;
@@ -832,7 +814,7 @@ select.devpoll.register
fd: fildes
either an integer, or an object with a fileno() method returning
an int
- eventmask: object(converter="ushort_converter", type="unsigned short", c_default="POLLIN | POLLPRI | POLLOUT") = POLLIN | POLLPRI | POLLOUT
+ eventmask: unsigned_short(c_default="POLLIN | POLLPRI | POLLOUT") = POLLIN | POLLPRI | POLLOUT
an optional bitmask describing the type of events to check for
/
@@ -842,7 +824,7 @@ Register a file descriptor with the polling object.
static PyObject *
select_devpoll_register_impl(devpollObject *self, int fd,
unsigned short eventmask)
-/*[clinic end generated code: output=6e07fe8b74abba0c input=389a0785bb8feb57]*/
+/*[clinic end generated code: output=6e07fe8b74abba0c input=5bd7cacc47a8ee46]*/
{
return internal_devpoll_register(self, fd, eventmask, 0);
}
@@ -853,7 +835,7 @@ select.devpoll.modify
fd: fildes
either an integer, or an object with a fileno() method returning
an int
- eventmask: object(converter="ushort_converter", type="unsigned short", c_default="POLLIN | POLLPRI | POLLOUT") = POLLIN | POLLPRI | POLLOUT
+ eventmask: unsigned_short(c_default="POLLIN | POLLPRI | POLLOUT") = POLLIN | POLLPRI | POLLOUT
an optional bitmask describing the type of events to check for
/
@@ -863,7 +845,7 @@ Modify a possible already registered file descriptor.
static PyObject *
select_devpoll_modify_impl(devpollObject *self, int fd,
unsigned short eventmask)
-/*[clinic end generated code: output=bc2e6d23aaff98b4 input=f0d7de3889cc55fb]*/
+/*[clinic end generated code: output=bc2e6d23aaff98b4 input=48a820fc5967165d]*/
static PyObject *
devpoll_modify(devpollObject *self, PyObject *args)
{