git: 4064a1108b51 - main - netgraph: increase size of sockaddr_ng to match maximum node name

From: Gleb Smirnoff <glebius_at_FreeBSD.org>
Date: Tue, 28 Nov 2023 04:12:40 UTC
The branch main has been updated by glebius:

URL: https://cgit.FreeBSD.org/src/commit/?id=4064a1108b51b24903c8d67db21e8dbaf89b475f

commit 4064a1108b51b24903c8d67db21e8dbaf89b475f
Author:     Gleb Smirnoff <glebius@FreeBSD.org>
AuthorDate: 2023-11-28 04:10:52 +0000
Commit:     Gleb Smirnoff <glebius@FreeBSD.org>
CommitDate: 2023-11-28 04:10:52 +0000

    netgraph: increase size of sockaddr_ng to match maximum node name
    
    The ng_socket(4) node already writes more than declared size of the
    struct at least in the in ng_getsockaddr().  Make size match size of
    a node name.  The value is pasted instead of including ng_message.h
    into ng_socket.h.  This is external API and we want to keep it stable
    even if NG_NODESIZ is redefined in a kernel build.
    
    Reviewed by:            afedorov
    Differential Revision:  https://reviews.freebsd.org/D42690
---
 sys/netgraph/ng_message.h   | 5 ++++-
 sys/netgraph/ng_socket.h    | 2 +-
 tests/sys/netgraph/socket.c | 5 -----
 3 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/sys/netgraph/ng_message.h b/sys/netgraph/ng_message.h
index 46659bc4cec5..45556ecc609c 100644
--- a/sys/netgraph/ng_message.h
+++ b/sys/netgraph/ng_message.h
@@ -42,7 +42,10 @@
 #ifndef _NETGRAPH_NG_MESSAGE_H_
 #define _NETGRAPH_NG_MESSAGE_H_
 
-/* ASCII string size limits */
+/*
+ * ASCII string size limits
+ * Check with struct sockaddr_ng if changing.
+ */
 #define	NG_TYPESIZ	32	/* max type name len (including null) */
 #define	NG_HOOKSIZ	32	/* max hook name len (including null) */
 #define	NG_NODESIZ	32	/* max node name len (including null) */
diff --git a/sys/netgraph/ng_socket.h b/sys/netgraph/ng_socket.h
index 7556ec645f3d..9b537a52814a 100644
--- a/sys/netgraph/ng_socket.h
+++ b/sys/netgraph/ng_socket.h
@@ -60,7 +60,7 @@ enum {
 struct sockaddr_ng {
 	unsigned char	sg_len;		/* total length */
 	sa_family_t	sg_family;	/* address family */
-	char		sg_data[14];	/* actually longer; address value */
+	char		sg_data[32];	/* see NG_NODESIZ in ng_message.h */
 };
 
 #endif /* _NETGRAPH_NG_SOCKET_H_ */
diff --git a/tests/sys/netgraph/socket.c b/tests/sys/netgraph/socket.c
index b5216dcc2c39..bd40e4358866 100644
--- a/tests/sys/netgraph/socket.c
+++ b/tests/sys/netgraph/socket.c
@@ -53,12 +53,7 @@ ATF_TC_BODY(getsockname, tc)
 	/* Named node. */
 	ATF_REQUIRE(NgMkSockNode(name, &cs, NULL) == 0);
 	ATF_REQUIRE(getsockname(cs, (struct sockaddr *)&sg, &len) == 0);
-#if 0
-	/* sockaddr_ng truncates name now. */
 	ATF_REQUIRE(strcmp(sg.sg_data, NAME) == 0);
-#else
-	ATF_REQUIRE(strncmp(sg.sg_data, NAME, sizeof(sg.sg_data)) == 0);
-#endif
 }
 
 ATF_TP_ADD_TCS(tp)