O endereço da variável de ambiente está mudando?

2

Não pergunte por que não estou postando isso no Stack. Então eu tenho esse pequeno programa em C Ele retorna o endereço da variável de ambiente especificada em 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]));
}

O que é irritante é que no Ubuntu Linux 2.6.20-15 x86 ele retorna o mesmo endereço toda vez que o programa é executado.

Noentanto,noUbuntuLinux3.2.0-37x86,eleretornaumendereçodiferenteacadavez.Então,oquehádenovononovokernel?

    
por WikiWitz 16.02.2013 / 00:01

1 resposta

1

O kernel do Linux tem um recurso que faz randomização de endereços de memória para segurança. Sua finalidade é impedir ataques confiáveis de estouro de buffer. Possivelmente você tem isso habilitado em uma caixa, mas não na outra. verifique sysctl para saber como ativar e desativá-lo.

    
por 16.02.2013 / 05:52