mirror of
https://github.com/SELinuxProject/selinux
synced 2024-12-25 23:42:05 +00:00
libselinux: introduce configurable backends
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.roberts@intel.com>
This commit is contained in:
parent
a982bc61b5
commit
84d07ebd48
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user