Fix OOB read with invalid UTF-8 in xmlUTF8Strsize

With certain invalid UTF-8, xmlUTF8Strsize can read up to 6 bytes
beyond the end of the string and return the wrong size.

This means that in xmlUTF8Strndup and similar code, some content behind
the string is copied. But since the terminating \0 is copied as well,
this probably can't be exploited to leak sensitive information.

Found by afl-fuzz and ASan.
diff --git a/xmlstring.c b/xmlstring.c
index a37220d..b89c9e9 100644
--- a/xmlstring.c
+++ b/xmlstring.c
@@ -837,8 +837,8 @@
             break;
         if ( (ch = *ptr++) & 0x80)
             while ((ch<<=1) & 0x80 ) {
-                ptr++;
 		if (*ptr == 0) break;
+                ptr++;
 	    }
     }
     return (ptr - utf);