Untangle ssl3_get_message() return values.
authorjsing <jsing@openbsd.org>
Sat, 23 Oct 2021 08:34:36 +0000 (08:34 +0000)
committerjsing <jsing@openbsd.org>
Sat, 23 Oct 2021 08:34:36 +0000 (08:34 +0000)
commitf2c3e96427d3af1c7095383f30258d8994a63d99
treeb5aab5d0bf0ed368703f7c5edfdc4b137fe85cec
parentc91a9b26e61c85e9250d928c383859305b65504e
Untangle ssl3_get_message() return values.

This function currently has a long return type that may be <= 0 on
error/retry (which is then cast to an int in order to return it up the
stack), or it returns the length of the handshake message (on success).
This obviously means that 0 can be returned for both success and failure,
which is the reason why a separate 'ok' argument has to exist.

Untangle this mess by changing the return value to an int that indicates
success (1) or error/retry (<= 0). The length never needs to actually be
returned as it is already stored in s->internal->init_num (which is where
the return value is read from anyway).

ok tb@
lib/libssl/d1_both.c
lib/libssl/dtls_locl.h
lib/libssl/ssl_both.c
lib/libssl/ssl_clnt.c
lib/libssl/ssl_locl.h
lib/libssl/ssl_srvr.c