aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2020-06-21 19:57:10 +0200
committerDavid Robillard <d@drobilla.net>2020-10-27 13:13:59 +0100
commit834ca36d4cbbfd63789f7894ab2d5d370347d76f (patch)
tree36004ae76c4330f7d26408052efc8ef17daa7767
parentb244d0ec5895ff15d52f12704e5f336ad37b4473 (diff)
downloadserd-834ca36d4cbbfd63789f7894ab2d5d370347d76f.tar.gz
serd-834ca36d4cbbfd63789f7894ab2d5d370347d76f.tar.bz2
serd-834ca36d4cbbfd63789f7894ab2d5d370347d76f.zip
Fix crash when attempting to read before starting
-rw-r--r--src/byte_source.c4
-rw-r--r--tests/serd_test.c3
2 files changed, 7 insertions, 0 deletions
diff --git a/src/byte_source.c b/src/byte_source.c
index 0b233bc9..90af28ee 100644
--- a/src/byte_source.c
+++ b/src/byte_source.c
@@ -88,6 +88,10 @@ serd_byte_source_open_source(SerdByteSource* source,
SerdStatus
serd_byte_source_prepare(SerdByteSource* source)
{
+ if (source->page_size == 0) {
+ return SERD_FAILURE;
+ }
+
source->prepared = true;
if (source->from_stream) {
if (source->page_size > 1) {
diff --git a/tests/serd_test.c b/tests/serd_test.c
index 16209c27..82126c0c 100644
--- a/tests/serd_test.c
+++ b/tests/serd_test.c
@@ -679,6 +679,9 @@ test_reader(const char* path)
SerdReader* reader = serd_reader_new(world, SERD_TURTLE, 0, sink, 4096);
assert(reader);
+ assert(serd_reader_read_document(reader) == SERD_FAILURE);
+ assert(serd_reader_read_chunk(reader) == SERD_FAILURE);
+
serd_reader_add_blank_prefix(reader, "tmp");
serd_reader_add_blank_prefix(reader, NULL);