060-libxtables-unexport-init_extensions-declarations.patch 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. From ef108943f69a6e20533d58823740d3f0534ea8ec Mon Sep 17 00:00:00 2001
  2. From: Phil Sutter <[email protected]>
  3. Date: Wed, 1 Jun 2022 19:15:06 +0200
  4. Subject: libxtables: Unexport init_extensions*() declarations
  5. The functions are used for static builds to initialize extensions after
  6. libxtables init. Regular library users should not need them, but the
  7. empty declarations introduced in #else case (and therefore present in
  8. user's env) may clash with existing symbol names.
  9. Avoid problems and guard the whole block declaring the function
  10. prototypes and mangling extensions' _init functions by XTABLES_INTERNAL.
  11. Reported-by: Nick Hainke <[email protected]>
  12. Fixes: 6c689b639cf8e ("Simplify static build extension loading")
  13. Signed-off-by: Phil Sutter <[email protected]>
  14. ---
  15. include/xtables.h | 44 ++++++++++++++++++++++----------------------
  16. 1 file changed, 22 insertions(+), 22 deletions(-)
  17. --- a/include/xtables.h
  18. +++ b/include/xtables.h
  19. @@ -585,27 +585,6 @@ static inline void xtables_print_mark_ma
  20. xtables_print_val_mask(mark, mask, NULL);
  21. }
  22. -#if defined(ALL_INCLUSIVE) || defined(NO_SHARED_LIBS)
  23. -# ifdef _INIT
  24. -# undef _init
  25. -# define _init _INIT
  26. -# endif
  27. - extern void init_extensions(void);
  28. - extern void init_extensions4(void);
  29. - extern void init_extensions6(void);
  30. - extern void init_extensionsa(void);
  31. - extern void init_extensionsb(void);
  32. -#else
  33. -# define _init __attribute__((constructor)) _INIT
  34. -# define EMPTY_FUNC_DEF(x) static inline void x(void) {}
  35. - EMPTY_FUNC_DEF(init_extensions)
  36. - EMPTY_FUNC_DEF(init_extensions4)
  37. - EMPTY_FUNC_DEF(init_extensions6)
  38. - EMPTY_FUNC_DEF(init_extensionsa)
  39. - EMPTY_FUNC_DEF(init_extensionsb)
  40. -# undef EMPTY_FUNC_DEF
  41. -#endif
  42. -
  43. extern const struct xtables_pprot xtables_chain_protos[];
  44. extern uint16_t xtables_parse_protocol(const char *s);
  45. @@ -663,9 +642,30 @@ void xtables_announce_chain(const char *
  46. # define ARRAY_SIZE(x) (sizeof(x) / sizeof(*(x)))
  47. # endif
  48. +#if defined(ALL_INCLUSIVE) || defined(NO_SHARED_LIBS)
  49. +# ifdef _INIT
  50. +# undef _init
  51. +# define _init _INIT
  52. +# endif
  53. + extern void init_extensions(void);
  54. + extern void init_extensions4(void);
  55. + extern void init_extensions6(void);
  56. + extern void init_extensionsa(void);
  57. + extern void init_extensionsb(void);
  58. +#else
  59. +# define _init __attribute__((constructor)) _INIT
  60. +# define EMPTY_FUNC_DEF(x) static inline void x(void) {}
  61. + EMPTY_FUNC_DEF(init_extensions)
  62. + EMPTY_FUNC_DEF(init_extensions4)
  63. + EMPTY_FUNC_DEF(init_extensions6)
  64. + EMPTY_FUNC_DEF(init_extensionsa)
  65. + EMPTY_FUNC_DEF(init_extensionsb)
  66. +# undef EMPTY_FUNC_DEF
  67. +#endif
  68. +
  69. extern void _init(void);
  70. -#endif
  71. +#endif /* XTABLES_INTERNAL */
  72. #ifdef __cplusplus
  73. } /* extern "C" */