3

Не спрашивайте, почему я не публикую это в стеке. Итак, у меня есть эта маленькая программа на Си. Возвращает адрес переменной среды, указанной в argv [1].

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    printf("%s is at %p\n", argv[1], getenv(argv[1]));
}

Что раздражает, так это то, что в Ubuntu Linux 2.6.20-15 x86 он возвращает один и тот же адрес при каждом запуске программы.

Однако в Ubuntu Linux 3.2.0-37 x86 он каждый раз возвращает новый адрес. Так что нового в новом ядре?

1 ответ1

2

Ядро Linux имеет функцию рандомизации адресов памяти для обеспечения безопасности. Его цель - предотвратить надежные атаки переполнения буфера. Возможно, вы включили это на одном поле, но не на другом. проверьте sysctl как включить и отключить его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .