logd: test: logd.sepolicy* errors

If setcon fails, try alternate setcon, and then if it still
fails call getcon to confirm if it is an OK sepolicy context
anyways.

Test: gTest logd-unit-tests --gtest_filter=logd.sepolicy*
Change-Id: Iaf20b8a1a4a7312247288e1879884a54893c15ae
This commit is contained in:
Mark Salyzyn 2017-02-22 15:06:21 -08:00
parent 3d5cd59d73
commit bc1d2aeff9

View file

@ -999,16 +999,18 @@ static pid_t sepolicy_rate(unsigned rate, unsigned num) {
}
// We may have DAC, but let's not have MAC
if (setcon("u:object_r:shell:s0") < 0) {
if ((setcon("u:object_r:shell:s0") < 0) && (setcon("u:r:shell:s0") < 0)) {
int save_errno = errno;
security_context_t context;
getcon(&context);
fprintf(stderr, "setcon(\"u:r:shell:s0\") failed @\"%s\" %s\n", context,
strerror(save_errno));
freecon(context);
_exit(-1);
// NOTREACHED
return 0;
if (strcmp(context, "u:r:shell:s0")) {
fprintf(stderr, "setcon(\"u:r:shell:s0\") failed @\"%s\" %s\n",
context, strerror(save_errno));
freecon(context);
_exit(-1);
// NOTREACHED
return 0;
}
}
// The key here is we are root, but we are in u:r:shell:s0,