From: William Roberts <william.c.robe...@intel.com>

On Android for both the host build, and the target, certain
backends are not needed:
 - X Backend
 - DB Backend
 - Media Backend

Introduce the following defines for removing them from the
built library:

 - NO_X_BACKEND
 - NO_DB_BACKEND
 - NO_MEDIA_BACKEND

When configured with these options and an attempt
is made to use them, selabel_open() will return
ENOTSUP.

Signed-off-by: William Roberts <william.c.robe...@intel.com>
---
 libselinux/src/label.c | 29 ++++++++++++++++++++++++++---
 1 file changed, 26 insertions(+), 3 deletions(-)

diff --git a/libselinux/src/label.c b/libselinux/src/label.c
index 963bfcb..96a4ff1 100644
--- a/libselinux/src/label.c
+++ b/libselinux/src/label.c
@@ -17,15 +17,33 @@
 
 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
 
+#ifdef NO_MEDIA_BACKEND
+#define CONFIG_MEDIA_BACKEND(fnptr) NULL
+#else
+#define CONFIG_MEDIA_BACKEND(fnptr) &fnptr
+#endif
+
+#ifdef NO_X_BACKEND
+#define CONFIG_X_BACKEND(fnptr) NULL
+#else
+#define CONFIG_X_BACKEND(fnptr) &fnptr
+#endif
+
+#ifdef NO_DB_BACKEND
+#define CONFIG_DB_BACKEND(fnptr) NULL
+#else
+#define CONFIG_DB_BACKEND(fnptr) &fnptr
+#endif
+
 typedef int (*selabel_initfunc)(struct selabel_handle *rec,
                                const struct selinux_opt *opts,
                                unsigned nopts);
 
 static selabel_initfunc initfuncs[] = {
        &selabel_file_init,
-       &selabel_media_init,
-       &selabel_x_init,
-       &selabel_db_init,
+       CONFIG_MEDIA_BACKEND(selabel_media_init),
+       CONFIG_X_BACKEND(selabel_x_init),
+       CONFIG_DB_BACKEND(selabel_db_init),
        &selabel_property_init,
 };
 
@@ -325,6 +343,11 @@ struct selabel_handle *selabel_open(unsigned int backend,
                goto out;
        }
 
+       if (!initfuncs[backend]) {
+               errno = ENOTSUP;
+               goto out;
+       }
+
        rec = (struct selabel_handle *)malloc(sizeof(*rec));
        if (!rec)
                goto out;
-- 
1.9.1

_______________________________________________
Seandroid-list mailing list
Seandroid-list@tycho.nsa.gov
To unsubscribe, send email to seandroid-list-le...@tycho.nsa.gov.
To get help, send an email containing "help" to 
seandroid-list-requ...@tycho.nsa.gov.

Reply via email to