aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrent Baude <bbaude@redhat.com>2020-08-25 14:46:35 -0500
committerBrent Baude <bbaude@redhat.com>2020-08-28 08:54:22 -0500
commita6f85861df406ae7d44c25c1cbeecc1d267b9f43 (patch)
tree19cac7f4e3215a50b5885feb6074926c92cded97
parente3edb7ba9dd8d079b09d2effda365a1b51d303e7 (diff)
downloadpodman-a6f85861df406ae7d44c25c1cbeecc1d267b9f43.tar.gz
podman-a6f85861df406ae7d44c25c1cbeecc1d267b9f43.tar.bz2
podman-a6f85861df406ae7d44c25c1cbeecc1d267b9f43.zip
fix panic when checking len on nil object
issue #7444 describes a problem where an image does not have a manifest file and cannot be processed by our library correctly. the origin of the panic is because we are checking the len of a nil object's attribute. this is a temporary fix to protect from the panic in the future. the origin of the problem is more interesting and requires more work when the code author returns from pto. Signed-off-by: Brent Baude <bbaude@redhat.com>
-rw-r--r--libpod/image/image.go7
1 files changed, 6 insertions, 1 deletions
diff --git a/libpod/image/image.go b/libpod/image/image.go
index 6106084d5..dee2ce0ee 100644
--- a/libpod/image/image.go
+++ b/libpod/image/image.go
@@ -1246,7 +1246,12 @@ func areParentAndChild(parent, child *imgspecv1.Image) bool {
// the child and candidate parent should share all of the
// candidate parent's diff IDs, which together would have
// controlled which layers were used
- if len(parent.RootFS.DiffIDs) > len(child.RootFS.DiffIDs) {
+
+ // issue #7444 describes a panic where the length of child.RootFS.DiffIDs
+ // is checked but child is nil. Adding a simple band-aid approach to prevent
+ // the problem until the origin of the problem can be worked out in the issue
+ // itself.
+ if child == nil || len(parent.RootFS.DiffIDs) > len(child.RootFS.DiffIDs) {
return false
}
childUsesCandidateDiffs := true