T09 · Insecure Skill Coding Practices
- Location
SKILL.md:46- Finding
Unbounded PDF Processing Can Cause Resource Exhaustion
- Content
View full analysis
dict: """提取PDF文本内容""" result = { "operation": "extract_text", "file": os.path.basename(path), "status": "pending", "timestamp": datetime.now().isoformat() } try: import PyPDF2 with open(path, "rb") as f: reader = PyPDF2.PdfReader(f) if password: reader.decrypt(password) pages = [] for i, page in enumerate(reader.pages): text = page.extract_text() pages.append({"page": i + 1, "chars": len(text), "preview": text[:100]}) result.update({ "pages": len(pages), "total_chars": sum(p["chars"] for p in pages), "pages_detail": pages, "metadata": { "title": reader.metadata.title if reader.metadata else None, "author": reader.metadata.author if reader.metadata else None, "producer": reader.metadata.producer if reader.metadata else None, }, "status": "success" }) ``` ```python def merge(self, paths: List[str], output: str) -> dict: """合并多个PDF""" result = { "operation": "merge", "files": [os.path.basename(p) for p in paths], "output": output, "status": "pending" } try: import PyPDF2 merger = PyPDF2.PdfMerger() for path in paths: merger.append(path) merger.write(output) merger.close() result["status"] = "success" result["total_pages"] = sum( len(PyPDF2.PdfReader(p).pages) for p in paths ) ``` ```python def split(self, pat ...[truncated 2922 chars]- Remediation
View remediation
