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

Commit ad094156 authored by Yao Chen's avatar Yao Chen Committed by Automerger Merge Worker
Browse files

Merge "Use readUniqueFileDescriptor in incidentd service" into udc-dev am:...

Merge "Use readUniqueFileDescriptor in incidentd service" into udc-dev am: 3ed8f722 am: d5a8fe86

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24606761



Change-Id: Icbf222cd2d67404699772a1a1653824fc36d8a72
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 8e3b54f8 d5a8fe86
Loading
Loading
Loading
Loading
+12 −8
Original line number Diff line number Diff line
@@ -502,9 +502,13 @@ status_t IncidentService::onTransact(uint32_t code, const Parcel& data, Parcel*

    switch (code) {
        case SHELL_COMMAND_TRANSACTION: {
            int in = data.readFileDescriptor();
            int out = data.readFileDescriptor();
            int err = data.readFileDescriptor();
            unique_fd in, out, err;
            if (status_t status = data.readUniqueFileDescriptor(&in); status != OK) return status;

            if (status_t status = data.readUniqueFileDescriptor(&out); status != OK) return status;

            if (status_t status = data.readUniqueFileDescriptor(&err); status != OK) return status;

            int argc = data.readInt32();
            Vector<String8> args;
            for (int i = 0; i < argc && data.dataAvail() > 0; i++) {
@@ -517,15 +521,15 @@ status_t IncidentService::onTransact(uint32_t code, const Parcel& data, Parcel*
                return BAD_VALUE;
            }

            FILE* fin = fdopen(in, "r");
            FILE* fout = fdopen(out, "w");
            FILE* ferr = fdopen(err, "w");
            FILE* fin = fdopen(in.release(), "r");
            FILE* fout = fdopen(out.release(), "w");
            FILE* ferr = fdopen(err.release(), "w");

            if (fin == NULL || fout == NULL || ferr == NULL) {
                resultReceiver->send(NO_MEMORY);
            } else {
                err = command(fin, fout, ferr, args);
                resultReceiver->send(err);
                status_t result = command(fin, fout, ferr, args);
                resultReceiver->send(result);
            }

            if (fin != NULL) {