Project

General

Profile

Actions

Bug #168

closed

Выход за границу стека в функции find_nonfinished_state()

Added by Alexander Kamkin about 14 years ago. Updated over 13 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
03/10/2010
Due date:
% Done:

100%

Estimated time:
Detected in build:
091215
Platform:
Linux x86
Published in build:
2.8.306-beta-100714

Description

Обходчик ndfsm для поиска не до конца пройденных состояний использует структуру данных PathFinderData (см. функцию find_nonfinished_state, файл ndfsm.c). Проблема в том, что эта структура имеет достаточно большой размер (она содержит внутри себя хэш-таблицу), поэтому не всегда помещается в стеке вызова функции. При инициализации структуры вызывается memset(...), который может обнулять память за пределами стека со всеми вытекающими последствиями.

Проблема (если понять, в чем именно дело) решается уменьшением константы NDFSM_HASH_MAP_SIZE. Предлагается одно из следующих решений: либо создавать структуру PathFinderData динамически (а не размещать ее в стеке), либо поставить assertion, который проверяет, что структура в стек влезает.

Actions #1

Updated by Alexey Demakov almost 14 years ago

  • Status changed from New to Resolved
  • % Done changed from 0 to 100

Applied in changeset r3800.

Actions #2

Updated by Alexey Demakov almost 14 years ago

  • Published in build set to 2.8.306-beta-100714
Actions #3

Updated by Alexey Demakov over 13 years ago

  • Status changed from Resolved to Closed
Actions

Also available in: Atom PDF