Показать сообщение отдельно
  #27  
Старый 24.04.2017, 11:31
Michael Dukelsky
Guest
 
Сообщений: n/a
По умолчанию Spellchecker issue

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

Привет, Semen!

23 Apr 17 20:52, Semen Panevin послал(а) письмо к Michael Dukelsky:

SP>>> Перечитал всё что можно про delete и delete[], поставил
SP>>> несколько следственных экспериментов в рамках остаточных
SP>>> сиплюсплюсных познаний, и даже попытался осилить XlatStr(...).
SP>>> На первый взгляд косяков не обнаружено. Но падает...

SP>>> Падает точно после XlatStr. Если её закомментить - то не падает.

MD>> Копаться в этом коде лень.
SP> Т.е. всё? можно попрощаться со спелчекером?

Ну почему же? У меня даже нет права корректировать исходники голдеда на сервере. Так что на меня не надо ориентироваться. Я просто подсказал тебе возможную причину падения.

SP> Или есть шанс, что найдётся кто-то кому не лень?

Шанс есть всегда. :)

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

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

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

Желаю успехов, Semen!
За сим откланиваюсь, Michael.

... node (at) f1042 (dot) ru
--- GoldED+/LNX 1.1.5-b20151128
Ответить с цитированием