mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-12-14 10:24:32 -05:00
082bc48c32
https://review.lineageos.org/q/topic:P_asb_2022-05 https://review.lineageos.org/q/topic:P_asb_2022-06 https://review.lineageos.org/q/topic:P_asb_2022-07 https://review.lineageos.org/q/topic:P_asb_2022-08 https://review.lineageos.org/q/topic:P_asb_2022-09 https://review.lineageos.org/q/topic:P_asb_2022-10 https://review.lineageos.org/q/topic:P_asb_2022-11 https://review.lineageos.org/q/topic:P_asb_2022-12 https://review.lineageos.org/q/topic:P_asb_2023-01 https://review.lineageos.org/q/topic:P_asb_2023-02 https://review.lineageos.org/q/topic:P_asb_2023-03 https://review.lineageos.org/q/topic:P_asb_2023-04 https://review.lineageos.org/q/topic:P_asb_2023-05 https://review.lineageos.org/q/topic:P_asb_2023-06 https://review.lineageos.org/q/topic:P_asb_2023-07 accounted for via manifest change: https://review.lineageos.org/c/LineageOS/android_external_freetype/+/361250 https://review.lineageos.org/q/topic:P_asb_2023-08 accounted for via manifest change: https://review.lineageos.org/c/LineageOS/android_external_freetype/+/364606 accounted for via patches: https://review.lineageos.org/c/LineageOS/android_system_ca-certificates/+/365328 https://review.lineageos.org/q/topic:P_asb_2023-09 https://review.lineageos.org/q/topic:P_asb_2023-10 https://review.lineageos.org/q/topic:P_asb_2023-11 accounted for via patches: https://review.lineageos.org/c/LineageOS/android_system_ca-certificates/+/374916 https://review.lineageos.org/q/topic:P_asb_2023-12 https://review.lineageos.org/q/topic:P_asb_2024-01 https://review.lineageos.org/q/topic:P_asb_2024-02 https://review.lineageos.org/q/topic:P_asb_2024-03 https://review.lineageos.org/q/topic:P_asb_2024-04 Signed-off-by: Tavi <tavi@divested.dev>
72 lines
3.1 KiB
Diff
72 lines
3.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Pawan Wagh <waghpawan@google.com>
|
|
Date: Tue, 13 Jun 2023 17:37:26 +0000
|
|
Subject: [PATCH] Use readUniqueFileDescriptor in incidentd service
|
|
|
|
readFileDescriptor doesn't provide ownership of the fds. fdopen
|
|
needs ownership of the fds. Fds read from parcel should be duped
|
|
in this scenario and readUniqueFileDescriptor dups fds internally.
|
|
|
|
Test: m incidentd_service_fuzzer && adb sync data && adb shell /data/fuzz/x86_64/incidentd_service_fuzzer/incidentd_service_fuzzer
|
|
Test: atest incidentd_test
|
|
Bug: 286931110
|
|
Bug: 283699145
|
|
(cherry picked from commit ba78ef276951269f7b024baebdf1b8fa40bedb23)
|
|
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:b4aaf180ee8f3e375c7ab411f03cf9c24c1d8055)
|
|
Merged-In: Ibe03a17dee91ac5bf25d123d4fd9c0bdd3c7d80e
|
|
Change-Id: Ibe03a17dee91ac5bf25d123d4fd9c0bdd3c7d80e
|
|
---
|
|
cmds/incidentd/src/IncidentService.cpp | 25 +++++++++++++++++--------
|
|
1 file changed, 17 insertions(+), 8 deletions(-)
|
|
|
|
diff --git a/cmds/incidentd/src/IncidentService.cpp b/cmds/incidentd/src/IncidentService.cpp
|
|
index e305b5462b77..5610a40b7891 100644
|
|
--- a/cmds/incidentd/src/IncidentService.cpp
|
|
+++ b/cmds/incidentd/src/IncidentService.cpp
|
|
@@ -258,12 +258,21 @@ Status IncidentService::systemRunning() {
|
|
status_t IncidentService::onTransact(uint32_t code, const Parcel& data, Parcel* reply,
|
|
uint32_t flags) {
|
|
status_t err;
|
|
+ status_t status;
|
|
|
|
switch (code) {
|
|
case SHELL_COMMAND_TRANSACTION: {
|
|
- int in = data.readFileDescriptor();
|
|
- int out = data.readFileDescriptor();
|
|
- int err = data.readFileDescriptor();
|
|
+ unique_fd in, out, err;
|
|
+
|
|
+ status = data.readUniqueFileDescriptor(&in);
|
|
+ if (status != OK) return status;
|
|
+
|
|
+ status = data.readUniqueFileDescriptor(&out);
|
|
+ if (status != OK) return status;
|
|
+
|
|
+ status = data.readUniqueFileDescriptor(&err);
|
|
+ if (status != OK) return status;
|
|
+
|
|
int argc = data.readInt32();
|
|
Vector<String8> args;
|
|
for (int i = 0; i < argc && data.dataAvail() > 0; i++) {
|
|
@@ -273,15 +282,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) {
|