Especially, it's important to use BIO_ADDR_sockaddr_size() instead of
taking sizeof(addr), as BIO_ADDR is a union of several sockaddr variants
with different sizes, and some sendto() implementations are very picky
that the size is correct for the indicated sockaddr family.
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20449)
msg[0].data_len,
# endif
sysflags,
- msg[0].peer != NULL ? &msg[0].peer->sa : NULL,
- msg[0].peer != NULL ? sizeof(*msg[0].peer) : 0);
+ msg[0].peer != NULL ? BIO_ADDR_sockaddr(msg[0].peer) : NULL,
+ msg[0].peer != NULL ? BIO_ADDR_sockaddr_size(msg[0].peer) : 0);
if (ret <= 0) {
ERR_raise(ERR_LIB_SYS, get_last_socket_error());
*num_processed = 0;