replicant-frameworks_native/libs/binder
Michael Wachenschwanz d53a5c4aa9 Disallow reading object data from Parcels with non-object reads
The check added to each non-object reads adds an overhead. If the
objects (binders and file descriptors) were written to the Parcel in
sequential order then check adds a small O(1) overhead to each read,
plus an O(N) overhead to the first read (to verify the N objects were
added in order).
If the objects were written out of order (as in by jumping around the
Parcel
with setDataPosition and writing Binder, DON'T DO THIS!!) (writing non
objects out of order is fine), the first read is forced to sort the
objects
in the internal bookkeeping. Based on the assumption non sequential
writes
are infrequent and overall Parcels are probably mostly sorted, insertion
sort was used. Worst case sorts will add an O(N^2) overhead to the first
non object read from the Parcel.

Test: run cts -m CtsOsTestCases -t android.os.cts.ParcelTest

Bug: 29833520
Change-Id: I82de8eb5f5eb56f869542d5358e96884c24301b2
(cherry picked from commit c517681c66a1a387be657e0cf06da8d19659dd14)
2018-07-16 20:31:22 +02:00
..
tests Replace all instances of intptr_t with uintptr_t. 2015-01-13 21:59:44 +00:00
Android.mk binder: Squashed commit of MemoryHeapBaseIon 2015-11-02 17:29:40 +01:00
AppOpsManager.cpp Add body sensors app op - framework native 2015-05-01 13:51:45 -07:00
Binder.cpp C++11 compatibility. 2014-11-20 21:04:35 +00:00
BpBinder.cpp Binder: Remove unused functions & variables 2014-11-24 11:39:11 -08:00
BufferedTextOutput.cpp Prevent integer overflow when calculating buffer resizes 2015-06-08 14:49:09 -07:00
Debug.cpp We HAVE_LITTLE_ENDIAN. 2014-11-21 23:35:36 -08:00
IAppOpsCallback.cpp binder: rm utils/Debug.h 2014-05-29 13:10:03 -07:00
IAppOpsService.cpp Add body sensors app op - framework native 2015-05-01 13:51:45 -07:00
IBatteryStats.cpp Track camera and flashlight usage in battery stats. 2015-06-01 16:55:07 -07:00
IInterface.cpp Add backwards compatible versions of IInterface::asBinder() 2015-03-31 20:32:30 +00:00
IMemory.cpp Android 6.0.1 release 24 2016-04-05 12:31:30 -07:00
IPCThreadState.cpp Fix issue #27252896: Security Vulnerability -- weak binder 2016-03-25 17:47:54 -07:00
IPermissionController.cpp Add body sensors app op - framework native 2015-05-01 13:51:45 -07:00
IProcessInfoService.cpp Add ProcessInfoService to activity manager. 2015-02-02 14:56:55 -08:00
IServiceManager.cpp Replace IInterface::asBinder() with a static 2014-11-17 08:47:01 -08:00
MemoryBase.cpp Revert "Second try at adding a compatibility symbol for the MemoryBase constructor." 2013-07-09 22:15:42 +00:00
MemoryDealer.cpp Allow creation of heaps that are read-only to partner 2014-03-18 15:07:43 -07:00
MemoryHeapBase.cpp Remove references to obsolete pmem functionality. 2013-11-21 12:22:39 -08:00
MemoryHeapIon.cpp binder: MemoryHeapIon: Fix size_t vs integer formatting mismatch 2016-02-20 03:10:19 +01:00
Parcel.cpp Disallow reading object data from Parcels with non-object reads 2018-07-16 20:31:22 +02:00
PermissionCache.cpp Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGE 2012-01-03 22:38:27 +00:00
ProcessInfoService.cpp Add ProcessInfoService to activity manager. 2015-02-02 14:56:55 -08:00
ProcessState.cpp Added IPCThreadState::blockUntilThreadAvailable() method. 2015-04-14 13:17:25 -07:00
Static.cpp Fix issue #18356768: some app process may hang at Runtime#exit... 2014-11-13 17:09:59 -08:00
TextOutput.cpp Fix output of pointers for 64bit devices. 2014-10-31 11:08:19 -07:00