crypto: propagate errors from TLS session I/O callbacks
authorDaniel P. Berrangé <berrange@redhat.com>
Fri, 15 Mar 2024 14:29:11 +0000 (14:29 +0000)
committerDaniel P. Berrangé <berrange@redhat.com>
Wed, 24 Jul 2024 09:39:10 +0000 (10:39 +0100)
commit97f7bf113eb50fcdaf0c73aa2ee01e5355abc073
tree2efc788f71855eae6b5aebf68ead7e0a36c2cfcf
parent57941c9c86357a6a642f9ee3279d881df4043b6d
crypto: propagate errors from TLS session I/O callbacks

GNUTLS doesn't know how to perform I/O on anything other than plain
FDs, so the TLS session provides it with some I/O callbacks. The
GNUTLS API design requires these callbacks to return a unix errno
value, which means we're currently loosing the useful QEMU "Error"
object.

This changes the I/O callbacks in QEMU to stash the "Error" object
in the QCryptoTLSSession class, and fetch it when seeing an I/O
error returned from GNUTLS, thus preserving useful error messages.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
crypto/tlssession.c
include/crypto/tlssession.h
io/channel-tls.c
tests/unit/test-crypto-tlssession.c