Просмотр исходного кода

totemudp: Remove MSGHDR conditionals

The ucast_sendmsg and mcast_sendmsg functions already initialize
msghdr using memset, making the conditional zeroing of some fields
redundant.

This commit adds a similar memset to net_deliver_fn and
totemudp_recv_mcast_empty to ensure msghdr is always fully
initialized. All conditional initializations are then removed.

This simplifies the code and improves safety by preventing the
use of uninitialized stack data within the msghdr struct.

Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
Jan Friesse 3 месяцев назад
Родитель
Сommit
5a1135a390
1 измененных файлов с 2 добавлено и 61 удалено
  1. 2 61
      exec/totemudp.c

+ 2 - 61
exec/totemudp.c

@@ -281,22 +281,6 @@ static inline void ucast_sendmsg (
 	msg_ucast.msg_namelen = addrlen;
 	msg_ucast.msg_namelen = addrlen;
 	msg_ucast.msg_iov = (void *)&iovec;
 	msg_ucast.msg_iov = (void *)&iovec;
 	msg_ucast.msg_iovlen = 1;
 	msg_ucast.msg_iovlen = 1;
-#ifdef HAVE_MSGHDR_CONTROL
-	msg_ucast.msg_control = 0;
-#endif
-#ifdef HAVE_MSGHDR_CONTROLLEN
-	msg_ucast.msg_controllen = 0;
-#endif
-#ifdef HAVE_MSGHDR_FLAGS
-	msg_ucast.msg_flags = 0;
-#endif
-#ifdef HAVE_MSGHDR_ACCRIGHTS
-	msg_ucast.msg_accrights = NULL;
-#endif
-#ifdef HAVE_MSGHDR_ACCRIGHTSLEN
-	msg_ucast.msg_accrightslen = 0;
-#endif
-
 
 
 	/*
 	/*
 	 * Transmit unicast message
 	 * Transmit unicast message
@@ -334,21 +318,6 @@ static inline void mcast_sendmsg (
 	msg_mcast.msg_namelen = addrlen;
 	msg_mcast.msg_namelen = addrlen;
 	msg_mcast.msg_iov = (void *)&iovec;
 	msg_mcast.msg_iov = (void *)&iovec;
 	msg_mcast.msg_iovlen = 1;
 	msg_mcast.msg_iovlen = 1;
-#ifdef HAVE_MSGHDR_CONTROL
-	msg_mcast.msg_control = 0;
-#endif
-#ifdef HAVE_MSGHDR_CONTROLLEN
-	msg_mcast.msg_controllen = 0;
-#endif
-#ifdef HAVE_MSGHDR_FLAGS
-	msg_mcast.msg_flags = 0;
-#endif
-#ifdef HAVE_MSGHDR_ACCRIGHTS
-	msg_mcast.msg_accrights = NULL;
-#endif
-#ifdef HAVE_MSGHDR_ACCRIGHTSLEN
-	msg_mcast.msg_accrightslen = 0;
-#endif
 
 
 	/*
 	/*
 	 * Transmit multicast message
 	 * Transmit multicast message
@@ -433,25 +402,11 @@ static int net_deliver_fn (
 	/*
 	/*
 	 * Receive datagram
 	 * Receive datagram
 	 */
 	 */
+	memset(&msg_recv, 0, sizeof(msg_recv));
 	msg_recv.msg_name = &system_from;
 	msg_recv.msg_name = &system_from;
 	msg_recv.msg_namelen = sizeof (struct sockaddr_storage);
 	msg_recv.msg_namelen = sizeof (struct sockaddr_storage);
 	msg_recv.msg_iov = iovec;
 	msg_recv.msg_iov = iovec;
 	msg_recv.msg_iovlen = 1;
 	msg_recv.msg_iovlen = 1;
-#ifdef HAVE_MSGHDR_CONTROL
-	msg_recv.msg_control = 0;
-#endif
-#ifdef HAVE_MSGHDR_CONTROLLEN
-	msg_recv.msg_controllen = 0;
-#endif
-#ifdef HAVE_MSGHDR_FLAGS
-	msg_recv.msg_flags = 0;
-#endif
-#ifdef HAVE_MSGHDR_ACCRIGHTS
-	msg_recv.msg_accrights = NULL;
-#endif
-#ifdef HAVE_MSGHDR_ACCRIGHTSLEN
-	msg_recv.msg_accrightslen = 0;
-#endif
 
 
 	bytes_received = recvmsg (fd, &msg_recv, MSG_NOSIGNAL | MSG_DONTWAIT);
 	bytes_received = recvmsg (fd, &msg_recv, MSG_NOSIGNAL | MSG_DONTWAIT);
 	if (bytes_received == -1) {
 	if (bytes_received == -1) {
@@ -1428,25 +1383,11 @@ extern int totemudp_recv_mcast_empty (
 	/*
 	/*
 	 * Receive datagram
 	 * Receive datagram
 	 */
 	 */
+	memset(&msg_recv, 0, sizeof(msg_recv));
 	msg_recv.msg_name = &system_from;
 	msg_recv.msg_name = &system_from;
 	msg_recv.msg_namelen = sizeof (struct sockaddr_storage);
 	msg_recv.msg_namelen = sizeof (struct sockaddr_storage);
 	msg_recv.msg_iov = &instance->totemudp_iov_recv_flush;
 	msg_recv.msg_iov = &instance->totemudp_iov_recv_flush;
 	msg_recv.msg_iovlen = 1;
 	msg_recv.msg_iovlen = 1;
-#ifdef HAVE_MSGHDR_CONTROL
-	msg_recv.msg_control = 0;
-#endif
-#ifdef HAVE_MSGHDR_CONTROLLEN
-	msg_recv.msg_controllen = 0;
-#endif
-#ifdef HAVE_MSGHDR_FLAGS
-	msg_recv.msg_flags = 0;
-#endif
-#ifdef HAVE_MSGHDR_ACCRIGHTS
-	msg_recv.msg_accrights = NULL;
-#endif
-#ifdef HAVE_MSGHDR_ACCRIGHTSLEN
-	msg_recv.msg_accrightslen = 0;
-#endif
 
 
 	for (i = 0; i < 2; i++) {
 	for (i = 0; i < 2; i++) {
 		sock = -1;
 		sock = -1;