summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/xplist.c14
1 files 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
587 } 587 }
588 ctx->pos += 3; 588 ctx->pos += 3;
589 } else { 589 } else {
590 PLIST_XML_ERR("Invalid special tag <[%.6s encountered\n", ctx->pos); 590 p = ctx->pos;
591 find_next(ctx, " \r\n\t>", 5, 1);
592 PLIST_XML_ERR("Invalid special tag '<[%.*s>' encountered inside '<%s>' tag\n", (int)(ctx->pos - p), p, tag);
591 ctx->err++; 593 ctx->err++;
592 return NULL; 594 return NULL;
593 } 595 }
596 } else {
597 p = ctx->pos;
598 find_next(ctx, " \r\n\t>", 5, 1);
599 PLIST_XML_ERR("Invalid special tag '<!%.*s>' encountered inside '<%s>' tag\n", (int)(ctx->pos - p), p, tag);
600 ctx->err++;
601 return NULL;
594 } 602 }
595 } else if (*ctx->pos == '/') { 603 } else if (*ctx->pos == '/') {
596 break; 604 break;
597 } else { 605 } else {
598 PLIST_XML_ERR("Invalid tag %.10s inside %s tag\n", ctx->pos, tag); 606 p = ctx->pos;
607 find_next(ctx, " \r\n\t>", 5, 1);
608 PLIST_XML_ERR("Invalid tag '<%.*s>' encountered inside '<%s>' tag\n", (int)(ctx->pos - p), p, tag);
599 ctx->err++; 609 ctx->err++;
600 return NULL; 610 return NULL;
601 } 611 }