LINUX.ORG.RU

История изменений

Исправление MOPKOBKA, (текущая версия) :

Идея не в том что бы запретить писать в весь стек. Идея в том что бы:

void func() {
  int arr[10]; // значение на стеке
  int arr2[1];
  
  memset(arr, 0, sizeof(arr));
  memset(arr, 0, sizeof(arr) + sizeof(int));
}
Во втором memset выбило ошибку. Проверяется не просто принадлежность адреса по которому пишем к стеку, но и к переменной которая была передана на запись.

То есть если в memset передали адрес arr, то в него писать можно, хоть он и на стеке, а на остальное нельзя.

Исправление MOPKOBKA, :

Идея не в том что бы запретить писать в весь стек. Идея в том что бы:

void func() {
  int arr[10]; // значение на стеке
  
  memset(arr, 0, sizeof(arr));
  memset(arr, 0, sizeof(arr) + sizeof(int));
}
Во втором memset выбило ошибку. Проверяется не просто принадлежность адреса по которому пишем к стеку, но и к переменной которая была передана на запись.

То есть если в memset передали адрес arr, то в него писать можно, хоть он и на стеке, а на остальное нельзя.

Исходная версия MOPKOBKA, :

Идея не в том что бы запретить писать в стек. Идея в том что бы:

void func() {
  int arr[10]; // значение на стеке
  
  memset(arr, 0, sizeof(arr));
  memset(arr, 0, sizeof(arr) + sizeof(int));
}
Во втором memset выбило ошибку. Проверяется не просто принадлежность адреса по которому пишем к стеку, но и к переменной которая была передана на запись.

То есть если в memset передали адрес arr, то в него писать можно, хоть он и на стеке, а на остальное нельзя.