]> Cypherpunks repositories - gostls13.git/commitdiff
bytes: test for page boundary crosses on sep of Index
authorPaul E. Murphy <murp@ibm.com>
Tue, 19 Oct 2021 16:17:53 +0000 (11:17 -0500)
committerLynn Boger <laboger@linux.vnet.ibm.com>
Tue, 2 Nov 2021 17:31:50 +0000 (17:31 +0000)
Improve TestIndexNearPageBoundary to verify needles
ending on a page boundary don't cause a segfault.

Change-Id: I2edb13db63a71dc9955e266f6b97026ee13bf76e
Reviewed-on: https://go-review.googlesource.com/c/go/+/356889
Reviewed-by: Cherry Mui <cherryyz@google.com>
Trust: Lynn Boger <laboger@linux.vnet.ibm.com>

src/bytes/boundary_test.go

index 8dac7518661711bdccae2dd26eeb4853bfe41da2..f9855fcb0520f3bdf9082f71ddf794c923c3d0b5 100644 (file)
@@ -65,7 +65,11 @@ func TestIndexByteNearPageBoundary(t *testing.T) {
 
 func TestIndexNearPageBoundary(t *testing.T) {
        t.Parallel()
-       var q [64]byte
+       q := dangerousSlice(t)
+       if len(q) > 64 {
+               // Only worry about when we're near the end of a page.
+               q = q[len(q)-64:]
+       }
        b := dangerousSlice(t)
        if len(b) > 256 {
                // Only worry about when we're near the end of a page.
@@ -81,4 +85,16 @@ func TestIndexNearPageBoundary(t *testing.T) {
                }
                q[j-1] = 0
        }
+
+       // Test differing alignments and sizes of q which always end on a page boundary.
+       q[len(q)-1] = 1 // difference is only found on the last byte
+       for j := 0; j < len(q); j++ {
+               for i := range b {
+                       idx := Index(b[i:], q[j:])
+                       if idx != -1 {
+                               t.Fatalf("Index(b[%d:], q[%d:])=%d, want -1\n", i, j, idx)
+                       }
+               }
+       }
+       q[len(q)-1] = 0
 }