From 1cdb888575c6fc53fabe3575534ba99e3bb2c153 Mon Sep 17 00:00:00 2001
From: Nikias Bassen
Date: Mon, 2 Jan 2017 00:53:20 +0100
Subject: xplist: Error out when invalid tags inside text nodes are encountered

---
 src/xplist.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/xplist.c b/src/xplist.c
index a7d0722..ff065a9 100644
--- a/src/xplist.c
+++ b/src/xplist.c
@@ -587,15 +587,25 @@ static text_part_t* get_text_parts(parse_ctx ctx, const char* tag, size_t tag_le
                     }
                     ctx->pos += 3;
                 } else {
-                    PLIST_XML_ERR("Invalid special tag <[%.6s encountered\n", ctx->pos);
+                    p = ctx->pos;
+                    find_next(ctx, " \r\n\t>", 5, 1);
+                    PLIST_XML_ERR("Invalid special tag '<[%.*s>' encountered inside '<%s>' tag\n", (int)(ctx->pos - p), p, tag);
                     ctx->err++;
                     return NULL;
                 }
+            } else {
+                p = ctx->pos;
+                find_next(ctx, " \r\n\t>", 5, 1);
+                PLIST_XML_ERR("Invalid special tag '<!%.*s>' encountered inside '<%s>' tag\n", (int)(ctx->pos - p), p, tag);
+                ctx->err++;
+                return NULL;
             }
         } else if (*ctx->pos == '/') {
             break;
         } else {
-            PLIST_XML_ERR("Invalid tag %.10s inside %s tag\n", ctx->pos, tag);
+            p = ctx->pos;
+            find_next(ctx, " \r\n\t>", 5, 1);
+            PLIST_XML_ERR("Invalid tag '<%.*s>' encountered inside '<%s>' tag\n", (int)(ctx->pos - p), p, tag);
             ctx->err++;
             return NULL;
         }
-- 
cgit v1.1-32-gdbae