mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
106 lines
2.5 KiB
Python
Executable file
106 lines
2.5 KiB
Python
Executable file
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import os
|
|
import sys
|
|
import subprocess
|
|
import datetime
|
|
import argparse
|
|
import commands
|
|
import re
|
|
|
|
git_repo_path = os.path.abspath(subprocess.check_output(['git', 'rev-parse', '--show-toplevel']).strip())
|
|
|
|
string_h_functions = [
|
|
"memchr",
|
|
"memcmp",
|
|
"memcpy",
|
|
"memmove",
|
|
"memset",
|
|
"strcat",
|
|
"strchr",
|
|
"strcmp",
|
|
"strcoll",
|
|
"strcpy",
|
|
"strcspn",
|
|
"strerror",
|
|
"strlen",
|
|
"strncat",
|
|
"strncmp",
|
|
"strncpy",
|
|
"strpbrk",
|
|
"strrchr",
|
|
"strspn",
|
|
"strstr",
|
|
"strtok",
|
|
"strxfrm",
|
|
"strtok_r",
|
|
"strerror_r",
|
|
"strdup",
|
|
"memccpy",
|
|
"stpcpy",
|
|
"stpncpy",
|
|
"strndup",
|
|
"strnlen",
|
|
"strsignal",
|
|
"memset_s",
|
|
"memmem",
|
|
"memset_pattern4",
|
|
"memset_pattern8",
|
|
"memset_pattern16",
|
|
"strcasestr",
|
|
"strnstr",
|
|
"strlcat",
|
|
"strlcpy",
|
|
"strmode",
|
|
"strsep",
|
|
"swab",
|
|
"timingsafe_bcmp",
|
|
]
|
|
|
|
|
|
def process_if_appropriate(file_path):
|
|
file_ext = os.path.splitext(file_path)[1]
|
|
if file_ext.lower() not in ('.c', '.cpp', '.m', '.mm', '.h', '.swift'):
|
|
return
|
|
# print 'file_path', file_path, 'file_ext', file_ext
|
|
|
|
with open(file_path, 'rt') as f:
|
|
text = f.read()
|
|
|
|
has_match = False
|
|
for string_h_function in string_h_functions:
|
|
regex = re.compile(string_h_function + r'\s*\(')
|
|
assert(regex)
|
|
matches = []
|
|
for match in regex.finditer(text):
|
|
matches.append(match)
|
|
# matches = regex.findall(text)
|
|
if not matches:
|
|
continue
|
|
if not has_match:
|
|
has_match = True
|
|
print 'file_path', file_path, 'file_ext', file_ext
|
|
for match in matches:
|
|
# print 'match', match, type(match)
|
|
print '\t', 'match:', match.group(0)
|
|
if has_match:
|
|
print
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
parser = argparse.ArgumentParser(description='Precommit script.')
|
|
parser.add_argument('--path', help='used to specify a path to process.')
|
|
args = parser.parse_args()
|
|
|
|
|
|
if args.path:
|
|
dir_path = args.path
|
|
else:
|
|
dir_path = git_repo_path
|
|
|
|
for rootdir, dirnames, filenames in os.walk(dir_path):
|
|
for filename in filenames:
|
|
file_path = os.path.abspath(os.path.join(rootdir, filename))
|
|
process_if_appropriate(file_path)
|