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 <[email protected]>
diff --git a/libsemanage/src/libsemanage.map b/libsemanage/src/libsemanage.map
index 1b863e9..e875723 100644
--- a/libsemanage/src/libsemanage.map
+++ b/libsemanage/src/libsemanage.map
@@ -6,10 +6,13 @@
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_*;
diff --git a/libsemanage/src/module_internal.h b/libsemanage/src/module_internal.h
index f7edcba..8a12788 100644
--- a/libsemanage/src/module_internal.h
+++ b/libsemanage/src/module_internal.h
@@ -26,6 +26,5 @@
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
diff --git a/libsemanage/src/modules.c b/libsemanage/src/modules.c
index 0aed6e5..daa52a6 100644
--- a/libsemanage/src/modules.c
+++ b/libsemanage/src/modules.c
@@ -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 @@
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 @@
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 @@
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.