From 265dbe5dbc14c199299496c6db8fce3f76647015 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Fri, 21 Sep 2018 18:00:10 +0100 Subject: gentoo resync : 21.09.2018 --- net-libs/libnftnl/Manifest | 4 + .../files/libnftnl-1.1.1-big-endian-1.patch | 93 ++++++++++++++++++++++ .../files/libnftnl-1.1.1-big-endian-2.patch | 37 +++++++++ .../files/libnftnl-1.1.1-big-endian-3.patch | 33 ++++++++ net-libs/libnftnl/libnftnl-1.1.1-r1.ebuild | 67 ++++++++++++++++ 5 files changed, 234 insertions(+) create mode 100644 net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-1.patch create mode 100644 net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-2.patch create mode 100644 net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-3.patch create mode 100644 net-libs/libnftnl/libnftnl-1.1.1-r1.ebuild (limited to 'net-libs/libnftnl') diff --git a/net-libs/libnftnl/Manifest b/net-libs/libnftnl/Manifest index 05196ae6b9bb..ac579bd264bf 100644 --- a/net-libs/libnftnl/Manifest +++ b/net-libs/libnftnl/Manifest @@ -1,7 +1,11 @@ +AUX libnftnl-1.1.1-big-endian-1.patch 2069 BLAKE2B de0c7ac336dc01d25eb8f2a8ff837e35f9f95275ec1e0b1f32b113a1d2717e98d6281e3034a60a52b2f38e7b120f30dbba9137e330fe715793511ab3025843b0 SHA512 70cca0769923efc99f204608b59712862608e94d4030a1f16c5d8141896fb91c3e458054fd8e7b069014fe3279d209a7b5e7da996633e12781a28f224f0e9cf4 +AUX libnftnl-1.1.1-big-endian-2.patch 1383 BLAKE2B cae500d1ebdde1dd1d7dc7b572ab0a5b30f775b1c9b874ec889ef1bccb2981795e69107268b9ab67aad17864d648ce2c63e29ab54596dbf11072631fa868f44c SHA512 9cae1b05c3b3794219609c95ad547a51ec2249b2457531eb6be1450f0c17a5c4a91ce8b2d3694490e986dba1b587b2df8dcf4f014f6704bef7250f8ec2bfac69 +AUX libnftnl-1.1.1-big-endian-3.patch 1179 BLAKE2B 8ca66b878b2ddbe73aa361b3886e033662d585c5a6d35dfd693877b9f706cbfeec689272f8f43ea41bed77a908e69873f946f967d76bdae0fd45be6992f93b64 SHA512 c1249763339cb633ceb556d97c483f437d6fcc095253df076e46ff3c7c613455ea8296abca53656ad7fea14c7903373c115bb7344abb11acc17b67c67db4bf57 DIST libnftnl-1.0.8.tar.bz2 400496 BLAKE2B d2563f707ceb40b8cd7c4b4fdede64943fabcc8a639eb61c844f7b941786a49b1c029e375977759717e5cb8f8dc2019ddcbf48223347f868713d1a077d51d8a8 SHA512 df9f5967908ce5e6a6a85fe4328bdf6e7501ce6b0e42239b750782aeb76c30b1aae80dd07f73a06fb077d072b1269c4e0c5fd525feed1055400201567d215ef9 DIST libnftnl-1.1.0.tar.bz2 370642 BLAKE2B 3dbc0116027e863a656c55c0d65449bf3905378e84c907f0d94582c608a793952fbb83f90565304af05978b08675a6edf13ee997fd5ce0d4374a2143746691c1 SHA512 3216afbd62f5dbd78b26c2ab3acb467bca5d6a7f5fd5bb15356b9d80ffca64f9afa1d8f374701e00f1ae9e5ec282fd55c970502121330c1446032e70bb593d23 DIST libnftnl-1.1.1.tar.bz2 372562 BLAKE2B 9dee45bb485399c4677f636c8aa065a7e4e80102f17beb4aa066278a6ef753e7c1aaf02c6a853edc70f018ebef5e8389a05ca384116ec06761f0a29e278f4e54 SHA512 87f092e2b6576121538c8ac7ce92d8c918723e36dd02e2fcfcb7dcaf2ae705bbcd62c79c9076574ef73f461f7df5d10e72bcaeda29e4a7e60ea1401d998424a6 EBUILD libnftnl-1.0.8-r1.ebuild 1364 BLAKE2B 0c8ed0d675c9bd38094fde0b057b667e40cad6033f70c035c8e11d1e951fe68fac729bcde0a963d16d2acb58ada4343c35185193730a5a0ed4f0ee0045107c8c SHA512 c630c448ee80de01b0e98337314f2ac695c3a653914491db4aeb4ba1d99f9a43d532d9ff19b3ec92b619ab889a97d6788828333d90dd6bf81bbb2f2bf1cc54e7 EBUILD libnftnl-1.1.0.ebuild 1375 BLAKE2B 8176c16368b5af09f74326a79beecd990be14274cf1e643d4a71d87a260cb5513d828df70ccfb2dad2b936a0e5312be1700a4db0c6132ffdc677c80a1e391717 SHA512 bee525dc84832e27a6b80faeded252d4f5bc373bec65bb160cd1402210b1123e99d7df0e670104bc9e73f7b2e7a80a5cee5770908ca15aad3e026dc273e44549 +EBUILD libnftnl-1.1.1-r1.ebuild 1495 BLAKE2B 75d2b2cdfb8ad9e1c9b994338ef585b90fc8728bb2c5d5c1daa0111f9ccb8ea5ea8eca1d4f976bd111beb4bb5f18799f48fc41701ef56899c770a5658c84b8fe SHA512 521e8da06ad4b1e7af767e9b33985305a260776dcda48692433b491cd2c079492db2ce6d41ecd61dbe29635e572d5bf03d6581beadb42e0044575cf77cbe1ae9 EBUILD libnftnl-1.1.1.ebuild 1375 BLAKE2B 896998647d4f4b38aaebab192925ebec10d7afceacfee79dfb5250b175142c8f332ee6c20af203a0b72af9becf2676d21d334d42710146e6131ecfa5edd51c65 SHA512 d2a1f4d3b03ce8d8c44048fa049c556acb74cbc8b53a9198ca687277257452cdb9a477b9ba4e952d466a9e72e8239ce5a49815380f36231dbb837346e4636a5e MISC metadata.xml 317 BLAKE2B ec8bdc87d1d0694e81566b611db8e455e851b86a2403ca8ac0c36f774f23b89fb9ee4e55dbc818efba807aec0487dd1956f2fb17393b327500dbe69118d5030b SHA512 bfdf498de4ccd1d1a4f78c7e94a90b2bf203e16b8ddec5949bb88c953279026f95da956ef94b39140d44bbcd8cb4008f9f4b777fd895576da8414051c4487beb diff --git a/net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-1.patch b/net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-1.patch new file mode 100644 index 000000000000..e91333e21bb0 --- /dev/null +++ b/net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-1.patch @@ -0,0 +1,93 @@ +From 9737856067b97cbb869e04fc6b6e65c1d859f521 Mon Sep 17 00:00:00 2001 +From: Phil Sutter +Date: Fri, 22 Jun 2018 14:18:57 +0200 +Subject: utils: Fix nftnl_get_value() on big endian + +This function basically did: + +| memcpy(out, val, ); + +which works only for little endian integer types. Fix this by assigning +the 64bit input value to a variable of the right size and use that as +input for above memcpy() call. + +Signed-off-by: Phil Sutter +--- + src/utils.c | 44 ++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 42 insertions(+), 2 deletions(-) + +diff --git a/src/utils.c b/src/utils.c +index 3e44960..4d9ee78 100644 +--- a/src/utils.c ++++ b/src/utils.c +@@ -72,6 +72,15 @@ static struct { + + int nftnl_get_value(enum nftnl_type type, void *val, void *out) + { ++ union { ++ uint8_t u8; ++ uint16_t u16; ++ uint32_t u32; ++ int8_t s8; ++ int16_t s16; ++ int32_t s32; ++ } values; ++ void *valuep = NULL; + int64_t sval; + uint64_t uval; + +@@ -85,7 +94,6 @@ int nftnl_get_value(enum nftnl_type type, void *val, void *out) + errno = ERANGE; + return -1; + } +- memcpy(out, &uval, basetype[type].len); + break; + case NFTNL_TYPE_S8: + case NFTNL_TYPE_S16: +@@ -97,10 +105,42 @@ int nftnl_get_value(enum nftnl_type type, void *val, void *out) + errno = ERANGE; + return -1; + } +- memcpy(out, &sval, basetype[type].len); + break; + } + ++ switch (type) { ++ case NFTNL_TYPE_U8: ++ values.u8 = uval; ++ valuep = &values.u8; ++ break; ++ case NFTNL_TYPE_U16: ++ values.u16 = uval; ++ valuep = &values.u16; ++ break; ++ case NFTNL_TYPE_U32: ++ values.u32 = uval; ++ valuep = &values.u32; ++ break; ++ case NFTNL_TYPE_U64: ++ valuep = &uval; ++ break; ++ case NFTNL_TYPE_S8: ++ values.s8 = sval; ++ valuep = &values.s8; ++ break; ++ case NFTNL_TYPE_S16: ++ values.s16 = sval; ++ valuep = &values.s16; ++ break; ++ case NFTNL_TYPE_S32: ++ values.s32 = sval; ++ valuep = &values.s32; ++ break; ++ case NFTNL_TYPE_S64: ++ valuep = &sval; ++ break; ++ } ++ memcpy(out, valuep, basetype[type].len); + return 0; + } + +-- +cgit v1.2.1 + diff --git a/net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-2.patch b/net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-2.patch new file mode 100644 index 000000000000..c6fb5a25a893 --- /dev/null +++ b/net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-2.patch @@ -0,0 +1,37 @@ +From 5d592ce6c4596b25d5779a224d03c096bc25db54 Mon Sep 17 00:00:00 2001 +From: Phil Sutter +Date: Fri, 22 Jun 2018 14:18:58 +0200 +Subject: expr/data_reg: Fix JSON parsing on big endian + +Since reg->len is a 32bit variable, one needs to pass NFTNL_TYPE_U32 to +nftnl_jansson_parse_val(). Otherwise, only the most significant byte in +that variable is being written to. + +Since the value could potentially be larger than 255, increase node_name +buffer to avoid a compiler warning. + +Signed-off-by: Phil Sutter +--- + src/expr/data_reg.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/expr/data_reg.c b/src/expr/data_reg.c +index 1b28b29..ad7f4cb 100644 +--- a/src/expr/data_reg.c ++++ b/src/expr/data_reg.c +@@ -59,10 +59,10 @@ static int nftnl_data_reg_verdict_json_parse(union nftnl_data_reg *reg, json_t * + static int nftnl_data_reg_value_json_parse(union nftnl_data_reg *reg, json_t *data, + struct nftnl_parse_err *err) + { +- char node_name[8] = {}; /* strlen("data256") + 1 == 8 */ ++ char node_name[32] = {}; + int ret, remain = sizeof(node_name), offset = 0, i; + +- if (nftnl_jansson_parse_val(data, "len", NFTNL_TYPE_U8, ®->len, err) < 0) ++ if (nftnl_jansson_parse_val(data, "len", NFTNL_TYPE_U32, ®->len, err) < 0) + return DATA_NONE; + + for (i = 0; i < div_round_up(reg->len, sizeof(uint32_t)); i++) { +-- +cgit v1.2.1 + diff --git a/net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-3.patch b/net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-3.patch new file mode 100644 index 000000000000..d726ccfdc2d9 --- /dev/null +++ b/net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-3.patch @@ -0,0 +1,33 @@ +From 043060b18d27f24fe723e39bc2c9e5f50dde60dd Mon Sep 17 00:00:00 2001 +From: Phil Sutter +Date: Fri, 22 Jun 2018 14:18:59 +0200 +Subject: expr/exthdr: Fix JSON parsing on big endian + +When setting NFTNL_EXPR_EXTHDR_TYPE, one needs to call +nftnl_expr_set_u8() and not nftnl_expr_set_u32(). Otherwise 'type' +variable is assigned to uint32_t parameter before being passed to +nftnl_expr_exthdr_set() as void pointer which casts it to uint8_t. +On big endian systems, the latter would only consider the most +significant byte instead of the least significant one. + +Signed-off-by: Phil Sutter +--- + src/expr/exthdr.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/expr/exthdr.c b/src/expr/exthdr.c +index 75cafbc..a351835 100644 +--- a/src/expr/exthdr.c ++++ b/src/expr/exthdr.c +@@ -270,7 +270,7 @@ nftnl_expr_exthdr_json_parse(struct nftnl_expr *e, json_t *root, + type = str2exthdr_type(exthdr_type); + if (type < 0) + return -1; +- nftnl_expr_set_u32(e, NFTNL_EXPR_EXTHDR_TYPE, type); ++ nftnl_expr_set_u8(e, NFTNL_EXPR_EXTHDR_TYPE, type); + } + + if (nftnl_jansson_parse_val(root, "offset", NFTNL_TYPE_U32, &uval32, +-- +cgit v1.2.1 + diff --git a/net-libs/libnftnl/libnftnl-1.1.1-r1.ebuild b/net-libs/libnftnl/libnftnl-1.1.1-r1.ebuild new file mode 100644 index 000000000000..078b64bdd182 --- /dev/null +++ b/net-libs/libnftnl/libnftnl-1.1.1-r1.ebuild @@ -0,0 +1,67 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit autotools linux-info toolchain-funcs + +DESCRIPTION="Netlink API to the in-kernel nf_tables subsystem" +HOMEPAGE="https://netfilter.org/projects/nftables/" +SRC_URI="https://netfilter.org/projects/${PN}/files/${P}.tar.bz2" + +LICENSE="GPL-2" +SLOT="0/7" # libnftnl.so version +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ppc ppc64 ~x86" +IUSE="examples json static-libs test" + +RDEPEND=">=net-libs/libmnl-1.0.3 + json? ( >=dev-libs/jansson-2.3 )" +DEPEND="virtual/pkgconfig + ${RDEPEND}" + +REQUIRED_USE="test? ( json )" + +PATCHES=( + "${FILESDIR}"/${P}-big-endian-1.patch + "${FILESDIR}"/${P}-big-endian-2.patch + "${FILESDIR}"/${P}-big-endian-3.patch +) + +pkg_setup() { + if kernel_is ge 3 13; then + CONFIG_CHECK="~NF_TABLES" + linux-info_pkg_setup + else + eerror "This package requires kernel version 3.13 or newer to work properly." + fi +} +src_prepare() { + default + eautoreconf +} + +src_configure() { + local myeconfargs=( + $(use_enable static-libs static) + $(use_with json json-parsing) + ) + econf "${myeconfargs[@]}" +} + +src_test() { + default + cd tests || die + ./test-script.sh || die +} + +src_install() { + default + gen_usr_ldscript -a nftnl + find "${D}" -name '*.la' -delete || die "Could not rm libtool files" + + if use examples; then + find examples/ -name 'Makefile*' -delete || die "Could not rm examples" + dodoc -r examples + docompress -x /usr/share/doc/${PF}/examples + fi +} -- cgit v1.2.3