Вот проблема, которую я нашел в книге об компьютерной безопасности. Он показывает код, но не объясняет, почему он dangereous.Неустойчивое целочисленное и компьютерное обеспечение
Можете ли вы объяснить это мне?
Вот проблема:
#include <stdlib.h>
#include <string.h>
void f (char *s)
{
char buf[32];
strcpy (buf, s);
}
int main (int argc, char **argv)
{
volatile int i = 0;
if (argc> 1)
f (argv[1]);
if (i)
system ("/bin/sh");
return EXIT_SUCCESS;
}
Спасибо за ответы!
Какая книга? ... –
В дополнение к ответам ниже: энергозависимый не является проблематичной частью, он только там, чтобы предотвратить компилятор от удаления переменной из-за оптимизации (потому что, кроме переполнения буфера, ясно, что происходит с это будет одинаково при каждом запуске программы) – deviantfan