Skip to content
This repository was archived by the owner on Mar 27, 2024. It is now read-only.

Comparing metadata for images that don't exist locally causes panic due to SIGSEGV #250

Closed
bobcatfish opened this issue Jul 25, 2018 · 0 comments · Fixed by #251
Closed
Assignees

Comments

@bobcatfish
Copy link

Observed

When running container-diff using one or more images that do not exist locally and passing --type=metadata, there is a panic :O

container-diff diff cats dogs --type=metadata 
2018/07/25 15:31:31 No matching credentials found for index.docker.io, falling back on anonymous
2018/07/25 15:31:31 No matching credentials found for index.docker.io, falling back on anonymous
WARN[0001] Diff may be inaccurate: open : no such file or directory 
WARN[0001] Diff may be inaccurate: open : no such file or directory 
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x81f612]

goroutine 1 [running]:
github.com/GoogleContainerTools/container-diff/differs.getMetadataList(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
	/go/src/github.com/GoogleContainerTools/container-diff/differs/metadata_diff.go:77 +0x42
github.com/GoogleContainerTools/container-diff/differs.getMetadataDiff(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
	/go/src/github.com/GoogleContainerTools/container-diff/differs/metadata_diff.go:62 +0x8a
github.com/GoogleContainerTools/container-diff/differs.MetadataAnalyzer.Diff(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
	/go/src/github.com/GoogleContainerTools/container-diff/differs/metadata_diff.go:40 +0xb2
github.com/GoogleContainerTools/container-diff/differs.(*MetadataAnalyzer).Diff(0xc7ff18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
	<autogenerated>:1 +0xab
github.com/GoogleContainerTools/container-diff/differs.DiffRequest.GetDiff(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
	/go/src/github.com/GoogleContainerTools/container-diff/differs/differs.go:62 +0x1b8
github.com/GoogleContainerTools/container-diff/cmd.diffImages(0x7ffd24b21fc0, 0x4, 0x7ffd24b21fc5, 0x4, 0xc42028fce0, 0x1, 0x1, 0x0, 0x0)
	/go/src/github.com/GoogleContainerTools/container-diff/cmd/diff.go:110 +0x601
github.com/GoogleContainerTools/container-diff/cmd.glob..func4(0xc57a60, 0xc4202f4330, 0x2, 0x3)
	/go/src/github.com/GoogleContainerTools/container-diff/cmd/diff.go:46 +0x89
github.com/GoogleContainerTools/container-diff/vendor/github.com/spf13/cobra.(*Command).execute(0xc57a60, 0xc4202f42a0, 0x3, 0x3, 0xc57a60, 0xc4202f42a0)
	/go/src/github.com/GoogleContainerTools/container-diff/vendor/github.com/spf13/cobra/command.go:766 +0x2c1
github.com/GoogleContainerTools/container-diff/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0xc57cc0, 0x0, 0x0, 0x0)
	/go/src/github.com/GoogleContainerTools/container-diff/vendor/github.com/spf13/cobra/command.go:852 +0x334
github.com/GoogleContainerTools/container-diff/vendor/github.com/spf13/cobra.(*Command).Execute(0xc57cc0, 0x1f, 0x0)
	/go/src/github.com/GoogleContainerTools/container-diff/vendor/github.com/spf13/cobra/command.go:800 +0x2b
main.main()
	/go/src/github.com/GoogleContainerTools/container-diff/main.go:35 +0x66

Expected

There should be an error message probably, but not a panic/runtime exception, e.g. without --type=metadata the output is:

➜  kaniko git:(local_integration_tests) container-diff diff cats dogs                
2018/07/25 15:33:08 No matching credentials found for index.docker.io, falling back on anonymous
2018/07/25 15:33:08 No matching credentials found for index.docker.io, falling back on anonymous
WARN[0001] Diff may be inaccurate: open : no such file or directory 
WARN[0001] Diff may be inaccurate: open : no such file or directory 
ERRO[0001] Error getting diff with AptAnalyzer: stat : no such file or directory 
ERRO[0001] Could not retrieve diff: Could not perform diff on {<nil>   []} and {<nil>   []} 

Interestingly, the output also doesn't match - but at least doesn't panic! - when using --type=file:

➜  kaniko git:(local_integration_tests) container-diff diff cats dogs --type=file    
2018/07/25 15:33:35 No matching credentials found for index.docker.io, falling back on anonymous
2018/07/25 15:33:35 No matching credentials found for index.docker.io, falling back on anonymous
WARN[0001] Diff may be inaccurate: open : no such file or directory 
WARN[0001] Diff may be inaccurate: open : no such file or directory 

-----File-----

These entries have been added to : None

These entries have been deleted from : None

These entries have been changed between  and : None

Steps to reproduce

Assuming you do not have the images cat and dog locally (or run docker system prune -a so you can use ANY image name XD), run:

container-diff diff cats dogs --type=metadata

This is with version v0.11.0.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants