The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раскрыты подробности критической уязвимости в Exim"
Отправлено Ordu, 07-Сен-19 01:03 
Из общетеоретических соображений ответить на этот вопрос невозможно. Но из практических соображений можно: это будет зависеть от того, как ты будешь конвертировать.

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

А если ты откажешься от паскалевских строк, потому что, например, тебе не нравится сборка мусора, и ты хочешь рулить памятью под строки самостоятельно, то тут уже будет зависеть от того, как ты реализуешь строки в паскале. Скорее всего тебе ведь захочется отойти от упёртости паскаля реализуя их, и сделать что-нибудь разэдакое, в стиле:

struct c_string {
    size_t size;
    char str[0]; /* variable size */
};

Паскаль этого не позволяет (насколько я понимаю, он не умеет в array [] of char, а если ему указать 0 в качестве размера, то он любой индекс будет считать инвалидным и отвергать с рантайм ошибкой), значит ты так или иначе включишь "unsafe" режим программирования (заюзав какие-нибудь компиляторо-специфичные вещи, вплоть до ассемблерных вставок), таким образом у тебя будут все возможности нарушить инварианты языка, и если наружу ты выставишь API изоморфный C'шному API для работы с char* (чтобы максимально просто было бы переписывать), и под этим API не будешь вставлять дополнительных проверок на размеры (большинство этих проверок ведь не нужны и тормозят выполнение программы), то ты легко при переписывании сможешь воспроизвести баг.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру