commit 667f974

hovercats  ·  2024-02-22 04:36:28 +0000 UTC
parent ee7cbe6
libnl: drop.
12 files changed,  +0, -633
+0, -4
 1@@ -54,10 +54,6 @@
 2 [submodule "pkg/libfido2/src"]
 3 	path = pkg/libfido2/src
 4 	url = https://github.com/oasislinux/libfido2.git
 5-[submodule "pkg/libnl/src"]
 6-	path = pkg/libnl/src
 7-	url = https://github.com/thom311/libnl
 8-	ignore = all
 9 [submodule "pkg/libtls-bearssl/src"]
10 	path = pkg/libtls-bearssl/src
11 	url = https://git.sr.ht/~mcf/libtls-bearssl
+0, -1
1@@ -23,7 +23,6 @@ subgen 'less'
2 subgen 'libcbor'
3 subgen 'libevent'
4 subgen 'libfido2'
5-subgen 'libnl'
6 subgen 'libtermkey'
7 subgen 'libtls-bearssl'
8 subgen 'libutp'
+0, -28
 1@@ -1,28 +0,0 @@
 2-/* #undef DISABLE_PTHREADS */
 3-#define HAVE_DLFCN_H 1
 4-#define HAVE_INTTYPES_H 1
 5-#define HAVE_LIBPTHREAD 1
 6-#define HAVE_MEMORY_H 1
 7-#define HAVE_STDINT_H 1
 8-#define HAVE_STDLIB_H 1
 9-#define HAVE_STRERROR_L 1
10-#define HAVE_STRINGS_H 1
11-#define HAVE_STRING_H 1
12-#define HAVE_SYS_STAT_H 1
13-#define HAVE_SYS_TYPES_H 1
14-#define HAVE_UNISTD_H 1
15-#define LT_OBJDIR ".libs/"
16-#define NL_DEBUG 1
17-#define PACKAGE "libnl"
18-#define PACKAGE_BUGREPORT ""
19-#define PACKAGE_NAME "libnl"
20-#define PACKAGE_STRING "libnl 3.5.0"
21-#define PACKAGE_TARNAME "libnl"
22-#define PACKAGE_URL "http://www.infradead.org/~tgr/libnl/"
23-#define PACKAGE_VERSION "3.5.0"
24-#define STDC_HEADERS 1
25-#define VERSION "3.5.0"
26-/* #undef const */
27-#ifndef __cplusplus
28-/* #undef inline */
29-#endif
+0, -66
 1@@ -1,66 +0,0 @@
 2-cflags{
 3-	'-D _GNU_SOURCE',
 4-	string.format([[-D 'SYSCONFDIR="%s/etc/libnl"']], config.prefix),
 5-	'-I $dir',
 6-	'-I $outdir/include',
 7-	'-I $srcdir/include',
 8-	'-I $srcdir/include/linux-private',
 9-	'-isystem $builddir/pkg/linux-headers/include',
10-}
11-
12-build('sed', '$outdir/include/netlink/version.h', '$srcdir/include/netlink/version.h.in', {
13-	expr={
14-		'-e s,@PACKAGE_STRING@,\'libnl 3.5.0\',',
15-		'-e s,@PACKAGE_VERSION@,3.5.0,',
16-		'-e s,@MAJ_VERSION@,3,',
17-		'-e s,@MIN_VERSION@,5,',
18-		'-e s,@MIC_VERSION@,0,',
19-		'-e s,@LT_CURRENT@,226,',
20-		'-e s,@LT_REVISION@,0,',
21-		'-e s,@LT_AGE@,26,',
22-	},
23-})
24-
25-pkg.hdrs = {
26-	copy('$outdir/include/netlink', '$srcdir/include/netlink', {
27-		'addr.h',
28-		'attr.h',
29-		'cache.h',
30-		'cache-api.h',
31-		'data.h',
32-		'errno.h',
33-		'handlers.h',
34-		'hash.h',
35-		'hashtable.h',
36-		'list.h',
37-		'msg.h',
38-		'netlink.h',
39-		'netlink-compat.h',
40-		'netlink-kernel.h',
41-		'object.h',
42-		'object-api.h',
43-		'socket.h',
44-		'types.h',
45-		'utils.h',
46-		'genl/ctrl.h',
47-		'genl/family.h',
48-		'genl/genl.h',
49-		'genl/mngt.h',
50-	}),
51-	'$outdir/include/netlink/version.h',
52-}
53-
54-pkg.deps = {
55-	'$gendir/headers',
56-	'pkg/linux-headers/headers',
57-}
58-
59-lib('libnl-3.a', [[lib/(
60-	addr.c attr.c cache.c cache_mngr.c cache_mngt.c data.c
61-	error.c handlers.c msg.c nl.c object.c socket.c utils.c
62-	version.c hash.c hashtable.c mpls.c
63-)]])
64-
65-lib('libnl-genl-3.a', 'lib/genl/(ctrl.c family.c genl.c mngt.c)')
66-
67-fetch 'git'
+0, -123
  1@@ -1,123 +0,0 @@
  2-From 5205a990e10f9bf1102c719198f82aba342cbca5 Mon Sep 17 00:00:00 2001
  3-From: Michael Forney <mforney@mforney.org>
  4-Date: Sun, 11 Aug 2019 05:05:09 +0000
  5-Subject: [PATCH] Use static inline functions for min and max
  6-
  7-These generic macros were only ever used with type `int`, and making
  8-them inline functions avoids the use of non-standard statement
  9-expressions.
 10----
 11- include/netlink-private/netlink.h | 27 +++++++++++----------------
 12- lib/attr.c                        |  2 +-
 13- lib/msg.c                         |  2 +-
 14- lib/route/cls/ematch_syntax.y     |  2 +-
 15- lib/route/link/inet.c             |  2 +-
 16- lib/route/link/inet6.c            |  2 +-
 17- 6 files changed, 16 insertions(+), 21 deletions(-)
 18-
 19-diff --git a/include/netlink-private/netlink.h b/include/netlink-private/netlink.h
 20-index 5f6e3f7..fca3133 100644
 21---- a/include/netlink-private/netlink.h
 22-+++ b/include/netlink-private/netlink.h
 23-@@ -158,22 +158,17 @@ static inline int nl_cb_call(struct nl_cb *cb, enum nl_cb_type type, struct nl_m
 24- #undef __deprecated
 25- #define __deprecated __attribute__ ((deprecated))
 26- 
 27--#define min(x,y) ({ \
 28--	__typeof__(x) _x = (x);	\
 29--	__typeof__(y) _y = (y);	\
 30--	(void) (&_x == &_y);		\
 31--	_x < _y ? _x : _y; })
 32--
 33--#define max(x,y) ({ \
 34--	__typeof__(x) _x = (x);	\
 35--	__typeof__(y) _y = (y);	\
 36--	(void) (&_x == &_y);		\
 37--	_x > _y ? _x : _y; })
 38--
 39--#define min_t(type,x,y) \
 40--	({ type __x = (x); type __y = (y); __x < __y ? __x: __y; })
 41--#define max_t(type,x,y) \
 42--	({ type __x = (x); type __y = (y); __x > __y ? __x: __y; })
 43-+static inline int
 44-+min(int x, int y)
 45-+{
 46-+	return x < y ? x : y;
 47-+}
 48-+
 49-+static inline int
 50-+max(int x, int y)
 51-+{
 52-+	return x > y ? x : y;
 53-+}
 54- 
 55- extern int nl_cache_parse(struct nl_cache_ops *, struct sockaddr_nl *,
 56- 			  struct nlmsghdr *, struct nl_parser_param *);
 57-diff --git a/lib/attr.c b/lib/attr.c
 58-index a4f5852..025627e 100644
 59---- a/lib/attr.c
 60-+++ b/lib/attr.c
 61-@@ -358,7 +358,7 @@ int nla_memcpy(void *dest, const struct nlattr *src, int count)
 62- 	if (!src)
 63- 		return 0;
 64- 	
 65--	minlen = min_t(int, count, nla_len(src));
 66-+	minlen = min(count, nla_len(src));
 67- 	memcpy(dest, nla_data(src), minlen);
 68- 
 69- 	return minlen;
 70-diff --git a/lib/msg.c b/lib/msg.c
 71-index c08b3a4..d854df3 100644
 72---- a/lib/msg.c
 73-+++ b/lib/msg.c
 74-@@ -155,7 +155,7 @@ struct nlattr *nlmsg_attrdata(const struct nlmsghdr *nlh, int hdrlen)
 75-  */
 76- int nlmsg_attrlen(const struct nlmsghdr *nlh, int hdrlen)
 77- {
 78--	return max_t(int, nlmsg_len(nlh) - NLMSG_ALIGN(hdrlen), 0);
 79-+	return max(nlmsg_len(nlh) - NLMSG_ALIGN(hdrlen), 0);
 80- }
 81- 
 82- /** @} */
 83-diff --git a/lib/route/cls/ematch_syntax.y b/lib/route/cls/ematch_syntax.y
 84-index 82d753d..88665cc 100644
 85---- a/lib/route/cls/ematch_syntax.y
 86-+++ b/lib/route/cls/ematch_syntax.y
 87-@@ -411,7 +411,7 @@ pattern:
 88- 			if (nl_addr_parse($1, AF_UNSPEC, &addr) == 0) {
 89- 				$$.len = nl_addr_get_len(addr);
 90- 
 91--				$$.index = min_t(int, $$.len, nl_addr_get_prefixlen(addr)/8);
 92-+				$$.index = min($$.len, nl_addr_get_prefixlen(addr)/8);
 93- 
 94- 				if (!($$.data = calloc(1, $$.len))) {
 95- 					nl_addr_put(addr);
 96-diff --git a/lib/route/link/inet.c b/lib/route/link/inet.c
 97-index 6651bc3..e33a3fe 100644
 98---- a/lib/route/link/inet.c
 99-+++ b/lib/route/link/inet.c
100-@@ -110,7 +110,7 @@ static int inet_parse_af(struct rtnl_link *link, struct nlattr *attr, void *data
101- 
102- 	if (tb[IFLA_INET_CONF]) {
103- 		int i;
104--		int len = min_t(int, IPV4_DEVCONF_MAX, nla_len(tb[IFLA_INET_CONF]) / 4);
105-+		int len = min(IPV4_DEVCONF_MAX, nla_len(tb[IFLA_INET_CONF]) / 4);
106- 
107- 		for (i = 0; i < len; i++)
108- 			id->i_confset[i] = 1;
109-diff --git a/lib/route/link/inet6.c b/lib/route/link/inet6.c
110-index f02792c..8a3de01 100644
111---- a/lib/route/link/inet6.c
112-+++ b/lib/route/link/inet6.c
113-@@ -199,7 +199,7 @@ static int inet6_parse_protinfo(struct rtnl_link *link, struct nlattr *attr,
114- 			map_stat_id = map_stat_id_from_IPSTATS_MIB_v1;
115- 		}
116- 
117--		len = min_t(int, __IPSTATS_MIB_MAX, len);
118-+		len = min(__IPSTATS_MIB_MAX, len);
119- 		for (i = 1; i < len; i++) {
120- 			memcpy(&stat, &cnt[i * sizeof(stat)], sizeof(stat));
121- 			rtnl_link_set_stat(link, map_stat_id[i], stat);
122--- 
123-2.23.0
124-
+0, -28
 1@@ -1,28 +0,0 @@
 2-From e9b9e271c57d3d3129fa87c8866e91daeffe8144 Mon Sep 17 00:00:00 2001
 3-From: Michael Forney <mforney@mforney.org>
 4-Date: Sun, 11 Aug 2019 05:14:48 +0000
 5-Subject: [PATCH] Avoid statement expression in nl_container_of
 6-
 7----
 8- include/netlink/list.h | 5 ++---
 9- 1 file changed, 2 insertions(+), 3 deletions(-)
10-
11-diff --git a/include/netlink/list.h b/include/netlink/list.h
12-index 2f20634..f116126 100644
13---- a/include/netlink/list.h
14-+++ b/include/netlink/list.h
15-@@ -59,9 +59,8 @@ static inline int nl_list_empty(struct nl_list_head *head)
16- 	return head->next == head;
17- }
18- 
19--#define nl_container_of(ptr, type, member) ({			\
20--        const __typeof__( ((type *)0)->member ) *__mptr = (ptr);\
21--        (type *)( (char *)__mptr - (offsetof(type, member)));})
22-+#define nl_container_of(ptr, type, member) (			\
23-+        (type *)( (char *)(ptr) - (offsetof(type, member))))
24- 
25- #define nl_list_entry(ptr, type, member) \
26- 	nl_container_of(ptr, type, member)
27--- 
28-2.23.0
29-
+0, -39
 1@@ -1,39 +0,0 @@
 2-From d1f59de10a2fbce42735b3a1938ecd4d60c8e205 Mon Sep 17 00:00:00 2001
 3-From: Michael Forney <mforney@mforney.org>
 4-Date: Sun, 11 Aug 2019 21:55:54 +0000
 5-Subject: [PATCH] Avoid initialization of flexible array member
 6-
 7----
 8- include/netlink-private/cache-api.h | 2 +-
 9- include/netlink-private/netlink.h   | 2 +-
10- 2 files changed, 2 insertions(+), 2 deletions(-)
11-
12-diff --git a/include/netlink-private/cache-api.h b/include/netlink-private/cache-api.h
13-index c684e79..82be310 100644
14---- a/include/netlink-private/cache-api.h
15-+++ b/include/netlink-private/cache-api.h
16-@@ -259,7 +259,7 @@ struct nl_cache_ops
17- 	struct genl_ops *	co_genl;
18- 
19- 	/* Message type definition */
20--	struct nl_msgtype	co_msgtypes[];
21-+	struct nl_msgtype	*co_msgtypes;
22- };
23- 
24- /** @} */
25-diff --git a/include/netlink-private/netlink.h b/include/netlink-private/netlink.h
26-index fca3133..1148cec 100644
27---- a/include/netlink-private/netlink.h
28-+++ b/include/netlink-private/netlink.h
29-@@ -200,7 +200,7 @@ static inline const char *nl_cache_name(struct nl_cache *cache)
30- }
31- 
32- #define GENL_FAMILY(id, name) \
33--	{ \
34-+	(struct nl_msgtype[]){ \
35- 		{ id, NL_ACT_UNSPEC, name }, \
36- 		END_OF_MSGTYPES_LIST, \
37- 	}
38--- 
39-2.23.0
40-
+0, -28
 1@@ -1,28 +0,0 @@
 2-From e56f5df0379c7dc70f6ce61a31167185daa51cae Mon Sep 17 00:00:00 2001
 3-From: Michael Forney <mforney@mforney.org>
 4-Date: Sun, 11 Aug 2019 21:57:03 +0000
 5-Subject: [PATCH] Avoid statement expression in ATTR_DIFF macro
 6-
 7----
 8- include/netlink-private/object-api.h | 5 +----
 9- 1 file changed, 1 insertion(+), 4 deletions(-)
10-
11-diff --git a/include/netlink-private/object-api.h b/include/netlink-private/object-api.h
12-index 517e672..269cd4b 100644
13---- a/include/netlink-private/object-api.h
14-+++ b/include/netlink-private/object-api.h
15-@@ -260,10 +260,7 @@ struct nl_object
16-  * @endcode
17-  */
18- #define ATTR_DIFF(LIST, ATTR, A, B, EXPR) \
19--({	uint64_t diff = 0; \
20--	if (((LIST) & (ATTR)) && ATTR_MISMATCH(A, B, ATTR, EXPR)) \
21--		diff = ATTR; \
22--	diff; })
23-+	((uint64_t)(((LIST) & (ATTR)) && ATTR_MISMATCH(A, B, ATTR, EXPR) ? (ATTR) : 0))
24- 
25- /**
26-  * Object Operations
27--- 
28-2.23.0
29-
+0, -238
  1@@ -1,238 +0,0 @@
  2-From 558f898c413bd46423c6b07073422fc6fc18769c Mon Sep 17 00:00:00 2001
  3-From: Michael Forney <mforney@mforney.org>
  4-Date: Fri, 4 Oct 2019 18:13:36 -0700
  5-Subject: [PATCH] Remove _nl_auto helpers
  6-
  7-These use non-standard __attribute__((cleanup)) and statement
  8-expressions.
  9----
 10- include/netlink-private/utils.h | 49 ---------------------------------
 11- lib/genl/mngt.c                 | 10 +++++--
 12- lib/xfrm/sa.c                   | 24 ++++++++--------
 13- 3 files changed, 19 insertions(+), 64 deletions(-)
 14-
 15-diff --git a/include/netlink-private/utils.h b/include/netlink-private/utils.h
 16-index f33a2f8..1456797 100644
 17---- a/include/netlink-private/utils.h
 18-+++ b/include/netlink-private/utils.h
 19-@@ -67,7 +67,6 @@
 20- /*****************************************************************************/
 21- 
 22- #define _nl_unused                  __attribute__ ((__unused__))
 23--#define _nl_auto(fcn)               __attribute__ ((__cleanup__(fcn)))
 24- 
 25- /*****************************************************************************/
 26- 
 27-@@ -83,18 +82,6 @@
 28- 
 29- /*****************************************************************************/
 30- 
 31--#define _NL_AUTO_DEFINE_FCN_VOID0(CastType, name, func) \
 32--static inline void name (void *v) \
 33--{ \
 34--	if (*((CastType *) v)) \
 35--		func (*((CastType *) v)); \
 36--}
 37--
 38--#define _nl_auto_free _nl_auto(_nl_auto_free_fcn)
 39--_NL_AUTO_DEFINE_FCN_VOID0 (void *, _nl_auto_free_fcn, free)
 40--
 41--/*****************************************************************************/
 42--
 43- extern const char *nl_strerror_l(int err);
 44- 
 45- /*****************************************************************************/
 46-@@ -106,42 +93,6 @@ extern const char *nl_strerror_l(int err);
 47- 
 48- /*****************************************************************************/
 49- 
 50--#define _nl_clear_pointer(pp, destroy) \
 51--	({ \
 52--		__typeof__ (*(pp)) *_pp = (pp); \
 53--		__typeof__ (*_pp) _p; \
 54--		int _changed = 0; \
 55--		\
 56--		if (   _pp \
 57--			&& (_p = *_pp)) { \
 58--			_nl_unused const void *const _p_check_is_pointer = _p; \
 59--			\
 60--			*_pp = NULL; \
 61--			\
 62--			(destroy) (_p); \
 63--			\
 64--			_changed = 1; \
 65--		} \
 66--		_changed; \
 67--	})
 68--
 69--#define _nl_clear_free(pp) _nl_clear_pointer (pp, free)
 70--
 71--#define _nl_steal_pointer(pp) \
 72--	({ \
 73--		__typeof__ (*(pp)) *const _pp = (pp); \
 74--		__typeof__ (*_pp) _p = NULL; \
 75--		\
 76--		if (   _pp \
 77--		    && (_p = *_pp)) { \
 78--			*_pp = NULL; \
 79--		} \
 80--		\
 81--		_p; \
 82--	})
 83--
 84--/*****************************************************************************/
 85--
 86- #define _nl_malloc_maybe_a(alloca_maxlen, bytes, to_free) \
 87- 	({ \
 88- 		const size_t _bytes = (bytes); \
 89-diff --git a/lib/genl/mngt.c b/lib/genl/mngt.c
 90-index 28326cd..ff50e1d 100644
 91---- a/lib/genl/mngt.c
 92-+++ b/lib/genl/mngt.c
 93-@@ -50,7 +50,7 @@ static struct genl_cmd *lookup_cmd(struct genl_ops *ops, int cmd_id)
 94- static int cmd_msg_parser(struct sockaddr_nl *who, struct nlmsghdr *nlh,
 95-                           struct genl_ops *ops, struct nl_cache_ops *cache_ops, void *arg)
 96- {
 97--	_nl_auto_free struct nlattr **tb_free = NULL;
 98-+	struct nlattr **tb_free = NULL;
 99- 	int err;
100- 	struct genlmsghdr *ghdr;
101- 	struct genl_cmd *cmd;
102-@@ -74,7 +74,7 @@ static int cmd_msg_parser(struct sockaddr_nl *who, struct nlmsghdr *nlh,
103- 	                  cmd->c_maxattr,
104- 	                  cmd->c_attr_policy);
105- 	if (err < 0)
106--		return err;
107-+		goto out;
108- 
109- 	{
110- 		struct genl_info info = {
111-@@ -85,8 +85,12 @@ static int cmd_msg_parser(struct sockaddr_nl *who, struct nlmsghdr *nlh,
112- 			.attrs   = tb,
113- 		};
114- 
115--		return cmd->c_msg_parser(cache_ops, cmd, &info, arg);
116-+		err = cmd->c_msg_parser(cache_ops, cmd, &info, arg);
117- 	}
118-+
119-+out:
120-+	free(tb_free);
121-+	return err;
122- }
123- 
124- static int genl_msg_parser(struct nl_cache_ops *ops, struct sockaddr_nl *who,
125-diff --git a/lib/xfrm/sa.c b/lib/xfrm/sa.c
126-index 48265ba..14bf298 100644
127---- a/lib/xfrm/sa.c
128-+++ b/lib/xfrm/sa.c
129-@@ -1683,7 +1683,7 @@ int xfrmnl_sa_get_aead_params (struct xfrmnl_sa* sa, char* alg_name, unsigned in
130- 
131- int xfrmnl_sa_set_aead_params (struct xfrmnl_sa* sa, const char* alg_name, unsigned int key_len, unsigned int icv_len, const char* key)
132- {
133--	_nl_auto_free struct xfrmnl_algo_aead *b = NULL;
134-+	struct xfrmnl_algo_aead *b = NULL;
135- 	size_t keysize = sizeof (uint8_t) * ((key_len + 7)/8);
136- 	uint32_t newlen = sizeof (struct xfrmnl_algo_aead) + keysize;
137- 
138-@@ -1699,7 +1699,7 @@ int xfrmnl_sa_set_aead_params (struct xfrmnl_sa* sa, const char* alg_name, unsig
139- 	memcpy (b->alg_key, key, keysize);
140- 
141- 	free (sa->aead);
142--	sa->aead = _nl_steal_pointer (&b);
143-+	sa->aead = b;
144- 	sa->ce_mask |= XFRM_SA_ATTR_ALG_AEAD;
145- 	return 0;
146- }
147-@@ -1741,7 +1741,7 @@ int xfrmnl_sa_get_auth_params (struct xfrmnl_sa* sa, char* alg_name, unsigned in
148- 
149- int xfrmnl_sa_set_auth_params (struct xfrmnl_sa* sa, const char* alg_name, unsigned int key_len, unsigned int trunc_len, const char* key)
150- {
151--	_nl_auto_free struct xfrmnl_algo_auth *b = NULL;
152-+	struct xfrmnl_algo_auth *b = NULL;
153- 	size_t keysize = sizeof (uint8_t) * ((key_len + 7)/8);
154- 	uint32_t newlen = sizeof (struct xfrmnl_algo_auth) + keysize;
155- 
156-@@ -1756,7 +1756,7 @@ int xfrmnl_sa_set_auth_params (struct xfrmnl_sa* sa, const char* alg_name, unsig
157- 	memcpy (b->alg_key, key, keysize);
158- 
159- 	free (sa->auth);
160--	sa->auth = _nl_steal_pointer (&b);
161-+	sa->auth = b;
162- 	sa->ce_mask |= XFRM_SA_ATTR_ALG_AUTH;
163- 	return 0;
164- }
165-@@ -1795,7 +1795,7 @@ int xfrmnl_sa_get_crypto_params (struct xfrmnl_sa* sa, char* alg_name, unsigned
166- 
167- int xfrmnl_sa_set_crypto_params (struct xfrmnl_sa* sa, const char* alg_name, unsigned int key_len, const char* key)
168- {
169--	_nl_auto_free struct xfrmnl_algo *b = NULL;
170-+	struct xfrmnl_algo *b = NULL;
171- 	size_t keysize = sizeof (uint8_t) * ((key_len + 7)/8);
172- 	uint32_t newlen = sizeof (struct xfrmnl_algo) + keysize;
173- 
174-@@ -1809,7 +1809,7 @@ int xfrmnl_sa_set_crypto_params (struct xfrmnl_sa* sa, const char* alg_name, uns
175- 	memcpy (b->alg_key, key, keysize);
176- 
177- 	free(sa->crypt);
178--	sa->crypt = _nl_steal_pointer(&b);
179-+	sa->crypt = b;
180- 	sa->ce_mask |= XFRM_SA_ATTR_ALG_CRYPT;
181- 	return 0;
182- }
183-@@ -1848,7 +1848,7 @@ int xfrmnl_sa_get_comp_params (struct xfrmnl_sa* sa, char* alg_name, unsigned in
184- 
185- int xfrmnl_sa_set_comp_params (struct xfrmnl_sa* sa, const char* alg_name, unsigned int key_len, const char* key)
186- {
187--	_nl_auto_free struct xfrmnl_algo *b = NULL;
188-+	struct xfrmnl_algo *b = NULL;
189- 	size_t keysize = sizeof (uint8_t) * ((key_len + 7)/8);
190- 	uint32_t newlen = sizeof (struct xfrmnl_algo) + keysize;
191- 
192-@@ -1862,7 +1862,7 @@ int xfrmnl_sa_set_comp_params (struct xfrmnl_sa* sa, const char* alg_name, unsig
193- 	memcpy (b->alg_key, key, keysize);
194- 
195- 	free(sa->comp);
196--	sa->comp = _nl_steal_pointer(&b);
197-+	sa->comp = b;
198- 	sa->ce_mask |= XFRM_SA_ATTR_ALG_COMP;
199- 	return 0;
200- }
201-@@ -2023,7 +2023,7 @@ int xfrmnl_sa_get_sec_ctx (struct xfrmnl_sa* sa, unsigned int* doi, unsigned int
202- int xfrmnl_sa_set_sec_ctx (struct xfrmnl_sa* sa, unsigned int doi, unsigned int alg, unsigned int len,
203-                            unsigned int sid, const char* ctx_str)
204- {
205--	_nl_auto_free struct xfrmnl_user_sec_ctx *b = NULL;
206-+	struct xfrmnl_user_sec_ctx *b = NULL;
207- 
208- 	if (!(b = calloc(1, sizeof (struct xfrmnl_user_sec_ctx) + 1 + len)))
209- 		return -1;
210-@@ -2037,7 +2037,7 @@ int xfrmnl_sa_set_sec_ctx (struct xfrmnl_sa* sa, unsigned int doi, unsigned int
211- 	b->ctx[len] = '\0';
212- 
213- 	free(sa->sec_ctx);
214--	sa->sec_ctx = _nl_steal_pointer(&b);
215-+	sa->sec_ctx = b;
216- 	sa->ce_mask |= XFRM_SA_ATTR_SECCTX;
217- 	return 0;
218- }
219-@@ -2136,7 +2136,7 @@ int xfrmnl_sa_set_replay_state_esn (struct xfrmnl_sa* sa, unsigned int oseq, uns
220-                                     unsigned int oseq_hi, unsigned int seq_hi, unsigned int replay_window,
221-                                     unsigned int bmp_len, unsigned int* bmp)
222- {
223--	_nl_auto_free struct xfrmnl_replay_state_esn *b = NULL;
224-+	struct xfrmnl_replay_state_esn *b = NULL;
225- 
226- 	if (!(b = calloc (1, sizeof (struct xfrmnl_replay_state_esn) + (sizeof (uint32_t) * bmp_len))))
227- 		return -1;
228-@@ -2150,7 +2150,7 @@ int xfrmnl_sa_set_replay_state_esn (struct xfrmnl_sa* sa, unsigned int oseq, uns
229- 	memcpy (b->bmp, bmp, bmp_len * sizeof (uint32_t));
230- 
231- 	free(sa->replay_state_esn);
232--	sa->replay_state_esn = _nl_steal_pointer(&b);
233-+	sa->replay_state_esn = b;
234- 	sa->ce_mask |= XFRM_SA_ATTR_REPLAY_STATE;
235- 	return 0;
236- }
237--- 
238-2.23.0
239-
+0, -76
 1@@ -1,76 +0,0 @@
 2-From f64cfa931a450ffb08cbbdeb6652b424f6bb8187 Mon Sep 17 00:00:00 2001
 3-From: Michael Forney <mforney@mforney.org>
 4-Date: Thu, 30 Jan 2020 14:12:35 -0800
 5-Subject: [PATCH] Avoid use of alloca and statement expressions
 6-
 7----
 8- include/netlink-private/utils.h | 21 ---------------------
 9- lib/genl/mngt.c                 | 13 +++++++++----
10- 2 files changed, 9 insertions(+), 25 deletions(-)
11-
12-diff --git a/include/netlink-private/utils.h b/include/netlink-private/utils.h
13-index 1456797..e26399f 100644
14---- a/include/netlink-private/utils.h
15-+++ b/include/netlink-private/utils.h
16-@@ -93,27 +93,6 @@ extern const char *nl_strerror_l(int err);
17- 
18- /*****************************************************************************/
19- 
20--#define _nl_malloc_maybe_a(alloca_maxlen, bytes, to_free) \
21--	({ \
22--		const size_t _bytes = (bytes); \
23--		__typeof__ (to_free) _to_free = (to_free); \
24--		__typeof__ (*_to_free) _ptr; \
25--		\
26--		_NL_STATIC_ASSERT ((alloca_maxlen) <= 500); \
27--		_nl_assert (_to_free && !*_to_free); \
28--		\
29--		if (_bytes <= (alloca_maxlen)) { \
30--			_ptr = alloca (_bytes); \
31--		} else { \
32--			_ptr = malloc (_bytes); \
33--			*_to_free = _ptr; \
34--		}; \
35--		\
36--		_ptr; \
37--	})
38--
39--/*****************************************************************************/
40--
41- static inline char *
42- _nl_strncpy_trunc(char *dst, const char *src, size_t len)
43- {
44-diff --git a/lib/genl/mngt.c b/lib/genl/mngt.c
45-index ff50e1d..8f92122 100644
46---- a/lib/genl/mngt.c
47-+++ b/lib/genl/mngt.c
48-@@ -54,7 +54,7 @@ static int cmd_msg_parser(struct sockaddr_nl *who, struct nlmsghdr *nlh,
49- 	int err;
50- 	struct genlmsghdr *ghdr;
51- 	struct genl_cmd *cmd;
52--	struct nlattr **tb;
53-+	struct nlattr **tb, *tb_local[32];
54- 
55- 	ghdr = genlmsg_hdr(nlh);
56- 
57-@@ -64,9 +64,14 @@ static int cmd_msg_parser(struct sockaddr_nl *who, struct nlmsghdr *nlh,
58- 	if (cmd->c_msg_parser == NULL)
59- 		return -NLE_OPNOTSUPP;
60- 
61--	tb = _nl_malloc_maybe_a (300, (((size_t) cmd->c_maxattr) + 1u) * sizeof (struct nlattr *), &tb_free);
62--	if (!tb)
63--		return -NLE_NOMEM;
64-+	if (cmd->c_maxattr > ARRAY_SIZE(tb_local) - 1) {
65-+		tb = malloc(((size_t) cmd->c_maxattr + 1u) * sizeof (struct nlattr *));
66-+		if (!tb)
67-+			return -NLE_NOMEM;
68-+		tb_free = tb;
69-+	} else {
70-+		tb = tb_local;
71-+	}
72- 
73- 	err = nlmsg_parse(nlh,
74- 	                  GENL_HDRSIZE(ops->o_hdrsize),
75--- 
76-2.25.0
77-
+0, -1
1@@ -1 +0,0 @@
2-Subproject commit 7b167ef85f6eb4d7faca349302478b2dc121e309
+0, -1
1@@ -1 +0,0 @@
2-3.5.0 r1