apache / cloudberry

One advanced and mature open-source MPP (Massively Parallel Processing) database. Open source alternative to Greenplum Database.
https://cloudberry.apache.org
Apache License 2.0
418 stars 104 forks source link

Use BIO_{get,set}_app_data instead of BIO_{get,set}_data. #716

Closed wenchaozhang-123 closed 18 hours ago

wenchaozhang-123 commented 2 days ago

We should have done it this way all along, but we accidentally got away with using the wrong BIO field up until OpenSSL 3.2. There, the library's BIO routines that we rely on use the "data" field for their own purposes, and our conflicting use causes assorted weird behaviors up to and including core dumps when SSL connections are attempted. Switch to using the approved field for the purpose, i.e. app_data.

While at it, remove our configure probes for BIO_getdata as well as the fallback implementation. BIO{get,set}_app_data have been there since long before any OpenSSL version that we still support, even in the back branches.

Also, update src/test/ssl/t/001_ssltests.pl to allow for a minor change in an error message spelling that evidently came in with 3.2.

Tristan Partin and Bo Andreson. Back-patch to all supported branches.

Discussion: https://postgr.es/m/CAN55FZ1eDDYsYaL7mv+oSLUij2h_u6hvD4Qmv-7PK7jkji0uyQ@mail.gmail.com

fix #ISSUE_Number


Change logs

Describe your change clearly, including what problem is being solved or what feature is being added.

If it has some breaking backward or forward compatibility, please clary.

Why are the changes needed?

Describe why the changes are necessary.

Does this PR introduce any user-facing change?

If yes, please clarify the previous behavior and the change this PR proposes.

How was this patch tested?

Please detail how the changes were tested, including manual tests and any relevant unit or integration tests.

Contributor's Checklist

Here are some reminders and checklists before/when submitting your pull request, please check them:

reshke commented 19 hours ago

Given this is a cherry-pick from PostgreSQL this is cleary ready is soon as tests passes (which very likely to be).

reshke commented 17 hours ago

After merging this test failed in main branch:

 drop table foo_p;
+DETAIL:  The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
+ERROR:  Error on receive from seg0 172.18.0.2:7002 pid=41173: server closed the connection unexpectedly
+HINT:  In a moment you should be able to reconnect to the database and repeat your command.
+WARNING:  terminating connection because of crash of another server process
+   This probably means the server terminated abnormally
+   before or while processing the request.

Seems an unrelated flap.