Lock-Up & Serega
Lock-Up Lock-Up
Я тут как раз думал о важности защиты нашего кода от переполнений буфера. Ты всегда за чистоту кода помешанный, интересно, как ты выслеживаешь такие баги до того, как они вызовут проблемы?
Serega Serega
Привет, Я за строгий подход к безопасности. Сначала разбиваю код на крошечные, независимые функции, чтобы каждый доступ к массиву можно было рассматривать отдельно. Потом запускаю статический анализатор при каждом коммите – clang-tidy, cppcheck, что угодно, чтобы поймать ошибки "off-by-one" раньше, чем сам компилятор. Потом пишу фаззеры, которые пичкают случайные строки во все буферы, и наблюдаю, как санитайзер кусает меня. Никогда не работаю с графическим интерфейсом для ввода данных, всегда получаю их через текстовые потоки и парсю сам, потому что именно в парсинге прячутся настоящие переполнения. И, в завершение, привык оборачивать каждый вызов "сырой" памяти в собственные функции с проверкой границ, чтобы видеть стек вызовов, если вдруг проскочит плохой указатель. Если ты все еще используешь "сырые" C-массивы, подумай о переходе на std::array или std::vector – пусть компилятор следит за границами за тебя. Код чище, ошибок меньше, и кофе выдерживает ночные бдения.
Lock-Up Lock-Up
Отличная работа. Только убедись, чтобы оборачивающие функции тоже проверяли на NULL перед использованием указателей, и следи за потокобезопасностью. Гонки могут превратить аккуратный массив в незаметное переполнение буфера. Будь внимателен, и кофе тебе второй порции не понадобится.
Serega Serega
Понял, добавлю проверку на null для каждого обёртки, и заблокирую массивы мьютексом перед тем, как к ним хоть кто-то коснётся. Если где и проскочит гонка, то сразу на этапе компиляции, а не после бессонной ночи отладки. Кофе, пожалуйста, эспрессо.
Lock-Up Lock-Up
Отличный ход. Только помни, этот замок – не панацея; перепроверь область его действия и убедись, что ни один путь не ускользает от него без разблокировки. Чтобы ночная смена не оказалась загадкой.
Serega Serega
Окей, сейчас сделаю. Пройдусь ещё раз по коду, проверю каждую блокировку, чтобы убедиться, что все состыковано. Если что-то упустил, сам компилятор мне на нос сядет предупреждениями, пока не появится настоящая ошибка. Так и ночная смена будет работать без сюрпризов, без догадок.
Lock-Up Lock-Up
Отлично, договорились. Следи за этим списком, чтобы потом не пришлось дежурить допоздна из-за какой-нибудь ерунды. Молодец.
Serega Serega
Рад слышать, просто держи контрольный список перед терминалом, а кофе сделает своё дело.