Redirect libselinux logging to dmesg for ueventd.

We already do this for init, but had failed to do it for ueventd
and could not capture any logging from libselinux calls made by
ueventd.

Truly enabling non-error logging also requires uncommenting a line
in Android.mk:
LOCAL_CFLAGS += -DLOG_UEVENTS=1
which enables other logging and sets the default log level to INFO,
or otherwise changing the klog level in the ueventd code (is not
settable by init.rc loglevel).

Change-Id: I00e6f9d6271f2a21d9078c96368816d74d6d2850
Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
This commit is contained in:
Stephen Smalley 2014-06-24 13:45:43 -04:00
parent 7950fc47a7
commit 439224e275
3 changed files with 8 additions and 1 deletions

View File

@ -938,7 +938,7 @@ static int audit_callback(void *data, security_class_t cls __attribute__((unused
return 0;
}
static int log_callback(int type, const char *fmt, ...)
int log_callback(int type, const char *fmt, ...)
{
int level;
va_list ap;

View File

@ -23,4 +23,6 @@
#define NOTICE(x...) KLOG_NOTICE("init", x)
#define INFO(x...) KLOG_INFO("init", x)
extern int log_callback(int type, const char *fmt, ...);
#endif

View File

@ -21,6 +21,7 @@
#include <stdio.h>
#include <ctype.h>
#include <signal.h>
#include <selinux/selinux.h>
#include <private/android_filesystem_config.h>
@ -76,6 +77,10 @@ int ueventd_main(int argc, char **argv)
}
#endif
union selinux_callback cb;
cb.func_log = log_callback;
selinux_set_callback(SELINUX_CB_LOG, cb);
INFO("starting ueventd\n");
/* Respect hardware passed in through the kernel cmd line. Here we will look