webcrypto.dart icon indicating copy to clipboard operation
webcrypto.dart copied to clipboard

Ensure correct handling of errors from thread-local storage

Open jonasfj opened this issue 2 years ago • 0 comments

BoringCrypto exposes ERR_clear_error() which clears the thread-local error stack.

For any function in BoringCrypto which may set error state, we must read the error stack, before we do any async/await, as this may trigger the code to continue running on a different thread.

Perhaps, we have to use _Scope.sync for everything, and ensure that we check/clear the error stack at the end of every _Scope.sync block. Or maybe we have to invent a new block form.

jonasfj avatar Nov 02 '22 11:11 jonasfj