Я использую Infersharp для анализа скомпилированного проекта .net 6.0 C# для потенциальных проблем. Тем не менее, он не обнаруживает переполнение буфера в следующем коде:
namespace Buffer_overflow
{
public class Buffer_overflow_Example
{
public static void Main()
{
var obj = new Buffer_overflow_Example();
obj.Crash();
}
void Crash()
{
int[] array = new int[10]; // array size is clearly defined
int x = array[10]; // out-of-bounds access: max index is 9
//int[] array = null;
//array[10] = 42; // null dereference
}
}
}
< /code>
Интересно, что если я не понаправду, нулевая линия Dereference, Infersharp действительно определяет проблему правильно: < /p>
error: Null Dereference(NULLPTR_DEREFERENCE)
< /code>
Но доступный доступ (массив [10]) не сообщается как проблема.
Вопрос: < /strong> < /p>
Почему этот буфер может не быть обнаружено модификацией? Исходный код Infersharp или его интеграция
с выводом, чтобы добавить поддержку для такого типа проверки? Распространение или патч Infersharp для поддержки проверки границ массива будет очень оценена. Возможно ли достичь этого с помощью вывода или, продления профиля?
Подробнее здесь: https://stackoverflow.com/questions/796 ... ond-bounds