diff --git a/tvdb.c b/tvdb.c index 53bb8a5..ab3922c 100644 --- a/tvdb.c +++ b/tvdb.c @@ -53,10 +53,12 @@ unescape(char *txt) for (; (p = strchr(p, '&')); p++) { - int ll; + int ll = 0; unsigned char icode; - if (1 == sscanf( p, "&#%hhu;%n", &icode, &ll) || - 1 == sscanf( p, "&#%*[xX]%hhx;%n", &icode, &ll)) { + /* sscanf -> 1: the code was read; ll>0: ';' came next */ + if ((1 == sscanf( p, "&#%hhu;%n", &icode, &ll) || + 1 == sscanf( p, "&#%*[xX]%hhx;%n", &icode, &ll)) && + ll > 0) { /* &#x;, &#; */ HANDLE(p, (char)icode, ll-1); } else {