Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9596d2b9 authored by Nick Kralevich's avatar Nick Kralevich
Browse files

init/service.cpp: fix FD leak for services with consoles

When init starts a service with a console, it tests for the presence of
a readable/writable console device. The test results in a leaked file
descriptor.

Use access() instead of open() to avoid leaking file descriptors.

Bug introduced in 70daa670.

Test: compiles and device boots
Change-Id: I4efcfa0bb2cdb09f0455bc04a3a91e784bda7962
parent b0aa8b23
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -567,9 +567,9 @@ bool Service::Start() {
            console_ = default_console;
        }

        bool have_console = (open(console_.c_str(), O_RDWR | O_CLOEXEC) != -1);
        bool have_console = (access(console_.c_str(), R_OK | W_OK) != -1);
        if (!have_console) {
            PLOG(ERROR) << "service '" << name_ << "' couldn't open console '" << console_ << "'";
            PLOG(ERROR) << "service '" << name_ << "' cannot gain read/write access to console '" << console_ << "'";
            flags_ |= SVC_DISABLED;
            return false;
        }