Bug #168
closedВыход за границу стека в функции find_nonfinished_state()
100%
Description
Обходчик ndfsm для поиска не до конца пройденных состояний использует структуру данных PathFinderData (см. функцию find_nonfinished_state, файл ndfsm.c). Проблема в том, что эта структура имеет достаточно большой размер (она содержит внутри себя хэш-таблицу), поэтому не всегда помещается в стеке вызова функции. При инициализации структуры вызывается memset(...), который может обнулять память за пределами стека со всеми вытекающими последствиями.
Проблема (если понять, в чем именно дело) решается уменьшением константы NDFSM_HASH_MAP_SIZE. Предлагается одно из следующих решений: либо создавать структуру PathFinderData динамически (а не размещать ее в стеке), либо поставить assertion, который проверяет, что структура в стек влезает.
Updated by Alexey Demakov almost 14 years ago
- Status changed from New to Resolved
- % Done changed from 0 to 100
Applied in changeset r3800.
Updated by Alexey Demakov almost 14 years ago
- Published in build set to 2.8.306-beta-100714
Updated by Alexey Demakov over 13 years ago
- Status changed from Resolved to Closed