Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Fix unhandled StopIteration/AttributeError crashes and unclosed <a> tags in Advisory Curation views

Abierto
#2,478 1 comentario 0 reacciones 0 asignados Ver en GitHub

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
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
django, python
Área
backend, frontend

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:

  1. In vulnerabilities/views.py, AdvisoryMitigationCurationView extracts 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 and next(iter({})) raises an uncaught StopIteration (HTTP 500).
    • If a todo has no linked advisories, todo.advisories.first() returns None, raising AttributeError.
    • Directly accessing todo.issue_detail["curation_items"] in other curation views also raises KeyError/TypeError when the key is missing.
  2. In vulnerabilities/templates/advisory_todos.html, opening <a> tags are generated for CONFLICTING_SEVERITY_SCORES, CONFLICTING_WEAKNESSES, and MISSING_FIXED_BY_PACKAGE, but the closing </a> tag is only rendered for supported_curation.split. This leaves anchor tags unclosed and breaks table row formatting.

Steps to Reproduce
  1. Open /advisories/todos/ and inspect table rows for CONFLICTING_SEVERITY_SCORES, CONFLICTING_WEAKNESSES, or MISSING_FIXED_BY_PACKAGE: observe that opening <a> tags lack matching closing </a> tags in the rendered HTML output.
  2. Create or identify an AdvisoryToDo item of type MISSING_FIXED_BY_PACKAGE where linked advisories have empty summary fields (or where no advisories are linked).
  3. Navigate to /advisories/todos/<todo_id>/mitigation/curate/ for that To-Do item.
  4. Observe Django raising an unhandled StopIteration or AttributeError, resulting in an HTTP 500 response.
Current Behavior
  • AdvisoryMitigationCurationView crashes with an HTTP 500 error instead of handling empty summaries or missing advisories gracefully.
  • advisory_todos.html produces 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

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de aboutcode-org/vulnerablecode

Todos los issues de aboutcode-org/vulnerablecode

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.