INNER CODE UNIT · Python

file_hash

KSwordDEV/KSword · GhidraRuntimePlugin/package.py:25

def file_hash(path: Path) -> str:
    digest = hashlib.sha256()
    with path.open('rb') as stream:
        for block in iter(lambda: stream.read(1024 * 1024), b''):
            digest.update(block)
    return digest.hexdigest()


def safe_member(name: str, expected_root: str) -> PurePosixPath:
    if '\\' in name or '\x00' in name:
        raise ValueError('unsafe ZIP separator or NUL')
    parts = name.rstrip('/').split('/')
    if not parts or parts[0] != expected_root:
        raise ValueError('ZIP root does not match pinned upstream root')
    for part in parts:
        if not part or part in ('.', '..') or part.endswith((' ', '.')):
            raise ValueError('unsafe ZIP path component')
        if any(character in part for character in ':<>"|?*'):

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…