diff options
author | David Robillard <d@drobilla.net> | 2020-08-15 22:06:37 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2020-08-16 13:56:40 +0200 |
commit | 53dbd6f360fcca3bac8d5f9f49a4980d3deef10e (patch) | |
tree | 1092a202246e16071145c28090b837ba459ccb97 | |
parent | 6a9db19eb786b51cf1aea232ae7af72b35ac834a (diff) | |
download | serd-53dbd6f360fcca3bac8d5f9f49a4980d3deef10e.tar.gz serd-53dbd6f360fcca3bac8d5f9f49a4980d3deef10e.tar.bz2 serd-53dbd6f360fcca3bac8d5f9f49a4980d3deef10e.zip |
Fix handling of bad syntax that ends a collection
-rw-r--r-- | src/n3.c | 3 | ||||
-rw-r--r-- | tests/bad/bad-dot-in-collection.ttl | 1 | ||||
-rw-r--r-- | tests/bad/manifest.ttl | 6 |
3 files changed, 9 insertions, 1 deletions
@@ -1193,7 +1193,8 @@ end_collection(SerdReader* reader, ReadContext ctx, Ref n1, Ref n2, SerdStatus s pop_node(reader, n1); *ctx.flags &= ~(unsigned)SERD_LIST_CONT; if (!st) { - eat_byte_safe(reader, ')'); + return (eat_byte_check(reader, ')') == ')') ? SERD_SUCCESS + : SERD_ERR_BAD_SYNTAX; } return st; } diff --git a/tests/bad/bad-dot-in-collection.ttl b/tests/bad/bad-dot-in-collection.ttl new file mode 100644 index 00000000..d2d35bc2 --- /dev/null +++ b/tests/bad/bad-dot-in-collection.ttl @@ -0,0 +1 @@ +[ <http://example.org/p> (1. diff --git a/tests/bad/manifest.ttl b/tests/bad/manifest.ttl index 2c103a84..e8ecb396 100644 --- a/tests/bad/manifest.ttl +++ b/tests/bad/manifest.ttl @@ -30,6 +30,7 @@ <#bad-char-in-uri> <#bad-datatype> <#bad-dot-after-subject> + <#bad-dot-in-collection> <#bad-eof-after-quotes> <#bad-eof-at-string-start> <#bad-eof-in-blank> @@ -193,6 +194,11 @@ mf:name "bad-dot-after-subject" ; mf:action <bad-dot-after-subject.ttl> . +<#bad-dot-in-collection> + rdf:type rdft:TestTurtleNegativeSyntax ; + mf:name "bad-dot-in-collection" ; + mf:action <bad-dot-in-collection.ttl> . + <#bad-eof-after-quotes> rdf:type rdft:TestTurtleNegativeSyntax ; mf:name "bad-eof-after-quotes" ; |