mkctr panics when a path passed to --files does not exist

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

Dieses Issue hat noch niemand übernommen.

  • #36 von @RaphaelFakhri — ohne Merge geschlossen

Bewertung

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

Rechercherichtung

Beginne am Einstiegspunkt layerFromFiles und untersuche dessen filepath.WalkDir-Callback, einschließlich der Behandlung von Fehlern aus writeDir. Reproduziere das Problem mit dem bereitgestellten Beispiel mkctr --files=./missing:/app/missing. Als erledigt gilt die Aufgabe, wenn der Befehl einen Fehler meldet, der den fehlenden Pfad nennt, mit einem Status ungleich null beendet wird und keinen Panic auslöst.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Running mkctr with a --files source that does not exist crashes with a nil pointer dereference instead of reporting an error.

For example, mkctr --files=./missing:/app/missing ... reaches layerFromFiles, which calls filepath.WalkDir on the source. When the source cannot be read, WalkDir calls the callback once with a nil fs.DirEntry and a non-nil error. The callback ignores the error and calls d.IsDir(), which panics:

panic: runtime error: invalid memory address or nil pointer dereference

The expected behavior is an error that names the missing path, and a non-zero exit status.

The callback also drops the error returned by writeDir for the parent directory, so a failing tar write is not reported at that point.

Vorherrschende Sprache
Go
Sterne
101
Forks
10
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

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 tailscale/mkctr

Alle Issues in tailscale/mkctr

Ähnliche Issues

Weitere Issues zu Go

Neue Issues direkt in Ihr Postfach

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