IIRC global variables like PATH used to exist at a certain memory address. But now it seems you never know where it is. I made a program before that printed out the address of a variable, and when I use it now it keeps showing up seemingly random addresses.
Code:
/* getenvaddr.c */
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
char *addr;
addr = getenv(argv[1]);
printf("Addr: %p\n", addr);
}
Code:
[root@garanka laboratory] # ./getenvaddr PATH
Addr: 0xaf9dfe9b
[root@garanka laboratory] # ./getenvaddr PATH
Addr: 0xafe83e9b
[root@garanka laboratory] # ./getenvaddr PATH
Addr: 0xaf88be9b
What has happened and why?