| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
…sing the lock `_hacl_hmac_state_update_once()` converted the HACL* exit code into an exception while the thread state was detached and, for HMAC.update(), while the object's mutex was held. On debug builds, this re-attached the thread state under the mutex and then called PyErr_Occurred() with the thread state detached in the chunking loop of `_hacl_hmac_state_update()`. Return the raw HACL* exit code instead and convert it in `_hmac.new()` and `_hmac.HMAC.update()` once the thread state is re-attached and the mutex is released, as `hmac_digest_compute_locked()` already does. Release builds keep ignoring the update() exit code. Since `_hacl_convert_errno()` is now always called with an attached thread state, remove the `PyGILState_Ensure()` added by pythongh-135561 and assert that a thread state is attached instead.
There was a problem hiding this comment.
I added a commit... lets also simplify and always check for the error regardless of debug build or not.
Sorry, something went wrong.
|
GH-159825 is a backport of this pull request to the 3.15 branch. |
Sorry, something went wrong.
…asing the lock (GH-159805) (#159825) gh-159786: Convert HACL* update() errors in `_hmac` after releasing the lock (GH-159805) * gh-159786: Convert HACL* update() errors in `_hmac` after releasing the lock `_hacl_hmac_state_update_once()` converted the HACL* exit code into an exception while the thread state was detached and, for HMAC.update(), while the object's mutex was held. On debug builds, this re-attached the thread state under the mutex and then called PyErr_Occurred() with the thread state detached in the chunking loop of `_hacl_hmac_state_update()`. Return the raw HACL* exit code instead and convert it in `_hmac.new()` and `_hmac.HMAC.update()` once the thread state is re-attached and the mutex is released, as `hmac_digest_compute_locked()` already does. Release builds keep ignoring the update() exit code. Since `_hacl_convert_errno()` is now always called with an attached thread state, remove the `PyGILState_Ensure()` added by gh-135561 and assert that a thread state is attached instead. * simplify ifdefs: always check for the hacl error --------- (cherry picked from commit 0fba211) Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com> Co-authored-by: Gregory P. Smith <greg@krypto.org>
| Back | FazBrowse Home | New Git URL |
_hacl_hmac_state_update_once() converted the HACL* exit code into an exception while the thread state was detached and, for HMAC.update(), while the object's mutex was held. On debug builds, this re-attached the thread state under the mutex and then called PyErr_Occurred() with the thread state detached in the chunking loop of _hacl_hmac_state_update().
Return the raw HACL* exit code instead and convert it in _hmac.new() and _hmac.HMAC.update() once the thread state is re-attached and the mutex is released, as hmac_digest_compute_locked() already does. Release builds now also check for the error making for far simpler code. The actual trigger for an error from hacl was an unrealistically large data size.
Since _hacl_convert_errno() is now always called with an attached thread state, remove the PyGILState_Ensure() added by gh-135561 and assert that a thread state is attached instead.