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:
Steve Lawrence 2014-06-13 13:20:26 -04:00
parent 031ee84821
commit 9fbc6d1441
3 changed files with 67 additions and 3 deletions

View File

@ -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_*;

View File

@ -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

View File

@ -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.