Может ли переполнение буфера стека привести к повреждению кучи?

Может ли переполнение буфера стека вызвать проблемы с повреждением кучи без переполнения адреса возврата? Если да, то можете ли вы привести пример?


person thel0rax    schedule 29.03.2014    source источник
comment
Какой язык? Какая платформа?   -  person Mikkel Løkke    schedule 29.03.2014


Ответы (1)


Может ли это привести к повреждению кучи, во многом зависит от платформы.

Но скажем, например, что переполнение буфера перезаписывает переменную-указатель, так что она получает новое значение, которое оказывается другим, но допустимым указателем. Если затем код освобождает указанный указатель (не зная, что теперь это что-то другое), тогда код, который ссылается на этот указатель, может дать сбой или вести себя неустойчиво, потому что память была преждевременно освобождена и, возможно, перераспределена для другой цели.

person 500 - Internal Server Error    schedule 29.03.2014
comment
Отличный ответ! Спасибо! - person thel0rax; 30.03.2014
comment
Я видел такую ​​ситуацию, когда указатель this высыпался из регистра, сохраняемого вызовом, в стек, а затем стек перезаписывался. - person Alex Guteniev; 15.06.2021