Skip to content

mkctr: return an error instead of panicking on a missing --files source - #36

Closed
RaphaelFakhri wants to merge 1 commit into
tailscale:mainfrom
RaphaelFakhri:fix-layer-missing-source
Closed

RaphaelFakhri wants to merge 1 commit into
tailscale:mainfrom
RaphaelFakhri:fix-layer-missing-source

Conversation

@RaphaelFakhri

Copy link
Copy Markdown

Return an error instead of panicking when a --files source path does not exist.

The filepath.WalkDir callback in layerFromFiles ignored its err argument. For a missing source, WalkDir calls the callback with a nil fs.DirEntry, and d.IsDir() then panicked with a nil pointer dereference.

This change returns the walk error, which names the missing path, and stops discarding the error from writing the parent directory header.

The new tests cover the missing-source case and check that a directory of files is still copied into the layer.

Test command: go test . -run LayerFromFiles -v

Fixes #34

The filepath.WalkDir callback in layerFromFiles ignored its err argument.
When a source path passed to --files did not exist, WalkDir invoked the
callback with a nil DirEntry and the callback dereferenced it, crashing
with a nil pointer panic. Return the walk error, and also stop ignoring
the error from writing directory headers.

Fixes #34

Signed-off-by: Raphael Fakhri <153192858+RaphaelFakhri@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

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

1 participant