Closed 33e511b4-e212-460e-8961-959c6b524946 closed 3 years ago
OpenSSL, specifically libcrypto, includes functions EVP_MD_CTX_create() and EVP_MD_CTX_destroy(), such that the application code only needs to forward declare the EVP_MD_CTX* pointer type.
Declaring the EVP_MD_CTX variable type directly requires compile-time knowledge of the size of the structure. This knowledge will be wrong when compiling with headers from OpenSSL 0.9.8 and dynamically linking at run time against OpenSSL 1.0.1. Result is a SIGSEGV as follows:
(gdb) bt
at /home/ryan/vaas/python/2.7.6/build/src/Python-2.7.6/Modules/_hashopenssl.c:436
at /home/ryan/vaas/python/2.7.6/build/src/Python-2.7.6/Modules/_hashopenssl.c:540
The attached patch updates all declarations in _hashopenssl.c to be pointers initialized by calling EVP_MD_CTX_create(). The patch is done against source version 3.4.1. I have a similar patch for version 2.7.6, but can only attach one file here?
This patch is out of date with the code, but comparing it with the code I think the fixes were made. Christian, can you confirm?
The code has changed a lot since this bug was opened. It's no longer an issue. Thanks for checking!
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields: ```python assignee = None closed_at =
created_at =
labels = ['extension-modules', 'type-crash']
title = 'Declaration of EVP_MD_CTX causes crash when switching between OpenSSL 0.9 and 1.0'
updated_at =
user = 'https://bugs.python.org/RyanCalhoun'
```
bugs.python.org fields:
```python
activity =
actor = 'christian.heimes'
assignee = 'none'
closed = True
closed_date =
closer = 'christian.heimes'
components = ['Extension Modules']
creation =
creator = 'Ryan.Calhoun'
dependencies = []
files = ['35330']
hgrepos = []
issue_num = 21564
keywords = ['patch']
message_count = 3.0
messages = ['218995', '381858', '381863']
nosy_count = 4.0
nosy_names = ['gregory.p.smith', 'christian.heimes', 'Ryan.Calhoun', 'iritkatriel']
pr_nums = []
priority = 'normal'
resolution = 'fixed'
stage = 'resolved'
status = 'closed'
superseder = None
type = 'crash'
url = 'https://bugs.python.org/issue21564'
versions = ['Python 2.7', 'Python 3.4']
```