Re: git: a5e6bee5a0bf - main - hastd: Use void pointers for opaque data

From: Renato Botelho <garga_at_FreeBSD.org>
Date: Tue, 20 Oct 2026 14:49:35 UTC
On 20/10/26 10:29, Dag-Erling Smørg rav wrote:
> The branch main has been updated by des:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=a5e6bee5a0bff9e9c12037e0b2c76c4f2ab5e046
> 
> commit a5e6bee5a0bff9e9c12037e0b2c76c4f2ab5e046
> Author:     Dag-Erling Smørgrav <des@FreeBSD.org>
> AuthorDate: 2026-10-20 13:28:42 +0000
> Commit:     Dag-Erling Smørgrav <des@FreeBSD.org>
> CommitDate: 2026-10-20 13:28:42 +0000
> 
>      hastd: Use void pointers for opaque data
>      
>      Use void, not char, for pointers to opaque data in our send and receive
>      functions.
>      
>      Sponsored by:   Klara, Inc.
>      Reviewed by:    allanjude
>      Differential Revision:  https://reviews.freebsd.org/D60729
> ---
>   sbin/hastd/proto_common.c     | 4 ++--
>   sbin/hastd/proto_impl.h       | 8 ++++----
>   sbin/hastd/proto_socketpair.c | 4 ++--
>   sbin/hastd/proto_tcp.c        | 4 ++--
>   sbin/hastd/proto_uds.c        | 4 ++--
>   5 files changed, 12 insertions(+), 12 deletions(-)
> 
> diff --git a/sbin/hastd/proto_common.c b/sbin/hastd/proto_common.c
> index 39ef696f5b69..c96b325a4130 100644
> --- a/sbin/hastd/proto_common.c
> +++ b/sbin/hastd/proto_common.c
> @@ -89,7 +89,7 @@ proto_descriptor_send(int sock, int fd)
>   }
>   
>   int
> -proto_common_send(int sock, const unsigned char *data, size_t size, int fd)
> +proto_common_send(int sock, const void *data, size_t size, int fd)
>   {
>   	ssize_t done;
>   	size_t sendsize;
> @@ -190,7 +190,7 @@ proto_descriptor_recv(int sock, int *fdp)
>   }
>   
>   int
> -proto_common_recv(int sock, unsigned char *data, size_t size, int *fdp)
> +proto_common_recv(int sock, void *data, size_t size, int *fdp)
>   {
>   	ssize_t done;
>   
> diff --git a/sbin/hastd/proto_impl.h b/sbin/hastd/proto_impl.h
> index 181a4cd4a17d..449ab4097397 100644
> --- a/sbin/hastd/proto_impl.h
> +++ b/sbin/hastd/proto_impl.h
> @@ -44,8 +44,8 @@ typedef int prt_connect_wait_t(void *, int);
>   typedef int prt_server_t(const char *, void **);
>   typedef int prt_accept_t(void *, void **);
>   typedef int prt_wrap_t(int, bool, void **);
> -typedef int prt_send_t(void *, const unsigned char *, size_t, int);
> -typedef int prt_recv_t(void *, unsigned char *, size_t, int *);
> +typedef int prt_send_t(void *, const void *, size_t, int);
> +typedef int prt_recv_t(void *, void *, size_t, int *);
>   typedef int prt_descriptor_t(const void *);
>   typedef bool prt_address_match_t(const void *, const char *);
>   typedef void prt_local_address_t(const void *, char *, size_t);
> @@ -72,7 +72,7 @@ struct proto {
>   
>   void proto_register(struct proto *proto, bool isdefault);
>   
> -int proto_common_send(int sock, const unsigned char *data, size_t size, int fd);
> -int proto_common_recv(int sock, unsigned char *data, size_t size, int *fdp);
> +int proto_common_send(int sock, const void *data, size_t size, int fd);
> +int proto_common_recv(int sock, void *data, size_t size, int *fdp);
>   
>   #endif	/* !_PROTO_IMPL_H_ */
> diff --git a/sbin/hastd/proto_socketpair.c b/sbin/hastd/proto_socketpair.c
> index 31b657f17c32..a5f47acc7272 100644
> --- a/sbin/hastd/proto_socketpair.c
> +++ b/sbin/hastd/proto_socketpair.c
> @@ -82,7 +82,7 @@ sp_client(const char *srcaddr, const char *dstaddr, void **ctxp)
>   }
>   
>   static int
> -sp_send(void *ctx, const unsigned char *data, size_t size, int fd)
> +sp_send(void *ctx, const void *data, size_t size, int fd)
>   {
>   	struct sp_ctx *spctx = ctx;
>   	int sock;
> @@ -121,7 +121,7 @@ sp_send(void *ctx, const unsigned char *data, size_t size, int fd)
>   }
>   
>   static int
> -sp_recv(void *ctx, unsigned char *data, size_t size, int *fdp)
> +sp_recv(void *ctx, void *data, size_t size, int *fdp)
>   {
>   	struct sp_ctx *spctx = ctx;
>   	int fd;
> diff --git a/sbin/hastd/proto_tcp.c b/sbin/hastd/proto_tcp.c
> index aeec887433f8..be1205ba3733 100644
> --- a/sbin/hastd/proto_tcp.c
> +++ b/sbin/hastd/proto_tcp.c
> @@ -479,7 +479,7 @@ tcp_wrap(int fd, bool client, void **ctxp)
>   }
>   
>   static int
> -tcp_send(void *ctx, const unsigned char *data, size_t size, int fd)
> +tcp_send(void *ctx, const void *data, size_t size, int fd)
>   {
>   	struct tcp_ctx *tctx = ctx;
>   
> @@ -492,7 +492,7 @@ tcp_send(void *ctx, const unsigned char *data, size_t size, int fd)
>   }
>   
>   static int
> -tcp_recv(void *ctx, unsigned char *data, size_t size, int *fdp)
> +tcp_recv(void *ctx, void *data, size_t size, int *fdp)
>   {
>   	struct tcp_ctx *tctx = ctx;
>   
> diff --git a/sbin/hastd/proto_uds.c b/sbin/hastd/proto_uds.c
> index acb61a360180..5a14eb353c30 100644
> --- a/sbin/hastd/proto_uds.c
> +++ b/sbin/hastd/proto_uds.c
> @@ -227,7 +227,7 @@ uds_accept(void *ctx, void **newctxp)
>   }
>   
>   static int
> -uds_send(void *ctx, const unsigned char *data, size_t size, int fd)
> +uds_send(void *ctx, const void *data, size_t size, int fd)
>   {
>   	struct uds_ctx *uctx = ctx;
>   
> @@ -239,7 +239,7 @@ uds_send(void *ctx, const unsigned char *data, size_t size, int fd)
>   }
>   
>   static int
> -uds_recv(void *ctx, unsigned char *data, size_t size, int *fdp)
> +uds_recv(void *ctx, void *data, size_t size, int *fdp)
>   {
>   	struct uds_ctx *uctx = ctx;
>   

I've got a build error after that:

/usr/src/sbin/hastd/proto_common.c:148:8: error: arithmetic on a pointer 
to void is a GNU extension [-Werror,-Wgnu-pointer-arith]
   148 |                 data += done;
       |                 ~~~~ ^

-- 
Renato Botelho