diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/sysdep.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/sysdep.c b/src/sysdep.c index 96c9e538409..86d420f66c4 100644 --- a/src/sysdep.c +++ b/src/sysdep.c | |||
| @@ -144,11 +144,16 @@ static const int baud_convert[] = | |||
| 144 | bool | 144 | bool |
| 145 | disable_address_randomization (void) | 145 | disable_address_randomization (void) |
| 146 | { | 146 | { |
| 147 | bool disabled = false; | ||
| 148 | int pers = personality (0xffffffff); | 147 | int pers = personality (0xffffffff); |
| 149 | disabled = (! (pers & ADDR_NO_RANDOMIZE) | 148 | if (pers < 0) |
| 150 | && 0 <= personality (pers | ADDR_NO_RANDOMIZE)); | 149 | return false; |
| 151 | return disabled; | 150 | int desired_pers = pers | ADDR_NO_RANDOMIZE; |
| 151 | |||
| 152 | /* Call 'personality' twice, to detect buggy platforms like WSL | ||
| 153 | where 'personality' always returns 0. */ | ||
| 154 | return (pers != desired_pers | ||
| 155 | && personality (desired_pers) == pers | ||
| 156 | && personality (0xffffffff) == desired_pers); | ||
| 152 | } | 157 | } |
| 153 | #endif | 158 | #endif |
| 154 | 159 | ||