Skip to content

Commit f1c7716

Browse files
authored
Merge pull request #127 from kvii/pr_nil_bytes
Add check for passing empty bytes
2 parents a899437 + a144b37 commit f1c7716

File tree

4 files changed

+31
-0
lines changed

4 files changed

+31
-0
lines changed

fitz.go

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ var (
1212
ErrNoSuchFile = errors.New("fitz: no such file")
1313
ErrCreateContext = errors.New("fitz: cannot create context")
1414
ErrOpenDocument = errors.New("fitz: cannot open document")
15+
ErrEmptyBytes = errors.New("fitz: cannot send empty bytes")
1516
ErrOpenMemory = errors.New("fitz: cannot open memory")
1617
ErrLoadPage = errors.New("fitz: cannot load page")
1718
ErrRunPageContents = errors.New("fitz: cannot run page contents")

fitz_cgo.go

+3
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,9 @@ func New(filename string) (f *Document, err error) {
125125

126126
// NewFromMemory returns new fitz document from byte slice.
127127
func NewFromMemory(b []byte) (f *Document, err error) {
128+
if len(b) == 0 {
129+
return nil, ErrEmptyBytes
130+
}
128131
f = &Document{}
129132

130133
f.ctx = (*C.struct_fz_context)(unsafe.Pointer(C.fz_new_context_imp(nil, nil, C.store(MaxStore), C.fz_version)))

fitz_nocgo.go

+3
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ func New(filename string) (f *Document, err error) {
6464

6565
// NewFromMemory returns new fitz document from byte slice.
6666
func NewFromMemory(b []byte) (f *Document, err error) {
67+
if len(b) = 0 {
68+
return nil, ErrEmptyBytes
69+
}
6770
f = &Document{}
6871

6972
f.ctx = fzNewContextImp(nil, nil, uint64(MaxStore), FzVersion)

fitz_test.go

+24
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"fmt"
66
"image"
77
"image/jpeg"
8+
"io"
89
"os"
910
"path/filepath"
1011
"testing"
@@ -293,3 +294,26 @@ func TestBound(t *testing.T) {
293294
t.Error(fmt.Errorf("ErrPageMissing not returned got %v", err))
294295
}
295296
}
297+
298+
func TestEmptyBytes(t *testing.T) {
299+
var err error
300+
// empty reader
301+
_, err = fitz.NewFromReader(emptyReader{})
302+
if !errors.Is(err, fitz.ErrEmptyBytes) {
303+
t.Errorf("Expected ErrEmptyBytes, got %v", err)
304+
}
305+
// nil slice
306+
_, err = fitz.NewFromMemory(nil)
307+
if !errors.Is(err, fitz.ErrEmptyBytes) {
308+
t.Errorf("Expected ErrEmptyBytes, got %v", err)
309+
}
310+
// empty slice
311+
_, err = fitz.NewFromMemory(make([]byte, 0))
312+
if !errors.Is(err, fitz.ErrEmptyBytes) {
313+
t.Errorf("Expected ErrEmptyBytes, got %v", err)
314+
}
315+
}
316+
317+
type emptyReader struct{}
318+
319+
func (emptyReader) Read([]byte) (int, error) { return 0, io.EOF }

0 commit comments

Comments
 (0)