From f91c3d06064cacb684348bc3b47432204f7f2b35 Mon Sep 17 00:00:00 2001 From: Alan Parra Date: Mon, 19 Jun 2023 15:04:20 -0300 Subject: [PATCH] fix: Decode JSON directly from stream in `waitForCommandOutput` --- lib/web/command_test.go | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/lib/web/command_test.go b/lib/web/command_test.go index 7a79ea84de0f8..c7794a0964aca 100644 --- a/lib/web/command_test.go +++ b/lib/web/command_test.go @@ -200,29 +200,21 @@ func waitForCommandOutput(stream io.Reader, substr string) error { default: } - out := make([]byte, 100) - n, err := stream.Read(out) - if err != nil { - return trace.Wrap(err) - } - var env Envelope - err = json.Unmarshal(out[:n], &env) - if err != nil { - return trace.Wrap(err) + dec := json.NewDecoder(stream) + if err := dec.Decode(&env); err != nil { + return trace.Wrap(err, "decoding envelope JSON from stream") } d, err := base64.StdEncoding.DecodeString(env.Payload) if err != nil { - return trace.Wrap(err) + return trace.Wrap(err, "decoding b64 payload") } + data := removeSpace(string(d)) - if n > 0 && strings.Contains(data, substr) { + if strings.Contains(data, substr) { return nil } - if err != nil { - return trace.Wrap(err) - } } }