Browse Source
bpo-43789: OpenSSL 3.0.0 Don't call passwd callback again in error case (GH-25303)
pull/25309/head
Christian Heimes
5 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
9 additions and
0 deletions
-
Misc/NEWS.d/next/Library/2021-04-09-14-08-03.bpo-43789.eaHlAm.rst
-
Modules/_ssl.c
|
|
|
@ -0,0 +1,2 @@ |
|
|
|
OpenSSL 3.0.0: Don't call the password callback function a second time when |
|
|
|
first call has signaled an error condition. |
|
|
|
@ -3926,6 +3926,13 @@ _password_callback(char *buf, int size, int rwflag, void *userdata) |
|
|
|
|
|
|
|
PySSL_END_ALLOW_THREADS_S(pw_info->thread_state); |
|
|
|
|
|
|
|
if (pw_info->error) { |
|
|
|
/* already failed previously. OpenSSL 3.0.0-alpha14 invokes the |
|
|
|
* callback multiple times which can lead to fatal Python error in |
|
|
|
* exception check. */ |
|
|
|
goto error; |
|
|
|
} |
|
|
|
|
|
|
|
if (pw_info->callable) { |
|
|
|
fn_ret = _PyObject_CallNoArg(pw_info->callable); |
|
|
|
if (!fn_ret) { |
|
|
|
|