| 3241 | } |
| 3242 | |
| 3243 | static const xmlChar * |
| 3244 | xmlParseNameComplex(xmlParserCtxtPtr ctxt) { |
| 3245 | const xmlChar *ret; |
| 3246 | int len = 0, l; |
| 3247 | int c; |
| 3248 | int maxLength = (ctxt->options & XML_PARSE_HUGE) ? |
| 3249 | XML_MAX_TEXT_LENGTH : |
| 3250 | XML_MAX_NAME_LENGTH; |
| 3251 | |
| 3252 | /* |
| 3253 | * Handler for more complex cases |
| 3254 | */ |
| 3255 | c = CUR_CHAR(l); |
| 3256 | if ((ctxt->options & XML_PARSE_OLD10) == 0) { |
| 3257 | /* |
| 3258 | * Use the new checks of production [4] [4a] amd [5] of the |
| 3259 | * Update 5 of XML-1.0 |
| 3260 | */ |
| 3261 | if ((c == ' ') || (c == '>') || (c == '/') || /* accelerators */ |
| 3262 | (!(((c >= 'a') && (c <= 'z')) || |
| 3263 | ((c >= 'A') && (c <= 'Z')) || |
| 3264 | (c == '_') || (c == ':') || |
| 3265 | ((c >= 0xC0) && (c <= 0xD6)) || |
| 3266 | ((c >= 0xD8) && (c <= 0xF6)) || |
| 3267 | ((c >= 0xF8) && (c <= 0x2FF)) || |
| 3268 | ((c >= 0x370) && (c <= 0x37D)) || |
| 3269 | ((c >= 0x37F) && (c <= 0x1FFF)) || |
| 3270 | ((c >= 0x200C) && (c <= 0x200D)) || |
| 3271 | ((c >= 0x2070) && (c <= 0x218F)) || |
| 3272 | ((c >= 0x2C00) && (c <= 0x2FEF)) || |
| 3273 | ((c >= 0x3001) && (c <= 0xD7FF)) || |
| 3274 | ((c >= 0xF900) && (c <= 0xFDCF)) || |
| 3275 | ((c >= 0xFDF0) && (c <= 0xFFFD)) || |
| 3276 | ((c >= 0x10000) && (c <= 0xEFFFF))))) { |
| 3277 | return(NULL); |
| 3278 | } |
| 3279 | len += l; |
| 3280 | NEXTL(l); |
| 3281 | c = CUR_CHAR(l); |
| 3282 | while ((c != ' ') && (c != '>') && (c != '/') && /* accelerators */ |
| 3283 | (((c >= 'a') && (c <= 'z')) || |
| 3284 | ((c >= 'A') && (c <= 'Z')) || |
| 3285 | ((c >= '0') && (c <= '9')) || /* !start */ |
| 3286 | (c == '_') || (c == ':') || |
| 3287 | (c == '-') || (c == '.') || (c == 0xB7) || /* !start */ |
| 3288 | ((c >= 0xC0) && (c <= 0xD6)) || |
| 3289 | ((c >= 0xD8) && (c <= 0xF6)) || |
| 3290 | ((c >= 0xF8) && (c <= 0x2FF)) || |
| 3291 | ((c >= 0x300) && (c <= 0x36F)) || /* !start */ |
| 3292 | ((c >= 0x370) && (c <= 0x37D)) || |
| 3293 | ((c >= 0x37F) && (c <= 0x1FFF)) || |
| 3294 | ((c >= 0x200C) && (c <= 0x200D)) || |
| 3295 | ((c >= 0x203F) && (c <= 0x2040)) || /* !start */ |
| 3296 | ((c >= 0x2070) && (c <= 0x218F)) || |
| 3297 | ((c >= 0x2C00) && (c <= 0x2FEF)) || |
| 3298 | ((c >= 0x3001) && (c <= 0xD7FF)) || |
| 3299 | ((c >= 0xF900) && (c <= 0xFDCF)) || |
| 3300 | ((c >= 0xFDF0) && (c <= 0xFFFD)) || |
no test coverage detected