microcks / microcks/microcks-cli

Nil Pointer Dereference in Watcher Executor -> dereference panic.

Offen Anfängerfreundlich
#475 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

stale
Vorherrschende Sprache
Go
Sterne
52
Forks
68
Ø Merge
6 Std. 54 Min.
Gemergte PRs (30 T.)
10

Beschreibung

Describe the bug
Diagram
sequenceDiagram
    participant Watcher
    participant Executor
    participant Client as connectors.NewClient
    Watcher->>Executor: TriggerImport(entry)
    Executor->>Client: NewClient(*globalClientOpts)
    Note over Client: Fails (e.g. invalid context)
    Client-->>Executor: nil, err
    Note over Executor: Logs error, but DOES NOT return!
    Executor->>Executor: mc.UploadArtifact(entry.FilePath, entry.MainArtifact)
    Note over Executor: Panic: nil pointer dereference (mc is nil)
Description

In pkg/watcher/executor.go, the TriggerImport function instantiates the Microcks client using connectors.NewClient. If this fails (e.g., due to an invalid context or server address), it prints an error message but continues execution instead of returning early. It subsequently calls mc.UploadArtifact(), causing a nil pointer dereference panic.

Impact

The watcher daemon crashes with a stack trace instead of handling the connection/context resolution failure gracefully.

Steps to Reproduce
  1. Configure a watch entry with an invalid or expired context.
  2. Modify the watched file to trigger an fsnotify event.
  3. The watch manager invokes TriggerImport, which prints [ERROR] Cannot connect to Microcks client... and immediately panics with a segmentation fault.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Lies pkg/watcher/executor.go und beginne bei TriggerImport, indem du dem Fehlerpfad von connectors.NewClient folgst, bevor mc.UploadArtifact aufgerufen wird. Reproduziere das Problem mit einem ungültigen oder abgelaufenen Context und einer Änderung an einer überwachten Datei und verifiziere anschließend, dass der Watcher den Client-Fehler ohne einen nil-pointer panic behandelt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
go
Bereich
cli
Issue-Typ
Bug
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Aktiv
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
84/100

Neue Issues direkt in Ihr Postfach

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