234 lines
8.0 KiB
Diff
234 lines
8.0 KiB
Diff
|
From b46406de8a93abe10e685c422597516517c0bff3 Mon Sep 17 00:00:00 2001
|
||
|
From: Petr Lautrbach <plautrba@redhat.com>
|
||
|
Date: Fri, 9 Oct 2020 15:00:50 +0200
|
||
|
Subject: [PATCH] libsemanage: Remove legacy and duplicate symbols
|
||
|
|
||
|
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@redhat.com>
|
||
|
---
|
||
|
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.29.0
|
||
|
|