diff options
| author | 2023-09-29 18:09:07 +0000 | |
|---|---|---|
| committer | 2023-09-29 18:09:07 +0000 | |
| commit | 34178fa66a4a84ebc65bb6d54a800b8e0835b2d6 (patch) | |
| tree | d0032b35ee43fa5b17d4f340f3dc94c4c04365af | |
| parent | 7adeffd900374e6f98dccfd280d556153b5cf4cd (diff) | |
| parent | eb695e1fe9baba71d1b460e1a8249190f3ade4f7 (diff) | |
Merge "Use readUniqueFileDescriptor in incidentd service" into udc-qpr-dev
| -rw-r--r-- | cmds/incidentd/src/IncidentService.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/cmds/incidentd/src/IncidentService.cpp b/cmds/incidentd/src/IncidentService.cpp index 5af02f405ed9..0d3ae9b22476 100644 --- a/cmds/incidentd/src/IncidentService.cpp +++ b/cmds/incidentd/src/IncidentService.cpp @@ -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++) { @@ -514,15 +518,15 @@ status_t IncidentService::onTransact(uint32_t code, const Parcel& data, Parcel* sp<IResultReceiver> resultReceiver = IResultReceiver::asInterface(data.readStrongBinder()); - 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) { |