Skip to content

Commit dccbc9b

Browse files
committed
enable ASLR and NX on windows builds (affects 2.x only)
1 parent 325453c commit dccbc9b

4 files changed

Lines changed: 20 additions & 8 deletions

File tree

src/_cffi_src/build_constant_time.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55
from __future__ import absolute_import, division, print_function
66

77
import os
8+
import sys
89

9-
from _cffi_src.utils import build_ffi
10+
from _cffi_src.utils import build_ffi, extra_link_args
1011

1112

1213
with open(os.path.join(
@@ -22,5 +23,6 @@
2223
ffi = build_ffi(
2324
module_name="_constant_time",
2425
cdef_source=types,
25-
verify_source=functions
26+
verify_source=functions,
27+
extra_link_args=extra_link_args(sys.platform),
2628
)

src/_cffi_src/build_openssl.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@
77
import os
88
import sys
99

10-
from _cffi_src.utils import (
11-
build_ffi_for_binding
12-
)
10+
from _cffi_src.utils import build_ffi_for_binding, extra_link_args
1311

1412

1513
def _get_openssl_libraries(platform):
@@ -94,5 +92,6 @@ def _get_openssl_windows_libraries(link_type):
9492
],
9593
pre_include=_OSX_PRE_INCLUDE,
9694
post_include=_OSX_POST_INCLUDE,
97-
libraries=_get_openssl_libraries(sys.platform)
95+
libraries=_get_openssl_libraries(sys.platform),
96+
extra_link_args=extra_link_args(sys.platform),
9897
)

src/_cffi_src/build_padding.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55
from __future__ import absolute_import, division, print_function
66

77
import os
8+
import sys
89

9-
from _cffi_src.utils import build_ffi
10+
from _cffi_src.utils import build_ffi, extra_link_args
1011

1112

1213
with open(os.path.join(
@@ -22,5 +23,6 @@
2223
ffi = build_ffi(
2324
module_name="_padding",
2425
cdef_source=types,
25-
verify_source=functions
26+
verify_source=functions,
27+
extra_link_args=extra_link_args(sys.platform),
2628
)

src/_cffi_src/utils.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,12 @@ def build_ffi(module_name, cdef_source, verify_source, libraries=[],
8080
extra_link_args=extra_link_args,
8181
)
8282
return ffi
83+
84+
85+
def extra_link_args(platform):
86+
if platform != "win32":
87+
return []
88+
else:
89+
# Enable NX and ASLR for Windows builds. These are enabled by default
90+
# on Python 3.3+ but not on 2.x.
91+
return ["/NXCOMPAT", "/DYNAMICBASE"]

0 commit comments

Comments
 (0)