@@ -6,6 +6,7 @@ package billy
66
77import (
88 "bytes"
9+ "errors"
910 "os"
1011 "testing"
1112)
@@ -132,3 +133,31 @@ func TestReadonly(t *testing.T) {
132133 t .Fatalf ("want error trying to write files in readonly, got none" )
133134 }
134135}
136+
137+ func TestOutOfBounds (t * testing.T ) {
138+ f , err := newCappedFile ("multifile-ro-test" , 10 , 50 , false )
139+ if err != nil {
140+ t .Fatal (err )
141+ }
142+ t .Cleanup (func () {
143+ f .Close ()
144+ wipe (t , f )
145+ })
146+ // Read starting OOB
147+ if _ , err := f .ReadAt (make ([]byte , 10 ), 501 ); ! errors .Is (err , ErrBadIndex ) {
148+ t .Fatalf ("want %v have %v" , ErrBadIndex , err )
149+ }
150+ // Read reaching into OOB
151+ if _ , err := f .ReadAt (make ([]byte , 10 ), 495 ); ! errors .Is (err , ErrBadIndex ) {
152+ t .Fatalf ("want %v have %v" , ErrBadIndex , err )
153+ }
154+ // Write starting OOB
155+ if _ , err := f .WriteAt (make ([]byte , 10 ), 501 ); ! errors .Is (err , ErrBadIndex ) {
156+ t .Fatalf ("want %v have %v" , ErrBadIndex , err )
157+ }
158+ // Write reaching into OOB
159+ if _ , err := f .WriteAt (make ([]byte , 10 ), 495 ); ! errors .Is (err , ErrBadIndex ) {
160+ t .Fatalf ("want %v have %v" , ErrBadIndex , err )
161+ }
162+
163+ }
0 commit comments