Merge "Check setegid() return values" am: 0d24c8f852

am: fb13dab611

Change-Id: I67b0dfc4049f337631e12ab29330984db9edd04c
This commit is contained in:
Tom Cherry 2017-02-24 01:02:19 +00:00 committed by android-build-merger
commit 5de0f0ea41

View file

@ -251,7 +251,10 @@ static void make_device(const char *path,
* some device nodes, so the uid has to be set with chown() and is still * some device nodes, so the uid has to be set with chown() and is still
* racy. Fixing the gid race at least fixed the issue with system_server * racy. Fixing the gid race at least fixed the issue with system_server
* opening dynamic input devices under the AID_INPUT gid. */ * opening dynamic input devices under the AID_INPUT gid. */
setegid(gid); if (setegid(gid)) {
PLOG(ERROR) << "setegid(" << gid << ") for " << path << " device failed";
goto out;
}
/* If the node already exists update its SELinux label to handle cases when /* If the node already exists update its SELinux label to handle cases when
* it was created with the wrong context during coldboot procedure. */ * it was created with the wrong context during coldboot procedure. */
if (mknod(path, mode, dev) && (errno == EEXIST) && secontext) { if (mknod(path, mode, dev) && (errno == EEXIST) && secontext) {
@ -273,7 +276,9 @@ static void make_device(const char *path,
out: out:
chown(path, uid, -1); chown(path, uid, -1);
setegid(AID_ROOT); if (setegid(AID_ROOT)) {
PLOG(FATAL) << "setegid(AID_ROOT) failed";
}
if (secontext) { if (secontext) {
freecon(secontext); freecon(secontext);