On Fri, Oct 9, 2020 at 9:48 AM Petr Lautrbach <plautrba@xxxxxxxxxx> wrote: > > Versioned duplicate symbols cause problems for LTO. These symbols were > introduced during the CIL integration several releases ago and were only > consumed by other SELinux userspace components. > > Related: https://github.com/SELinuxProject/selinux/issues/245 > > Signed-off-by: Petr Lautrbach <plautrba@xxxxxxxxxx> Acked-by: James Carter <jwcart2@xxxxxxxxx> > --- > libsemanage/include/semanage/modules.h | 2 +- > libsemanage/src/libsemanage.map | 5 -- > libsemanage/src/modules.c | 100 +------------------------ > libsemanage/src/modules.h | 9 +-- > libsemanage/src/semanageswig_python.i | 2 - > 5 files changed, 4 insertions(+), 114 deletions(-) > > diff --git a/libsemanage/include/semanage/modules.h b/libsemanage/include/semanage/modules.h > index ac4039314857..b51f61f033d5 100644 > --- a/libsemanage/include/semanage/modules.h > +++ b/libsemanage/include/semanage/modules.h > @@ -33,7 +33,7 @@ typedef struct semanage_module_key semanage_module_key_t; > */ > > extern int semanage_module_install(semanage_handle_t *, > - char *module_data, size_t data_len, char *name, char *ext_lang); > + char *module_data, size_t data_len, const char *name, const char *ext_lang); > extern int semanage_module_install_file(semanage_handle_t *, > const char *module_name); > extern int semanage_module_remove(semanage_handle_t *, char *module_name); > diff --git a/libsemanage/src/libsemanage.map b/libsemanage/src/libsemanage.map > index 1375a8ca0ea7..4bec06aaae27 100644 > --- a/libsemanage/src/libsemanage.map > +++ b/libsemanage/src/libsemanage.map > @@ -167,18 +167,13 @@ LIBSEMANAGE_1.0 { > semanage_mls_enabled; > semanage_module_disable; > semanage_module_enable; > - semanage_module_get_enabled; > semanage_module_get_name; > semanage_module_get_version; > semanage_module_info_datum_destroy; > - semanage_module_install; > - semanage_module_install_base; > - semanage_module_install_base_file; > semanage_module_install_file; > semanage_module_list; > semanage_module_list_nth; > semanage_module_remove; > - semanage_module_upgrade; > semanage_module_upgrade_file; > semanage_msg_get_channel; > semanage_msg_get_fname; > diff --git a/libsemanage/src/modules.c b/libsemanage/src/modules.c > index 6d3eb60ae462..8b36801038df 100644 > --- a/libsemanage/src/modules.c > +++ b/libsemanage/src/modules.c > @@ -42,70 +42,7 @@ > #include "modules.h" > #include "debug.h" > > -asm(".symver semanage_module_get_enabled_1_1,semanage_module_get_enabled@@LIBSEMANAGE_1.1"); > -asm(".symver semanage_module_get_enabled_1_0,semanage_module_get_enabled@LIBSEMANAGE_1.0"); > -asm(".symver semanage_module_install_pp,semanage_module_install@LIBSEMANAGE_1.0"); > -asm(".symver semanage_module_install_hll,semanage_module_install@@LIBSEMANAGE_1.1"); > - > -/* Takes a module stored in 'module_data' and parses its headers. > - * Sets reference variables 'module_name' to module's name and > - * 'version' to module's version. The caller is responsible for > - * free()ing 'module_name' and 'version'; they will be > - * set to NULL upon entering this function. Returns 0 on success, -1 > - * if out of memory, or -2 if data did not represent a module. > - */ > -static int parse_module_headers(semanage_handle_t * sh, char *module_data, > - size_t data_len, char **module_name, char **version) > -{ > - struct sepol_policy_file *pf; > - int file_type; > - *version = NULL; > - > - if (sepol_policy_file_create(&pf)) { > - ERR(sh, "Out of memory!"); > - return -1; > - } > - sepol_policy_file_set_mem(pf, module_data, data_len); > - sepol_policy_file_set_handle(pf, sh->sepolh); > - if (module_data == NULL || > - data_len == 0 || > - sepol_module_package_info(pf, &file_type, module_name, version) == -1) { > - sepol_policy_file_free(pf); > - ERR(sh, "Could not parse module data."); > - return -2; > - } > - sepol_policy_file_free(pf); > - if (file_type != SEPOL_POLICY_MOD) { > - ERR(sh, "Data did not represent a pp module. Please upgrade to the latest version of libsemanage to support hll modules."); > - return -2; > - } > - > - return 0; > -} > - > -/* This function is used to preserve ABI compatibility with > - * versions of semodule using LIBSEMANAGE_1.0 > - */ > -int semanage_module_install_pp(semanage_handle_t * sh, > - char *module_data, size_t data_len) > -{ > - char *name = NULL; > - char *version = NULL; > - int status; > - > - if ((status = parse_module_headers(sh, module_data, data_len, &name, &version)) != 0) { > - goto cleanup; > - } > - > - status = semanage_module_install_hll(sh, module_data, data_len, name, "pp"); > - > -cleanup: > - free(name); > - free(version); > - return status; > -} > - > -int semanage_module_install_hll(semanage_handle_t * sh, > +int semanage_module_install(semanage_handle_t * sh, > char *module_data, size_t data_len, const char *name, const char *ext_lang) > { > if (sh->funcs->install == NULL) { > @@ -160,16 +97,6 @@ int semanage_module_extract(semanage_handle_t * sh, > return sh->funcs->extract(sh, modkey, extract_cil, mapped_data, data_len, modinfo); > } > > -/* Legacy function that remains to preserve ABI > - * compatibility. Please use semanage_module_install instead. > - */ > -int semanage_module_upgrade(semanage_handle_t * sh, > - char *module_data, size_t data_len) > -{ > - return semanage_module_install_pp(sh, module_data, data_len); > - > -} > - > /* Legacy function that remains to preserve ABI > * compatibility. Please use semanage_module_install_file instead. > */ > @@ -179,24 +106,6 @@ int semanage_module_upgrade_file(semanage_handle_t * sh, > return semanage_module_install_file(sh, module_name); > } > > -/* Legacy function that remains to preserve ABI > - * compatibility. Please use semanage_module_install instead. > - */ > -int semanage_module_install_base(semanage_handle_t * sh, > - char *module_data, size_t data_len) > -{ > - return semanage_module_install_pp(sh, module_data, data_len); > -} > - > -/* Legacy function that remains to preserve ABI > - * compatibility. Please use semanage_module_install_file instead. > - */ > -int semanage_module_install_base_file(semanage_handle_t * sh, > - const char *module_name) > -{ > - return semanage_module_install_file(sh, module_name); > -} > - > int semanage_module_remove(semanage_handle_t * sh, char *module_name) > { > if (sh->funcs->remove == NULL) { > @@ -780,7 +689,7 @@ int semanage_module_key_set_priority(semanage_handle_t *sh, > } > > > -int semanage_module_get_enabled_1_1(semanage_handle_t *sh, > +int semanage_module_get_enabled(semanage_handle_t *sh, > const semanage_module_key_t *modkey, > int *enabled) > { > @@ -800,11 +709,6 @@ int semanage_module_get_enabled_1_1(semanage_handle_t *sh, > return sh->funcs->get_enabled(sh, modkey, enabled); > } > > -int semanage_module_get_enabled_1_0(semanage_module_info_t *modinfo) > -{ > - return modinfo->enabled; > -} > - > int semanage_module_set_enabled(semanage_handle_t *sh, > const semanage_module_key_t *modkey, > int enabled) > diff --git a/libsemanage/src/modules.h b/libsemanage/src/modules.h > index 2d3576fb15df..64d4a157f5ca 100644 > --- a/libsemanage/src/modules.h > +++ b/libsemanage/src/modules.h > @@ -26,16 +26,9 @@ > > #include "semanage/modules.h" > > -int semanage_module_install_pp(semanage_handle_t * sh, > - char *module_data, size_t data_len); > -int semanage_module_install_hll(semanage_handle_t * sh, > - char *module_data, size_t data_len, const char *name, const char *ext_lang); > -int semanage_module_upgrade(semanage_handle_t * sh, > - char *module_data, size_t data_len); > + > int semanage_module_upgrade_file(semanage_handle_t * sh, > const char *module_name); > -int semanage_module_install_base(semanage_handle_t * sh, > - char *module_data, size_t data_len); > int semanage_module_install_base_file(semanage_handle_t * sh, > const char *module_name); > > diff --git a/libsemanage/src/semanageswig_python.i b/libsemanage/src/semanageswig_python.i > index 8dd79fc24213..5f0113966962 100644 > --- a/libsemanage/src/semanageswig_python.i > +++ b/libsemanage/src/semanageswig_python.i > @@ -30,8 +30,6 @@ > %} > > %include "stdint.i" > -%ignore semanage_module_install_pp; > -%ignore semanage_module_install_hll; > > %wrapper %{ > > -- > 2.28.0 >