From 84d12cfacf8ddd857a09435f3d982ab6250d250c Mon Sep 17 00:00:00 2001 From: Nicholas Vinson Date: Wed, 15 Jun 2022 07:35:28 -0400 Subject: build: fix clang+glibc snprintf substitution error When building with clang and glibc and -D_FORTIFY_SOURCE=2 is passed to clang, the snprintf member of the expr_ops and obj_ops structures will be incorrectly replaced with __builtin_snprintf_chk() which results in "error: no member named '__builtin___snprintf_chk'" errors at build time. This patch changes the member name from 'snprintf' to 'output' to prevent the replacement. This bug can be emulated using GCC by undefining the __va_arg_pack macro before stdio.h is included. This patch is based on the notes provided in https://bugs.gentoo.org/807766. Signed-off-by: Nicholas Vinson Signed-off-by: Florian Westphal --- src/obj/counter.c | 2 +- src/obj/ct_expect.c | 2 +- src/obj/ct_helper.c | 2 +- src/obj/ct_timeout.c | 2 +- src/obj/limit.c | 2 +- src/obj/quota.c | 2 +- src/obj/secmark.c | 2 +- src/obj/synproxy.c | 2 +- src/obj/tunnel.c | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) (limited to 'src/obj') diff --git a/src/obj/counter.c b/src/obj/counter.c index ef0cd20..ebf3e74 100644 --- a/src/obj/counter.c +++ b/src/obj/counter.c @@ -127,5 +127,5 @@ struct obj_ops obj_ops_counter = { .get = nftnl_obj_counter_get, .parse = nftnl_obj_counter_parse, .build = nftnl_obj_counter_build, - .snprintf = nftnl_obj_counter_snprintf, + .output = nftnl_obj_counter_snprintf, }; diff --git a/src/obj/ct_expect.c b/src/obj/ct_expect.c index 8136ad9..810ba9a 100644 --- a/src/obj/ct_expect.c +++ b/src/obj/ct_expect.c @@ -196,5 +196,5 @@ struct obj_ops obj_ops_ct_expect = { .get = nftnl_obj_ct_expect_get, .parse = nftnl_obj_ct_expect_parse, .build = nftnl_obj_ct_expect_build, - .snprintf = nftnl_obj_ct_expect_snprintf, + .output = nftnl_obj_ct_expect_snprintf, }; diff --git a/src/obj/ct_helper.c b/src/obj/ct_helper.c index c52032a..a31bd6f 100644 --- a/src/obj/ct_helper.c +++ b/src/obj/ct_helper.c @@ -150,5 +150,5 @@ struct obj_ops obj_ops_ct_helper = { .get = nftnl_obj_ct_helper_get, .parse = nftnl_obj_ct_helper_parse, .build = nftnl_obj_ct_helper_build, - .snprintf = nftnl_obj_ct_helper_snprintf, + .output = nftnl_obj_ct_helper_snprintf, }; diff --git a/src/obj/ct_timeout.c b/src/obj/ct_timeout.c index 1d4f8fb..65b48bd 100644 --- a/src/obj/ct_timeout.c +++ b/src/obj/ct_timeout.c @@ -316,5 +316,5 @@ struct obj_ops obj_ops_ct_timeout = { .get = nftnl_obj_ct_timeout_get, .parse = nftnl_obj_ct_timeout_parse, .build = nftnl_obj_ct_timeout_build, - .snprintf = nftnl_obj_ct_timeout_snprintf, + .output = nftnl_obj_ct_timeout_snprintf, }; diff --git a/src/obj/limit.c b/src/obj/limit.c index 8b40f9d..d7b1aed 100644 --- a/src/obj/limit.c +++ b/src/obj/limit.c @@ -168,5 +168,5 @@ struct obj_ops obj_ops_limit = { .get = nftnl_obj_limit_get, .parse = nftnl_obj_limit_parse, .build = nftnl_obj_limit_build, - .snprintf = nftnl_obj_limit_snprintf, + .output = nftnl_obj_limit_snprintf, }; diff --git a/src/obj/quota.c b/src/obj/quota.c index 8ab3300..6c7559a 100644 --- a/src/obj/quota.c +++ b/src/obj/quota.c @@ -144,5 +144,5 @@ struct obj_ops obj_ops_quota = { .get = nftnl_obj_quota_get, .parse = nftnl_obj_quota_parse, .build = nftnl_obj_quota_build, - .snprintf = nftnl_obj_quota_snprintf, + .output = nftnl_obj_quota_snprintf, }; diff --git a/src/obj/secmark.c b/src/obj/secmark.c index 2ccc803..e5c24b3 100644 --- a/src/obj/secmark.c +++ b/src/obj/secmark.c @@ -116,5 +116,5 @@ struct obj_ops obj_ops_secmark = { .get = nftnl_obj_secmark_get, .parse = nftnl_obj_secmark_parse, .build = nftnl_obj_secmark_build, - .snprintf = nftnl_obj_secmark_snprintf, + .output = nftnl_obj_secmark_snprintf, }; diff --git a/src/obj/synproxy.c b/src/obj/synproxy.c index d689fee..baef5c2 100644 --- a/src/obj/synproxy.c +++ b/src/obj/synproxy.c @@ -143,5 +143,5 @@ struct obj_ops obj_ops_synproxy = { .get = nftnl_obj_synproxy_get, .parse = nftnl_obj_synproxy_parse, .build = nftnl_obj_synproxy_build, - .snprintf = nftnl_obj_synproxy_snprintf, + .output = nftnl_obj_synproxy_snprintf, }; diff --git a/src/obj/tunnel.c b/src/obj/tunnel.c index 5ede6bd..d2503dc 100644 --- a/src/obj/tunnel.c +++ b/src/obj/tunnel.c @@ -547,5 +547,5 @@ struct obj_ops obj_ops_tunnel = { .get = nftnl_obj_tunnel_get, .parse = nftnl_obj_tunnel_parse, .build = nftnl_obj_tunnel_build, - .snprintf = nftnl_obj_tunnel_snprintf, + .output = nftnl_obj_tunnel_snprintf, }; -- cgit v1.2.3