Infersharp не обнаруживает перерасход буфера в доступе к массиву C# за пределами границ ⇐ C#

Место общения программистов C#
Anonymous
Infersharp не обнаруживает перерасход буфера в доступе к массиву C# за пределами границ

Сообщение Anonymous »

Я использую 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

Вернуться в «C#»