From b86e904c2d13dfd148b3bcf2ad93748e2b45a886 Mon Sep 17 00:00:00 2001 From: David Gibson Date: Thu, 29 Oct 2020 14:34:52 +1100 Subject: [PATCH] network: Correct error reporting in listInterfaces() There are two problems with error reporting here. 1) If the upcast from resultingInterfaces to *grpc.Interfaces fails, we return (nil, err), but previous code ensures that err is nil at that point, so we return no error. 2) Due to shadowing the err variable, if an error is reported by convertToInterfaces, we'll also return (nil, nil) in that case fixes #3032 Signed-off-by: David Gibson --- virtcontainers/kata_agent.go | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/virtcontainers/kata_agent.go b/virtcontainers/kata_agent.go index a57da3a3e6..49cd9149e3 100644 --- a/virtcontainers/kata_agent.go +++ b/virtcontainers/kata_agent.go @@ -672,13 +672,10 @@ func (k *kataAgent) listInterfaces() ([]*vcTypes.Interface, error) { return nil, err } resultInterfaces, ok := resultingInterfaces.(*grpc.Interfaces) - if ok { - ifaces, err := k.convertToInterfaces(resultInterfaces.Interfaces) - if err == nil { - return ifaces, nil - } + if !ok { + return nil, fmt.Errorf("Unexpected type %T for interfaces", resultingInterfaces) } - return nil, err + return k.convertToInterfaces(resultInterfaces.Interfaces) } func (k *kataAgent) listRoutes() ([]*vcTypes.Route, error) {