Skip to content

Commit

Permalink
scripts: add MACHO lazy bindings check to security-check.py
Browse files Browse the repository at this point in the history
  • Loading branch information
fanquake authored and janus committed Nov 4, 2020
1 parent 89301ec commit 13eefc0
Showing 1 changed file with 19 additions and 1 deletion.
20 changes: 19 additions & 1 deletion contrib/devtools/security-check.py
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,23 @@ def check_MACHO_NX(executable) -> bool:
return False
return True

def check_MACHO_LAZY_BINDINGS(executable) -> bool:
'''
Check for no lazy bindings.
We don't use or check for MH_BINDATLOAD. See #18295.
'''
p = subprocess.Popen([OTOOL_CMD, '-l', executable], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, universal_newlines=True)
(stdout, stderr) = p.communicate()
if p.returncode:
raise IOError('Error opening file')

for line in stdout.splitlines():
tokens = line.split()
if 'lazy_bind_off' in tokens or 'lazy_bind_size' in tokens:
if tokens[1] != '0':
return False
return True

CHECKS = {
'ELF': [
('PIE', check_ELF_PIE),
Expand All @@ -221,7 +238,8 @@ def check_MACHO_NX(executable) -> bool:
'MACHO': [
('PIE', check_MACHO_PIE),
('NOUNDEFS', check_MACHO_NOUNDEFS),
('NX', check_MACHO_NX)
('NX', check_MACHO_NX),
('LAZY_BINDINGS', check_MACHO_LAZY_BINDINGS)
]
}

Expand Down

0 comments on commit 13eefc0

Please sign in to comment.