Fail gracefully if we get a bad API whitelist.
If we send a bad API whitelist to the Zygote, it causes it to close the socket. If we take no further action in AMS, it results in the same list of exceptions being sent when we re-open the socket, resulting in it again being closed. This results in no longer fork/start any new processes. Since the list is persisted, this would result in the device entering a boot loop upon reboot. Since no apps could be started, we cannot recover. So in the case that the exemptions list causes problems, clear out the list so we don't try to send it again next time. This means we will see a single failure, but future attempts will succeed (obviously without any whitelist). The device should not enter a boot loop. Note, the test below relies on the fact that we can send at most 1024 arguments in a command to the Zygote (MAX_ZYGOTE_ARGC), and that each item on the list is a separate argument. Test: adb shell settings put global hidden_api_blacklist_exemptions \ Test: $(for i in {1..1025}; do echo -n $i,; done) Bug: 64382372 Change-Id: Ie47095d516c247ff6a8d667a2ac9b7be45f1acda
Loading
Please register or sign in to comment