From 33442629822d73f289c9e0ef8736f65442de4d31 Mon Sep 17 00:00:00 2001
From: David Robillard <d@drobilla.net>
Date: Sat, 23 Sep 2017 13:53:02 +0200
Subject: Report errors for directives or abbreviations in NTriples or NQuads

---
 src/reader.c | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

(limited to 'src')

diff --git a/src/reader.c b/src/reader.c
index 90f2d3dd..a8339a89 100644
--- a/src/reader.c
+++ b/src/reader.c
@@ -1293,6 +1293,11 @@ static bool
 read_objectList(SerdReader* reader, ReadContext ctx, bool* ate_dot)
 {
 	TRY_RET(read_object(reader, &ctx, true, ate_dot));
+	if (!fancy_syntax(reader) && peek_delim(reader, ',')) {
+		return r_err(reader, SERD_ERR_BAD_SYNTAX,
+		             "syntax does not support abbreviation\n");
+	}
+
 	while (!*ate_dot && eat_delim(reader, ',')) {
 		TRY_RET(read_object(reader, &ctx, true, ate_dot));
 	}
@@ -1602,6 +1607,10 @@ read_statement(SerdReader* reader)
 		reader->eof = true;
 		return reader->status <= SERD_FAILURE;
 	case '@':
+		if (!fancy_syntax(reader)) {
+			return r_err(reader, SERD_ERR_BAD_SYNTAX,
+			             "syntax does not support directives\n");
+		}
 		TRY_RET(read_directive(reader));
 		read_ws_star(reader);
 		break;
@@ -1610,7 +1619,8 @@ read_statement(SerdReader* reader)
 			TRY_RET(read_wrappedGraph(reader, &ctx));
 			read_ws_star(reader);
 		} else {
-			return r_err(reader, SERD_ERR_BAD_SYNTAX, "graph in Turtle\n");
+			return r_err(reader, SERD_ERR_BAD_SYNTAX,
+			             "syntax does not support graphs\n");
 		}
 		break;
 	default:
@@ -1679,6 +1689,9 @@ read_nquadsDoc(SerdReader* reader)
 		if (peek_byte(reader) == '\0') {
 			reader->eof = true;
 			break;
+		} else if (peek_byte(reader) == '@') {
+			return r_err(reader, SERD_ERR_BAD_SYNTAX,
+			             "syntax does not support directives\n");
 		}
 
 		// subject predicate object
-- 
cgit v1.2.1