| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- From ef108943f69a6e20533d58823740d3f0534ea8ec Mon Sep 17 00:00:00 2001
- From: Phil Sutter <[email protected]>
- Date: Wed, 1 Jun 2022 19:15:06 +0200
- Subject: libxtables: Unexport init_extensions*() declarations
- 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 <[email protected]>
- Fixes: 6c689b639cf8e ("Simplify static build extension loading")
- Signed-off-by: Phil Sutter <[email protected]>
- ---
- include/xtables.h | 44 ++++++++++++++++++++++----------------------
- 1 file changed, 22 insertions(+), 22 deletions(-)
- --- a/include/xtables.h
- +++ b/include/xtables.h
- @@ -585,27 +585,6 @@ static inline void xtables_print_mark_ma
- 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 *
- # 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" */
|