Fix unhandled StopIteration/AttributeError crashes and unclosed <a> tags in Advisory Curation views
Los mantenedores suelen responder en 1 día
@Anurag-S1ngh ya está trabajando en esto.
Desde el 24/10/2026.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 72/100
Línea de trabajo
Start with vulnerabilities/views.py and vulnerabilities/templates/advisory_todos.html, following the named AdvisoryMitigationCurationView and curation data accesses. Check the affected curation views for empty summaries, missing advisories, and missing curation_items, then inspect the conditional links for the three listed curation types. Done means those cases render without uncaught exceptions and each generated link has a matching closing tag.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
While reviewing the advisory curation workflow in vulnerabilities/views.py and advisory_todos.html, I identified two bugs:
-
In
vulnerabilities/views.py,AdvisoryMitigationCurationViewextracts summaries and the primary AVID using:context["advisory_summaries"] = { adv.avid: adv.summary for adv in todo.advisories.all() if adv.summary.strip() } context["avid"] = next(iter(context["advisory_summaries"])) context["curation_items"] = [ a.base_purl for a in todo.advisories.first().impacted_packages.filter( fixed_by_packages__isnull=True ) ]- If advisories have empty summaries,
context["advisory_summaries"]is empty andnext(iter({}))raises an uncaughtStopIteration(HTTP 500). - If a
todohas no linked advisories,todo.advisories.first()returnsNone, raisingAttributeError. - Directly accessing
todo.issue_detail["curation_items"]in other curation views also raisesKeyError/TypeErrorwhen the key is missing.
- If advisories have empty summaries,
-
In
vulnerabilities/templates/advisory_todos.html, opening<a>tags are generated forCONFLICTING_SEVERITY_SCORES,CONFLICTING_WEAKNESSES, andMISSING_FIXED_BY_PACKAGE, but the closing</a>tag is only rendered forsupported_curation.split. This leaves anchor tags unclosed and breaks table row formatting.
Steps to Reproduce
- Open
/advisories/todos/and inspect table rows forCONFLICTING_SEVERITY_SCORES,CONFLICTING_WEAKNESSES, orMISSING_FIXED_BY_PACKAGE: observe that opening<a>tags lack matching closing</a>tags in the rendered HTML output. - Create or identify an
AdvisoryToDoitem of typeMISSING_FIXED_BY_PACKAGEwhere linked advisories have empty summary fields (or where no advisories are linked). - Navigate to
/advisories/todos/<todo_id>/mitigation/curate/for that To-Do item. - Observe Django raising an unhandled
StopIterationorAttributeError, resulting in an HTTP 500 response.
Current Behavior
AdvisoryMitigationCurationViewcrashes with an HTTP 500 error instead of handling empty summaries or missing advisories gracefully.advisory_todos.htmlproduces mismatched anchor tags, corrupting the table DOM structure and causing layout issues in the browser.
Expected Behavior
- The curation views should handle empty summaries, missing advisories, and missing curation data gracefully without raising unhandled exceptions, returning a valid page instead of HTTP 500.
- The generated HTML should be valid, with correctly matched opening and closing
<a>tags for all supported curation types.
Additional Context
I would like to work on this issue myself if assigned.
- Lenguaje dominante
- Python
- Estrellas
- 716
- Forks
- 347
- Merge medio
- 12 h 15 min
- PR fusionados (30 d)
- 9
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de aboutcode-org/vulnerablecode
-
OSV parser drops all crates.io affected entries because the ecosystem mapping uses cargoPosiblemente ocupada @Ashutosh-Panda2004 la tomó hace 3 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
aboutcode-org/vulnerablecode#2485 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Docker Compose setup fails on wait-for-it host web:8000 and missing runtime .envPosiblemente ocupada @Anurag-S1ngh la tomó hace 6 días. Abierto
Dificultad 2/5 Medio día Aptitud para principiantes 77/100
aboutcode-org/vulnerablecode#2477 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
OVAL parser corrupts version bounds when the epoch is 10, 20 or the version contains "0:"Posiblemente ocupada @Ashutosh-Panda2004 la tomó hace 4 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
aboutcode-org/vulnerablecode#2474 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
aboutcode-org/vulnerablecode#2426 ·
Los mantenedores suelen responder en 1 día
-
Get NuGet package versions from federated PURL version data in https://github.com/aboutcode-data/Quizá libre de nuevo @Anshi321 la tomó hace 25 días y no hay ningún pull request abierto. Abiertobug data-quality
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
aboutcode-org/vulnerablecode#2418 · 4 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de aboutcode-org/vulnerablecode
Issues similares
-
infrastructure
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
NatLabRockies/H2Integrate#977 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
topoteretes/cognee#6470 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
-
area:docs priority:p2 type:docs wave:9
Dificultad 1/5 Menos de una hora Aptitud para principiantes 84/100
jejjohnson/radtrax#293 ·
Los mantenedores suelen responder en 1 día
-
bug core plugins
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
bunkerity/bunkerweb#4121 · 1 comentario ·
Los mantenedores suelen responder en 1 día