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

Abierto Apto para principiantes
#34 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

  • #36 de @RaphaelFakhri — cerrado sin fusionar

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
76/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
go
Área
cli

Línea de trabajo

Comienza en el punto de entrada layerFromFiles e inspecciona su callback de filepath.WalkDir, incluido cómo se manejan los errores de writeDir. Reproduce el problema con el ejemplo proporcionado mkctr --files=./missing:/app/missing. Se considera terminado cuando el comando informa de un error que nombra la ruta que falta, termina con un estado distinto de cero y no entra en panic.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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.

Lenguaje dominante
Go
Estrellas
101
Forks
10
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

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

Todos los issues de tailscale/mkctr

Issues similares

Más issues de Go

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.