From 711587492c7dd2c150944b7bb68007d5660252c7 Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Wed, 9 Apr 2014 09:49:47 +0200 Subject: [PATCH] Add limit tests for ReadBytesMaxInto --- xdr/xdr_test.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/xdr/xdr_test.go b/xdr/xdr_test.go index 154038617..480042706 100644 --- a/xdr/xdr_test.go +++ b/xdr/xdr_test.go @@ -55,3 +55,28 @@ func TestBytesGiven(t *testing.T) { t.Error(err) } } + +func TestReadMaxInto(t *testing.T) { + var max = 64 + for tot := 32; tot < 128; tot++ { + for diff := -32; diff <= 32; diff++ { + var b = new(bytes.Buffer) + var r = NewReader(b) + var w = NewWriter(b) + + var toWrite = make([]byte, tot) + w.WriteBytes(toWrite) + + var buf = make([]byte, tot+diff) + var bs = r.ReadBytesMaxInto(max, buf) + + if tot <= max { + if read := len(bs); read != tot { + t.Errorf("Incorrect read bytes, wrote=%d, buf=%d, max=%d, read=%d", tot, tot+diff, max, read) + } + } else if r.err != ErrElementSizeExceeded { + t.Errorf("Unexpected non-ErrElementSizeExceeded error for wrote=%d, max=%d: %v", tot, max, r.err) + } + } + } +}