summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2017-01-02 00:20:15 +0100
committerGravatar Nikias Bassen2017-01-02 00:20:15 +0100
commit7a3ce8da05c3ce93121676e286ab4d40305b21bb (patch)
tree9e388e931d8501ef519360249061d6b287cecee2 /src
parent3abf4ffb312f1ebb040e0389f4409312e0539426 (diff)
downloadlibplist-7a3ce8da05c3ce93121676e286ab4d40305b21bb.tar.gz
libplist-7a3ce8da05c3ce93121676e286ab4d40305b21bb.tar.bz2
xplist: Make sure to error out when encountering empty/incomplete entities
Diffstat (limited to 'src')
-rw-r--r--src/xplist.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/xplist.c b/src/xplist.c
index b1bdd46..a7d0722 100644
--- a/src/xplist.c
+++ b/src/xplist.c
@@ -640,7 +640,8 @@ static int unescape_entities(char *str, size_t *length)
640 i++; 640 i++;
641 } 641 }
642 if (i >= len) { 642 if (i >= len) {
643 break; 643 PLIST_XML_ERR("Invalid entity sequence encountered (missing terminating ';')\n");
644 return -1;
644 } 645 }
645 if (str+i >= entp+1) { 646 if (str+i >= entp+1) {
646 int entlen = str+i - entp; 647 int entlen = str+i - entp;
@@ -714,6 +715,9 @@ static int unescape_entities(char *str, size_t *length)
714 i -= entlen+1 - bytelen; 715 i -= entlen+1 - bytelen;
715 len -= entlen+2 - bytelen; 716 len -= entlen+2 - bytelen;
716 continue; 717 continue;
718 } else {
719 PLIST_XML_ERR("Invalid empty entity sequence &;\n");
720 return -1;
717 } 721 }
718 } 722 }
719 i++; 723 i++;