mirror of
https://github.com/SELinuxProject/selinux
synced 2025-03-11 04:37:29 +00:00
libsemanage: add back original module enable/disable functions for ABI compatability
This uses symbolic versioning to maintain ABI compatability with the old versions of semanage_module_get_enabled. Also to maintain ABI, the functions semanage_module_{enable,disable} are added back and modified to call the new semanage_module_set_enabled function. Removed in commits: - Revert "Last attempt at upstreaming semodule_disable patch." - Revert "fixes to commit 847d27b8385ce77ac71df8aa58a2d298b33d1ea4" - Revert "libsemanage: change module disabled from rename to symlink" - Revert "libsemanage: Cleanup/fix enable/disable/remove module." Signed-off-by: Steve Lawrence <slawrence@tresys.com>
This commit is contained in:
parent
031ee84821
commit
9fbc6d1441
@ -6,10 +6,13 @@ LIBSEMANAGE_1.0 {
|
||||
semanage_module_install; semanage_module_install_file;
|
||||
semanage_module_upgrade; semanage_module_upgrade_file;
|
||||
semanage_module_install_base; semanage_module_install_base_file;
|
||||
semanage_module_enable;
|
||||
semanage_module_disable;
|
||||
semanage_module_remove;
|
||||
semanage_module_list; semanage_module_info_datum_destroy;
|
||||
semanage_module_list_nth; semanage_module_get_name;
|
||||
semanage_module_get_version; semanage_select_store;
|
||||
semanage_module_get_enabled;
|
||||
semanage_reload_policy; semanage_set_reload; semanage_set_rebuild;
|
||||
semanage_user_*; semanage_bool_*; semanage_seuser_*;
|
||||
semanage_iface_*; semanage_port_*; semanage_context_*;
|
||||
|
@ -26,6 +26,5 @@ hidden_proto(semanage_module_get_name)
|
||||
hidden_proto(semanage_module_key_get_name)
|
||||
hidden_proto(semanage_module_key_set_priority)
|
||||
hidden_proto(semanage_module_key_set_name)
|
||||
hidden_proto(semanage_module_get_enabled)
|
||||
hidden_proto(semanage_module_set_enabled)
|
||||
#endif
|
||||
|
@ -41,6 +41,9 @@
|
||||
#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");
|
||||
|
||||
int semanage_module_install(semanage_handle_t * sh,
|
||||
char *module_data, size_t data_len)
|
||||
{
|
||||
@ -855,7 +858,7 @@ int semanage_module_key_set_priority(semanage_handle_t *sh,
|
||||
|
||||
hidden_def(semanage_module_key_set_priority)
|
||||
|
||||
int semanage_module_get_enabled(semanage_handle_t *sh,
|
||||
int semanage_module_get_enabled_1_1(semanage_handle_t *sh,
|
||||
const semanage_module_key_t *modkey,
|
||||
int *enabled)
|
||||
{
|
||||
@ -875,7 +878,10 @@ int semanage_module_get_enabled(semanage_handle_t *sh,
|
||||
return sh->funcs->get_enabled(sh, modkey, enabled);
|
||||
}
|
||||
|
||||
hidden_def(semanage_module_get_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,
|
||||
@ -903,6 +909,62 @@ int semanage_module_set_enabled(semanage_handle_t *sh,
|
||||
|
||||
hidden_def(semanage_module_set_enabled)
|
||||
|
||||
/* This function exists only for ABI compatability. It has been deprecated and
|
||||
* should not be used. Instead, use semanage_module_set_enabled() */
|
||||
int semanage_module_enable(semanage_handle_t *sh, char *module_name)
|
||||
{
|
||||
int rc = -1;
|
||||
semanage_module_key_t *modkey = NULL;
|
||||
|
||||
rc = semanage_module_key_create(sh, &modkey);
|
||||
if (rc != 0)
|
||||
goto exit;
|
||||
|
||||
rc = semanage_module_key_set_name(sh, modkey, module_name);
|
||||
if (rc != 0)
|
||||
goto exit;
|
||||
|
||||
rc = semanage_module_set_enabled(sh, modkey, 1);
|
||||
if (rc != 0)
|
||||
goto exit;
|
||||
|
||||
rc = 0;
|
||||
|
||||
exit:
|
||||
semanage_module_key_destroy(sh, modkey);
|
||||
free(modkey);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* This function exists only for ABI compatability. It has been deprecated and
|
||||
* should not be used. Instead, use semanage_module_set_enabled() */
|
||||
int semanage_module_disable(semanage_handle_t *sh, char *module_name)
|
||||
{
|
||||
int rc = -1;
|
||||
semanage_module_key_t *modkey = NULL;
|
||||
|
||||
rc = semanage_module_key_create(sh, &modkey);
|
||||
if (rc != 0)
|
||||
goto exit;
|
||||
|
||||
rc = semanage_module_key_set_name(sh, modkey, module_name);
|
||||
if (rc != 0)
|
||||
goto exit;
|
||||
|
||||
rc = semanage_module_set_enabled(sh, modkey, 0);
|
||||
if (rc != 0)
|
||||
goto exit;
|
||||
|
||||
rc = 0;
|
||||
|
||||
exit:
|
||||
semanage_module_key_destroy(sh, modkey);
|
||||
free(modkey);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Converts a string to a priority
|
||||
*
|
||||
* returns -1 if str is not a valid priority.
|
||||
|
Loading…
Reference in New Issue
Block a user