Архитектура ARM9. Язык программирования C.
У нас есть сторонний стек, и один из вызовов переносит указатель (pBuffer
) на область памяти. Внутри стека они могут свободно перемещаться по переданному указателю и получать к нему доступ по своему усмотрению. К сожалению, они сместили переданный указатель и передали его в другую функцию, которая пыталась сделать это из odd / unalighed ячейки памяти
((uint16 *)pBuffer)[index] = value;
, где value
имеет тип uint16
, а index
- проверенные границы и индексы pBuffer
. Это вызывает исключение доступа к невыровненной памяти. pBuffer
указывает на char *
в куче.
Как уже упоминалось, хотя мы можем заглянуть в сторонний стек, мы не можем официально обновить код. Поэтому мы уведомляем провайдера, и он предоставляет обновление в следующем выпуске.
Я хочу понять, есть ли обходной путь для этого. Как выполнить указанное выше задание, не нарушая неприсоединенного доступа? Каков наилучший подход к решению таких проблем.