Skip to content

Commit fc17d89

Browse files
Update tools/MT-Unsafe.py to find all the unsafe functions listed in
man elf_flagelf Also update addons/threadsafety.py to include these functions. This man page lists several unsafe functions on one line.
1 parent 22b3464 commit fc17d89

2 files changed

Lines changed: 22 additions & 8 deletions

File tree

addons/threadsafety.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,12 @@
112112
'drand48',
113113
'ecvt',
114114
'elf_fill',
115+
'elf_flagdata',
116+
'elf_flagehdr',
115117
'elf_flagelf',
118+
'elf_flagphdr',
119+
'elf_flagscn',
120+
'elf_flagshdr',
116121
'encrypt',
117122
'endfsent',
118123
'endgrent',

tools/MT-Unsafe.py

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -85,25 +85,34 @@ def man_search(manpage):
8585
apis = set()
8686
for lineread in MANPAGE:
8787
lineread = str(lineread)
88-
dprint(2, '%s' % (lineread))
88+
dprint(1, '%s' % (lineread))
8989
if 'MT-Safe' in lineread:
9090
vprint(1, 'clearing MT-Safe %s', lineread)
9191
apis.clear()
9292

93-
res = re.search(r'\.BR\s+(\w+)\s', lineread)
94-
# vprint(1, '%s for %s' % (res, lineread))
95-
if res:
96-
apis.add(res.group(1))
97-
dprint(1, 'found api %s in %s' % (res.group(1), lineread))
98-
continue
93+
if '.BR' in lineread:
94+
function_names = re.sub(r'^.*\.BR ', '', lineread)
95+
dprint(1, 'function_names 1:\n\t%s\n' % (function_names))
96+
function_names = re.sub(r'\\\\~', '', function_names)
97+
dprint(1, 'function_names 1a:\n\t%s\n' % (function_names))
98+
function_names = function_names.replace(r'\n', '')
99+
dprint(1, 'function_names 2:\n\t%s\n' % (function_names))
100+
function_names = re.sub(r"[~() ']+", '', function_names)
101+
dprint(1, 'function_names 3:\n\t%s\n' % (function_names))
102+
function_names = re.split(',', function_names)
103+
dprint(1, 'function_names split:\n\t%s\n' % (function_names))
104+
105+
for fn in function_names:
106+
if fn:
107+
apis.add(fn)
99108

100109
if 'MT-Unsafe' in lineread:
101110
resUnsafe = re.search("MT-Unsafe\\s+(.*)(\\n\'|$)", lineread)
102111

103112
if resUnsafe:
104113
values = resUnsafe.group(1)
105114
dprint(1, 'a %s' % values)
106-
values = re.sub(r'\\n\'$', '', values)
115+
values = re.sub(r"\\n\'$", '', values)
107116
#
108117
values = values.split(' ')
109118
dprint(1, 'values %s' % list(values))

0 commit comments

Comments
 (0)