Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

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

Offen
#2,478 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

@Anurag-S1ngh arbeitet bereits daran.

Seit 24.10.2026.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
72/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
django, python
Bereich
backend, frontend

Rechercherichtung

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.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

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.

Vorherrschende Sprache
Python
Sterne
716
Forks
347
Ø Merge
13 Std. 47 Min.
Gemergte PRs (30 T.)
8

Entwicklungsumgebung

  • Enthält ein Dockerfile oder eine Docker-Compose-Datei
  • Keine Pull-Request-Vorlage
  • Kein Beitragsleitfaden

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus aboutcode-org/vulnerablecode

Alle Issues in aboutcode-org/vulnerablecode

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.