summaryrefslogtreecommitdiff
path: root/libpod/container_internal_linux.go
diff options
context:
space:
mode:
authorPaul Holzinger <paul.holzinger@web.de>2020-10-15 11:38:48 +0200
committerPaul Holzinger <paul.holzinger@web.de>2020-10-15 11:50:29 +0200
commit2e65497deaf63cbb7a9521b49ac69bbe223970e4 (patch)
tree32ea05fcc3ee68214892a267269f4fe8b43d909e /libpod/container_internal_linux.go
parent41eda417fe4565cab26d704daedca0d285327f31 (diff)
downloadpodman-2e65497deaf63cbb7a9521b49ac69bbe223970e4.tar.gz
podman-2e65497deaf63cbb7a9521b49ac69bbe223970e4.tar.bz2
podman-2e65497deaf63cbb7a9521b49ac69bbe223970e4.zip
Fix possible panic in libpod container restore
We need to do a length check before we can access the networkStatus slice by index to prevent a runtime panic. Fixes #8026 Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
Diffstat (limited to 'libpod/container_internal_linux.go')
-rw-r--r--libpod/container_internal_linux.go14
1 files changed, 8 insertions, 6 deletions
diff --git a/libpod/container_internal_linux.go b/libpod/container_internal_linux.go
index 105623810..eff390e46 100644
--- a/libpod/container_internal_linux.go
+++ b/libpod/container_internal_linux.go
@@ -1024,13 +1024,15 @@ func (c *Container) restore(ctx context.Context, options ContainerCheckpointOpti
if !options.IgnoreStaticMAC {
// Take the first device with a defined sandbox.
var MAC net.HardwareAddr
- for _, n := range networkStatus[0].Interfaces {
- if n.Sandbox != "" {
- MAC, err = net.ParseMAC(n.Mac)
- if err != nil {
- return errors.Wrapf(err, "failed to parse MAC %v", n.Mac)
+ if len(networkStatus) > 0 {
+ for _, n := range networkStatus[0].Interfaces {
+ if n.Sandbox != "" {
+ MAC, err = net.ParseMAC(n.Mac)
+ if err != nil {
+ return errors.Wrapf(err, "failed to parse MAC %v", n.Mac)
+ }
+ break
}
- break
}
}
if MAC != nil {