]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
libxtables: Unexport init_extensions*() declarations
authorPhil Sutter <phil@nwl.cc>
Wed, 1 Jun 2022 17:15:06 +0000 (19:15 +0200)
committerPhil Sutter <phil@nwl.cc>
Tue, 7 Jun 2022 15:22:33 +0000 (17:22 +0200)
The functions are used for static builds to initialize extensions after
libxtables init. Regular library users should not need them, but the
empty declarations introduced in #else case (and therefore present in
user's env) may clash with existing symbol names.

Avoid problems and guard the whole block declaring the function
prototypes and mangling extensions' _init functions by XTABLES_INTERNAL.

Reported-by: Nick Hainke <vincent@systemli.org>
Fixes: 6c689b639cf8e ("Simplify static build extension loading")
Signed-off-by: Phil Sutter <phil@nwl.cc>
include/xtables.h

index c2694b7b288863e8c411c1aa0813c3d99d3c1f72..f1937f3ea05308e4c83826bf9faa2e51bee53840 100644 (file)
@@ -585,27 +585,6 @@ static inline void xtables_print_mark_mask(unsigned int mark,
        xtables_print_val_mask(mark, mask, NULL);
 }
 
-#if defined(ALL_INCLUSIVE) || defined(NO_SHARED_LIBS)
-#      ifdef _INIT
-#              undef _init
-#              define _init _INIT
-#      endif
-       extern void init_extensions(void);
-       extern void init_extensions4(void);
-       extern void init_extensions6(void);
-       extern void init_extensionsa(void);
-       extern void init_extensionsb(void);
-#else
-#      define _init __attribute__((constructor)) _INIT
-#      define EMPTY_FUNC_DEF(x) static inline void x(void) {}
-       EMPTY_FUNC_DEF(init_extensions)
-       EMPTY_FUNC_DEF(init_extensions4)
-       EMPTY_FUNC_DEF(init_extensions6)
-       EMPTY_FUNC_DEF(init_extensionsa)
-       EMPTY_FUNC_DEF(init_extensionsb)
-#      undef EMPTY_FUNC_DEF
-#endif
-
 extern const struct xtables_pprot xtables_chain_protos[];
 extern uint16_t xtables_parse_protocol(const char *s);
 
@@ -663,9 +642,30 @@ void xtables_announce_chain(const char *name);
 #              define ARRAY_SIZE(x) (sizeof(x) / sizeof(*(x)))
 #      endif
 
+#if defined(ALL_INCLUSIVE) || defined(NO_SHARED_LIBS)
+#      ifdef _INIT
+#              undef _init
+#              define _init _INIT
+#      endif
+       extern void init_extensions(void);
+       extern void init_extensions4(void);
+       extern void init_extensions6(void);
+       extern void init_extensionsa(void);
+       extern void init_extensionsb(void);
+#else
+#      define _init __attribute__((constructor)) _INIT
+#      define EMPTY_FUNC_DEF(x) static inline void x(void) {}
+       EMPTY_FUNC_DEF(init_extensions)
+       EMPTY_FUNC_DEF(init_extensions4)
+       EMPTY_FUNC_DEF(init_extensions6)
+       EMPTY_FUNC_DEF(init_extensionsa)
+       EMPTY_FUNC_DEF(init_extensionsb)
+#      undef EMPTY_FUNC_DEF
+#endif
+
 extern void _init(void);
 
-#endif
+#endif /* XTABLES_INTERNAL */
 
 #ifdef __cplusplus
 } /* extern "C" */