This commit is contained in:
2026-06-24 13:47:14 +02:00
commit fd930e15cb
2377 changed files with 1213931 additions and 0 deletions
+69
View File
@@ -0,0 +1,69 @@
import random
import re
_CORPUS: list[str] = []
def _load_corpus() -> None:
candidate_paths = [
'/fuzzer/additional.sql',
]
for p in candidate_paths:
if not p:
continue
try:
with open(p, 'r', encoding='latin-1') as f:
content = f.read()
except OSError:
continue
chunks = [c.strip() for c in content.split('---') if c.strip()]
chunks = [
c for c in chunks if any(not ln.strip().startswith('--') and ln.strip()
for ln in c.split('\n'))
]
if chunks:
_CORPUS.extend(chunks)
return
_load_corpus()
def mut_splice_append(s: str) -> str:
"""Append a random chunk from the corpus"""
if not _CORPUS:
return s
return s + '\n' + random.choice(_CORPUS)
def mut_splice_prepend(s: str) -> str:
"""Prepend a random chunk from the corpus"""
if not _CORPUS:
return s
return random.choice(_CORPUS) + '\n' + s
def mut_splice_replace(s: str) -> str:
"""Replace s etirely with a random corpus chunk"""
if not _CORPUS:
return s
return random.choice(_CORPUS)
def mut_splice_intersperse(s: str) -> str:
"""Insert a random corpus chunk between two random statements of s"""
if not _CORPUS:
return s
parts = re.split(r'(?<=;)\s*\n', s)
if len(parts) < 2:
return s + '\n' + random.choice(_CORPUS)
i = random.randint(1, len(parts) - 1)
return '\n'.join(parts[:i] + [random.choice(_CORPUS)] + parts[i:])