diff options
| author | 2017-01-02 00:20:15 +0100 | |
|---|---|---|
| committer | 2017-01-02 00:20:15 +0100 | |
| commit | 7a3ce8da05c3ce93121676e286ab4d40305b21bb (patch) | |
| tree | 9e388e931d8501ef519360249061d6b287cecee2 | |
| parent | 3abf4ffb312f1ebb040e0389f4409312e0539426 (diff) | |
| download | libplist-7a3ce8da05c3ce93121676e286ab4d40305b21bb.tar.gz libplist-7a3ce8da05c3ce93121676e286ab4d40305b21bb.tar.bz2 | |
xplist: Make sure to error out when encountering empty/incomplete entities
| -rw-r--r-- | src/xplist.c | 6 |
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++; |
