]> Cypherpunks.ru repositories - gostls13.git/commitdiff
internal/zstd: allow stream consisting of skippable frames
authorAlexander Yastrebov <yastrebov.alex@gmail.com>
Wed, 27 Sep 2023 13:53:43 +0000 (13:53 +0000)
committerGopher Robot <gobot@golang.org>
Thu, 28 Sep 2023 03:15:09 +0000 (03:15 +0000)
For #62513

Change-Id: I2557aed5ae106ea4684bb599cce740e9da9df780
GitHub-Last-Rev: 2b7ddc6c09a7e77874ed9aefc47fbc445d2579ec
GitHub-Pull-Request: golang/go#63251
Reviewed-on: https://go-review.googlesource.com/c/go/+/531295
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>

src/internal/zstd/zstd.go
src/internal/zstd/zstd_test.go

index 1a7a0a381b02c56fd490245a47abce9c95c578e1..6b1aac0c5f7593db4ad1a85df4e0630adc648a1f 100644 (file)
@@ -169,7 +169,7 @@ retry:
 
        // Read magic number. RFC 3.1.1.
        if _, err := io.ReadFull(r.r, r.scratch[:4]); err != nil {
-               // We require that the stream contain at least one frame.
+               // We require that the stream contains at least one frame.
                if err == io.EOF && !r.readOneFrame {
                        err = io.ErrUnexpectedEOF
                }
@@ -183,6 +183,7 @@ retry:
                        if err := r.skipFrame(); err != nil {
                                return err
                        }
+                       r.readOneFrame = true
                        goto retry
                }
 
index e5c964c307dd2fe998064393bfad30f12adac027..8c7f9403c1dff354c8215677d65555b384e7b81d 100644 (file)
@@ -97,6 +97,17 @@ var tests = []struct {
                "",
                "\x28\xb5\x2f\xfd\x00\x00\x15\x00\x00\x00\x00",
        },
+       {
+               "single skippable frame",
+               "",
+               "\x50\x2a\x4d\x18\x00\x00\x00\x00",
+       },
+       {
+               "two skippable frames",
+               "",
+               "\x50\x2a\x4d\x18\x00\x00\x00\x00" +
+                       "\x50\x2a\x4d\x18\x00\x00\x00\x00",
+       },
 }
 
 func TestSamples(t *testing.T) {