Показать сообщение отдельно
  #29  
Старый 29.04.2017, 09:41
Semen Panevin
Guest
 
Сообщений: n/a
По умолчанию Re: Spellchecker issue

Semen Panevin написал(а) к Michael Dukelsky в Apr 17 08:04:04 по местному времени:

Доброго здоровьица тебе, Michael!

Monday April 24 2017 10:04, Michael Dukelsky писал Semen Panevin:

MD>>> Скорее всего эта функция пишет в массив, не
MD>>> проверяя нарушения границ массива, и радостно перезаписывает то
MD>>> место, где хранится указатель на массив. После чего попытка
MD>>> освобождения выделенной памяти приводит к краху.

SP>> Под dest выделяется памяти src len + 1. Я пробовал увеличить в 2
SP>> раза, не помогло.

MD> Не надо гадать. Надо проверить, что функция XlatStr действительно
MD> портит значение указателя на выделенную память.
Увеличение буфера в ТРИ раза помогло. Значит точно портит, и точно в конце. Функция здоровая с кучей непонятной мне логики, самому разобраться в ней я ниасилю. Посему вопрос: коммитить воркароунд с увеличением буфера?

MD> Если портит, то нужно
MD> разобраться из-за чего это происходит, из-за того, что она получает
MD> неверные данные, которые она не должна была получить, или из-за ошибки
MD> в самой функции. В первом случае неверные данные могут быть такими,
MD> что функция пишет по адресам, меньшим чем начало выделенного массива
MD> памяти. Поэтому сколько памяти не выделяй, это не поможет.
Путём следственных экспериментов выяснено, что портится именно в конце. Иначе увеличение не помогло бы.

MD> В обоих
MD> случаях надо добавить проверку входных данных функции, чтобы она не
MD> могла писать за границы выделенного массива.
Ниасилю. Я все эти указатели позабывал уже.

С наилучшими пожеланиями, Семён.

... Хорошо там, где мы есть! (про фидошников)
--- GoldED+/LNX 1.1.5-b20170303 (Linux 4.1.12-gentoo iF6M10)
Ответить с цитированием