Проблема вызвана целочисленным переполнением при обработке некорректного заголовка WAP Push-сообщения, отправленного через SMS.
Переполнение возникает так как поле с размером заголовка приводится к
целому знаковому числу с типом int без должной проверки границ, что позволяет добиться получения отрицательного числа в переменной headerLength. В дальнейшем эта переменная используется при выделении памяти через вызов «new byte[headerLength]», что в случае получения отрицательного числа приводит к генерации исключения и аварийному завершению процесса com.android.phone.
Через несколько секунд процесс перезапускается, но эффект не ограничивается кратковременным прерыванием связи. Проблемное WAP Push-сообщение из-за аварийного завершения продолжает находиться в очереди необработанных сообщений и новая попытка его обработки приводит к очередному аварийному завершению процесса com.android.phone.
После серии подобный падений срабатывает обработчик RescueParty, который перезагружает устройство в режим Recovery, в котором предлагается выполнить сброс к заводским настройкам. Простая перезагрузка не помогает — если проблемное сообщение не удалено из очереди, примерно через 90 секунд устройство опять будет перезагружено.
Для удаления сообщения из очереди без сброса к заводским настройкам предлагается использовать утилиту adb:
adb shell content query --uri content://sms/raw --projection _id:destination_port:date:deleted adb shell cmd appops set com.android.shell WRITE_SMS allow adb shell "content delete --uri content://sms/raw --where "address='‹SENDER›'"" adb shell cmd appops set com.android.shell WRITE_SMS default adb shell pm clear com.android.providers.telephony
Но это лишь даст возможность извлечь SIM-карту, загрузиться и установить обновление прошивки. Так как из-за аварийного завершения процесса «com.android.phone» оператору связи не отправляется подтверждение обработки WAP Push-сообщения, до истечения таймаута он будет предпринимать новые попытки отправки и ситуация будет повторяться. В проведённых тестах повторные попытки продолжались от суток до недели. Для устройств, производители которых прекратили публикацию обновлений прошивки, обходного пути блокирования проблемы пока нет.
Источник: http://www.opennet.ru/opennews/art.shtml?num=66586
