summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Pawan Wagh <waghpawan@google.com> 2022-11-18 00:31:17 +0000
committer Pawan Wagh <waghpawan@google.com> 2022-11-18 01:08:23 +0000
commitb09bee95faa14b0f7017ef93995dbffce44c96ef (patch)
treee85f3080966c88957c2f07d7dacbce07e9a28702
parent84af7ae353ee400a090ba8772850d94889efda3d (diff)
set calling UID in fuzzService
Test: m servicemanager_fuzzer && out/host/linux-x86/fuzz/x86_64/servicemanager_fuzzer/servicemanager_fuzzer Bug: 254864895 Change-Id: Iec63eb56ef3c3a39b24ff32a27893fdb4243e923
-rw-r--r--libs/binder/tests/parcel_fuzzer/libbinder_driver.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/libs/binder/tests/parcel_fuzzer/libbinder_driver.cpp b/libs/binder/tests/parcel_fuzzer/libbinder_driver.cpp
index 9670aa30d8..86461c8670 100644
--- a/libs/binder/tests/parcel_fuzzer/libbinder_driver.cpp
+++ b/libs/binder/tests/parcel_fuzzer/libbinder_driver.cpp
@@ -18,6 +18,7 @@
#include <fuzzbinder/random_parcel.h>
#include <android-base/logging.h>
+#include <binder/IPCThreadState.h>
#include <binder/ProcessState.h>
namespace android {
@@ -30,6 +31,11 @@ void fuzzService(const sp<IBinder>& binder, FuzzedDataProvider&& provider) {
.extraFds = {},
};
+ if (provider.ConsumeBool()) {
+ // set calling uid
+ IPCThreadState::self()->restoreCallingIdentity(provider.ConsumeIntegral<int64_t>());
+ }
+
while (provider.remaining_bytes() > 0) {
uint32_t code = provider.ConsumeIntegral<uint32_t>();
uint32_t flags = provider.ConsumeIntegral<uint32_t>();