mpd

Buffer overflow - требуется помощь зала!

Jun 01, 2020 12:51

Имеется код примера:
void function(int * array, int index) { array[index] = 23; } int main(void) { int array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; function(array, 75); return 0; }Вопрос: как штатными средствами выявить выход за пределы массива в функции примера? (штатными: т.е., взял и поставил недостающий пакет в систему; ( Read more... )

plain c, freesoftware, clang, memory, valgrind, gcc, testing

Leave a comment

Comments 5

(The comment has been removed)

Re: на Rust никаких дополнительных телодвижений mpd June 3 2020, 09:33:58 UTC
Не подходит по условию задачи.
Я был предельно понятен.

Reply


kunaifusu June 2 2020, 05:52:55 UTC
Средствам языка это недоступно, потому что с точки зрения языка тут никаких проблем нет, а отладить такое в статике можно какой-нибудь Coverity, за большие деньги. В динамике (в смысле если индекс вычисляется из юзерских данных) без понятия даже.

Reply

Re: Средствам языка это недоступно mpd June 3 2020, 09:30:08 UTC
Спасибо!
На самом деле, я уже в DW писал к этому посту, что это случай, когда sanitize компиляторов отступил, а до этого он неплохо справлялся и без Valgrind.
Понятно, что если заменить массив выделенной памятью - в динамике Valgrind всё покажет и расскажет.
Я себе в систему установил последние gcc и clang, будем посмотреть.

Reply


destroywindow June 28 2020, 20:53:19 UTC
Здесь подойдёт статический анализатор. Из открытых - cppcheck или clang-analyzer.

Reply

Re: статический анализатор... cppcheck или clang-analyzer mpd August 7 2020, 08:22:43 UTC
Спасибо!
Я пока выжидаю обновления, чтобы перепроверить и сообщить о результатах.

Reply


Leave a comment

Up