T09 · Insecure Skill Coding Practices
- Location
src/pypi_package_changelog_generator/archive_diff.py:88- Finding
Unbounded Source Archive Processing Enables Resource Exhaustion
- Content
View full analysis
bytes: try: response = self._client.get(url) except HttpTransportError as exc: raise PypiClientError( code="pypi_download_failed", message=f"Failed to download source archive from {url}.", retryable=True, ) from exc if response.status_code >= 400: raise PypiClientError( code="pypi_download_failed", message=f"Failed to download source archive from {url}.", retryable=True, ) return response.content ``` `src/pypi_package_changelog_generator/archive_diff.py:88-105`: ```python def extract_archive(content: bytes) -> ExtractedArchive: temp_dir = tempfile.TemporaryDirectory(prefix="pypi-changelog-") root = Path(temp_dir.name) root_resolved = root.resolve() try: with tarfile.open(fileobj=BytesIO(content), mode="r:gz") as archive: members = archive.getmembers() for member in members: if not _is_safe_tar_member(root_resolved, member): raise ArchiveDiffError( code="uns ...[truncated 3639 chars]- Remediation
View remediation
