From fab4221800ff8a67849d6e334e1b96eba2fc95c2 Mon Sep 17 00:00:00 2001 From: Markus Vahlenkamp Date: Wed, 15 Nov 2023 21:45:34 +0100 Subject: [PATCH] Fixing nil pointer deref on Scrapli send config errors (#1723) --- nodes/vr_sros/vr-sros.go | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/nodes/vr_sros/vr-sros.go b/nodes/vr_sros/vr-sros.go index a855bb6a2..b18452928 100644 --- a/nodes/vr_sros/vr-sros.go +++ b/nodes/vr_sros/vr-sros.go @@ -280,19 +280,16 @@ func (s *vrSROS) applyPartialConfig(ctx context.Context, addr, platformName, use // converting byte slice to newline delimited string slice cfgs := strings.Split(string(configContent), "\n") - mr, err := d.SendConfigs(cfgs) - if err != nil || mr.Failed != nil { - return fmt.Errorf("failed to apply config; error: %+v %+v", err, mr.Failed) - } // condfig snippets should not have commit command, so we need to commit manually - r, err := d.SendConfig("commit") - if err != nil || r.Failed != nil { - return fmt.Errorf("failed to commit config; error: %+v %+v", err, mr.Failed) - } + cfgs = append(cfgs, "commit", "/admin save") - r, err = d.SendCommand("/admin save") - if err != nil || r.Failed != nil { - return fmt.Errorf("failed to persist config; error: %+v %+v", err, mr.Failed) + mr, err := d.SendConfigs(cfgs) + if err != nil || (mr != nil && mr.Failed != nil) { + if mr != nil { + return fmt.Errorf("failed to apply config; error: %+v %+v", err, mr.Failed) + } else { + return fmt.Errorf("failed to apply config; error: %+v", err) + } } return nil