aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2018-03-06 20:47:20 -0500
committerDavid Robillard <d@drobilla.net>2018-03-06 20:47:20 -0500
commit6fbcabfa1a17bccb27e68a8226f646ba53f59a75 (patch)
tree4585804c521f60330e9e8b7a3988c4ef4b31d7de
parent88879b2150341a6b2b6f89c9ed95f2e65d4aaeaf (diff)
downloadserd-6fbcabfa1a17bccb27e68a8226f646ba53f59a75.tar.gz
serd-6fbcabfa1a17bccb27e68a8226f646ba53f59a75.tar.bz2
serd-6fbcabfa1a17bccb27e68a8226f646ba53f59a75.zip
Abort writing on failed IRI parse
-rw-r--r--src/writer.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/writer.c b/src/writer.c
index 36fb4d07..64b99076 100644
--- a/src/writer.c
+++ b/src/writer.c
@@ -496,7 +496,10 @@ write_uri_node(SerdWriter* const writer,
if (writer->style & SERD_STYLE_RESOLVED) {
SerdURI in_base_uri, uri, abs_uri;
serd_env_get_base_uri(writer->env, &in_base_uri);
- serd_uri_parse(node->buf, &uri);
+ if (serd_uri_parse(node->buf, &uri)) {
+ w_err(writer, SERD_ERR_BAD_SYNTAX, "invalid URI `%s'\n", node->buf);
+ return false;
+ }
serd_uri_resolve(&uri, &in_base_uri, &abs_uri);
bool rooted = uri_is_under(&writer->base_uri, &writer->root_uri);
SerdURI* root = rooted ? &writer->root_uri : & writer->base_uri;