mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
gh-132987: Support __index__() in the ssl.SSLContext.options setter (GH-133098)
This commit is contained in:
parent
d6da6803a1
commit
0fb4c38c27
2 changed files with 3 additions and 7 deletions
|
@ -986,7 +986,7 @@ class ContextTests(unittest.TestCase):
|
|||
self.assertEqual(0, ctx.options & ~ssl.OP_NO_SSLv3)
|
||||
|
||||
# invalid options
|
||||
with self.assertRaises(OverflowError):
|
||||
with self.assertRaises(ValueError):
|
||||
ctx.options = -1
|
||||
with self.assertRaises(OverflowError):
|
||||
ctx.options = 2 ** 100
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
|
||||
#include "Python.h"
|
||||
#include "pycore_fileutils.h" // _PyIsSelectable_fd()
|
||||
#include "pycore_long.h" // _PyLong_UnsignedLongLong_Converter()
|
||||
#include "pycore_pyerrors.h" // _PyErr_ChainExceptions1()
|
||||
#include "pycore_time.h" // _PyDeadline_Init()
|
||||
|
||||
|
@ -3812,7 +3813,6 @@ static int
|
|||
_ssl__SSLContext_options_set_impl(PySSLContext *self, PyObject *value)
|
||||
/*[clinic end generated code: output=92ca34731ece5dbb input=2b94bf789e9ae5dd]*/
|
||||
{
|
||||
PyObject *new_opts_obj;
|
||||
unsigned long long new_opts_arg;
|
||||
uint64_t new_opts, opts, clear, set;
|
||||
uint64_t opt_no = (
|
||||
|
@ -3820,11 +3820,7 @@ _ssl__SSLContext_options_set_impl(PySSLContext *self, PyObject *value)
|
|||
SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_3
|
||||
);
|
||||
|
||||
if (!PyArg_Parse(value, "O!", &PyLong_Type, &new_opts_obj)) {
|
||||
return -1;
|
||||
}
|
||||
new_opts_arg = PyLong_AsUnsignedLongLong(new_opts_obj);
|
||||
if (new_opts_arg == (unsigned long long)-1 && PyErr_Occurred()) {
|
||||
if (!PyArg_Parse(value, "O&", _PyLong_UnsignedLongLong_Converter, &new_opts_arg)) {
|
||||
return -1;
|
||||
}
|
||||
Py_BUILD_ASSERT(sizeof(new_opts) >= sizeof(new_opts_arg));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue