Lines Matching full:parser
7 |_| XML parser
215 static void copy_salt_to_sipkey(XML_Parser parser, struct sipkey *key);
278 A parser re-uses these structures, maintaining a list of allocated
401 XML_ACCOUNT_DIRECT, /* bytes directly passed to the Expat parser */
425 typedef enum XML_Error PTRCALL Processor(XML_Parser parser, const char *start,
447 static enum XML_Error handleUnknownEncoding(XML_Parser parser,
449 static enum XML_Error processXmlDecl(XML_Parser parser, int isGeneralTextEntity,
451 static enum XML_Error initializeEncoding(XML_Parser parser);
452 static enum XML_Error doProlog(XML_Parser parser, const ENCODING *enc,
457 static enum XML_Error processInternalEntity(XML_Parser parser, ENTITY *entity,
459 static enum XML_Error doContent(XML_Parser parser, int startTagLevel,
463 static enum XML_Error doCdataSection(XML_Parser parser, const ENCODING *,
468 static enum XML_Error doIgnoreSection(XML_Parser parser, const ENCODING *,
473 static void freeBindings(XML_Parser parser, BINDING *bindings);
474 static enum XML_Error storeAtts(XML_Parser parser, const ENCODING *,
478 static enum XML_Error addBinding(XML_Parser parser, PREFIX *prefix,
483 XML_Parser parser);
484 static enum XML_Error storeAttributeValue(XML_Parser parser, const ENCODING *,
488 static enum XML_Error appendAttributeValue(XML_Parser parser, const ENCODING *,
492 static ATTRIBUTE_ID *getAttributeId(XML_Parser parser, const ENCODING *enc,
494 static int setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *);
495 static enum XML_Error storeEntityValue(XML_Parser parser, const ENCODING *enc,
498 static int reportProcessingInstruction(XML_Parser parser, const ENCODING *enc,
500 static int reportComment(XML_Parser parser, const ENCODING *enc,
502 static void reportDefault(XML_Parser parser, const ENCODING *enc,
505 static const XML_Char *getContext(XML_Parser parser);
506 static XML_Bool setContext(XML_Parser parser, const XML_Char *context);
519 static NAMED *lookup(XML_Parser parser, HASH_TABLE *table, KEY name,
544 static int FASTCALL nextScaffoldPart(XML_Parser parser);
545 static XML_Content *build_model(XML_Parser parser);
546 static ELEMENT_TYPE *getElementType(XML_Parser parser, const ENCODING *enc,
552 static unsigned long generate_hash_secret_salt(XML_Parser parser);
553 static XML_Bool startParsing(XML_Parser parser);
559 static void parserInit(XML_Parser parser, const XML_Char *encodingName);
575 static void entityTrackingReportStats(XML_Parser parser, ENTITY *entity,
577 static void entityTrackingOnOpen(XML_Parser parser, ENTITY *entity,
579 static void entityTrackingOnClose(XML_Parser parser, ENTITY *entity,
582 static XML_Parser getRootParserOf(XML_Parser parser,
708 #define MALLOC(parser, s) (parser->m_mem.malloc_fcn((s))) argument
709 #define REALLOC(parser, p, s) (parser->m_mem.realloc_fcn((p), (s))) argument
710 #define FREE(parser, p) (parser->m_mem.free_fcn((p))) argument
897 generate_hash_secret_salt(XML_Parser parser) { in generate_hash_secret_salt() argument
899 (void)parser; in generate_hash_secret_salt()
940 get_hash_secret_salt(XML_Parser parser) { in get_hash_secret_salt() argument
941 if (parser->m_parentParser != NULL) in get_hash_secret_salt()
942 return get_hash_secret_salt(parser->m_parentParser); in get_hash_secret_salt()
943 return parser->m_hash_secret_salt; in get_hash_secret_salt()
946 static XML_Bool /* only valid for root parser */
947 startParsing(XML_Parser parser) { in startParsing() argument
949 if (parser->m_hash_secret_salt == 0) in startParsing()
950 parser->m_hash_secret_salt = generate_hash_secret_salt(parser); in startParsing()
951 if (parser->m_ns) { in startParsing()
952 /* implicit context only set for root parser, since child in startParsing()
955 return setContext(parser, implicitContext); in startParsing()
971 XML_Parser parser; in parserCreate() local
975 parser = (XML_Parser)memsuite->malloc_fcn(sizeof(struct XML_ParserStruct)); in parserCreate()
976 if (parser != NULL) { in parserCreate()
977 mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem); in parserCreate()
984 parser = (XML_Parser)malloc(sizeof(struct XML_ParserStruct)); in parserCreate()
985 if (parser != NULL) { in parserCreate()
986 mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem); in parserCreate()
993 if (! parser) in parserCreate()
994 return parser; in parserCreate()
996 parser->m_buffer = NULL; in parserCreate()
997 parser->m_bufferLim = NULL; in parserCreate()
999 parser->m_attsSize = INIT_ATTS_SIZE; in parserCreate()
1000 parser->m_atts in parserCreate()
1001 = (ATTRIBUTE *)MALLOC(parser, parser->m_attsSize * sizeof(ATTRIBUTE)); in parserCreate()
1002 if (parser->m_atts == NULL) { in parserCreate()
1003 FREE(parser, parser); in parserCreate()
1007 parser->m_attInfo = (XML_AttrInfo *)MALLOC( in parserCreate()
1008 parser, parser->m_attsSize * sizeof(XML_AttrInfo)); in parserCreate()
1009 if (parser->m_attInfo == NULL) { in parserCreate()
1010 FREE(parser, parser->m_atts); in parserCreate()
1011 FREE(parser, parser); in parserCreate()
1015 parser->m_dataBuf in parserCreate()
1016 = (XML_Char *)MALLOC(parser, INIT_DATA_BUF_SIZE * sizeof(XML_Char)); in parserCreate()
1017 if (parser->m_dataBuf == NULL) { in parserCreate()
1018 FREE(parser, parser->m_atts); in parserCreate()
1020 FREE(parser, parser->m_attInfo); in parserCreate()
1022 FREE(parser, parser); in parserCreate()
1025 parser->m_dataBufEnd = parser->m_dataBuf + INIT_DATA_BUF_SIZE; in parserCreate()
1028 parser->m_dtd = dtd; in parserCreate()
1030 parser->m_dtd = dtdCreate(&parser->m_mem); in parserCreate()
1031 if (parser->m_dtd == NULL) { in parserCreate()
1032 FREE(parser, parser->m_dataBuf); in parserCreate()
1033 FREE(parser, parser->m_atts); in parserCreate()
1035 FREE(parser, parser->m_attInfo); in parserCreate()
1037 FREE(parser, parser); in parserCreate()
1042 parser->m_freeBindingList = NULL; in parserCreate()
1043 parser->m_freeTagList = NULL; in parserCreate()
1044 parser->m_freeInternalEntities = NULL; in parserCreate()
1046 parser->m_groupSize = 0; in parserCreate()
1047 parser->m_groupConnector = NULL; in parserCreate()
1049 parser->m_unknownEncodingHandler = NULL; in parserCreate()
1050 parser->m_unknownEncodingHandlerData = NULL; in parserCreate()
1052 parser->m_namespaceSeparator = ASCII_EXCL; in parserCreate()
1053 parser->m_ns = XML_FALSE; in parserCreate()
1054 parser->m_ns_triplets = XML_FALSE; in parserCreate()
1056 parser->m_nsAtts = NULL; in parserCreate()
1057 parser->m_nsAttsVersion = 0; in parserCreate()
1058 parser->m_nsAttsPower = 0; in parserCreate()
1060 parser->m_protocolEncodingName = NULL; in parserCreate()
1062 poolInit(&parser->m_tempPool, &(parser->m_mem)); in parserCreate()
1063 poolInit(&parser->m_temp2Pool, &(parser->m_mem)); in parserCreate()
1064 parserInit(parser, encodingName); in parserCreate()
1066 if (encodingName && ! parser->m_protocolEncodingName) { in parserCreate()
1069 // destroying parser->m_dtd because the DTD is shared with the parent in parserCreate()
1070 // parser and the only guard that keeps XML_ParserFree from destroying in parserCreate()
1071 // parser->m_dtd is parser->m_isParamEntity but it will be set to in parserCreate()
1073 parser->m_dtd = NULL; in parserCreate()
1075 XML_ParserFree(parser); in parserCreate()
1080 parser->m_ns = XML_TRUE; in parserCreate()
1081 parser->m_internalEncoding = XmlGetInternalEncodingNS(); in parserCreate()
1082 parser->m_namespaceSeparator = *nameSep; in parserCreate()
1084 parser->m_internalEncoding = XmlGetInternalEncoding(); in parserCreate()
1087 return parser; in parserCreate()
1091 parserInit(XML_Parser parser, const XML_Char *encodingName) { in parserInit() argument
1092 parser->m_processor = prologInitProcessor; in parserInit()
1093 XmlPrologStateInit(&parser->m_prologState); in parserInit()
1095 parser->m_protocolEncodingName = copyString(encodingName, &(parser->m_mem)); in parserInit()
1097 parser->m_curBase = NULL; in parserInit()
1098 XmlInitEncoding(&parser->m_initEncoding, &parser->m_encoding, 0); in parserInit()
1099 parser->m_userData = NULL; in parserInit()
1100 parser->m_handlerArg = NULL; in parserInit()
1101 parser->m_startElementHandler = NULL; in parserInit()
1102 parser->m_endElementHandler = NULL; in parserInit()
1103 parser->m_characterDataHandler = NULL; in parserInit()
1104 parser->m_processingInstructionHandler = NULL; in parserInit()
1105 parser->m_commentHandler = NULL; in parserInit()
1106 parser->m_startCdataSectionHandler = NULL; in parserInit()
1107 parser->m_endCdataSectionHandler = NULL; in parserInit()
1108 parser->m_defaultHandler = NULL; in parserInit()
1109 parser->m_startDoctypeDeclHandler = NULL; in parserInit()
1110 parser->m_endDoctypeDeclHandler = NULL; in parserInit()
1111 parser->m_unparsedEntityDeclHandler = NULL; in parserInit()
1112 parser->m_notationDeclHandler = NULL; in parserInit()
1113 parser->m_startNamespaceDeclHandler = NULL; in parserInit()
1114 parser->m_endNamespaceDeclHandler = NULL; in parserInit()
1115 parser->m_notStandaloneHandler = NULL; in parserInit()
1116 parser->m_externalEntityRefHandler = NULL; in parserInit()
1117 parser->m_externalEntityRefHandlerArg = parser; in parserInit()
1118 parser->m_skippedEntityHandler = NULL; in parserInit()
1119 parser->m_elementDeclHandler = NULL; in parserInit()
1120 parser->m_attlistDeclHandler = NULL; in parserInit()
1121 parser->m_entityDeclHandler = NULL; in parserInit()
1122 parser->m_xmlDeclHandler = NULL; in parserInit()
1123 parser->m_bufferPtr = parser->m_buffer; in parserInit()
1124 parser->m_bufferEnd = parser->m_buffer; in parserInit()
1125 parser->m_parseEndByteIndex = 0; in parserInit()
1126 parser->m_parseEndPtr = NULL; in parserInit()
1127 parser->m_declElementType = NULL; in parserInit()
1128 parser->m_declAttributeId = NULL; in parserInit()
1129 parser->m_declEntity = NULL; in parserInit()
1130 parser->m_doctypeName = NULL; in parserInit()
1131 parser->m_doctypeSysid = NULL; in parserInit()
1132 parser->m_doctypePubid = NULL; in parserInit()
1133 parser->m_declAttributeType = NULL; in parserInit()
1134 parser->m_declNotationName = NULL; in parserInit()
1135 parser->m_declNotationPublicId = NULL; in parserInit()
1136 parser->m_declAttributeIsCdata = XML_FALSE; in parserInit()
1137 parser->m_declAttributeIsId = XML_FALSE; in parserInit()
1138 memset(&parser->m_position, 0, sizeof(POSITION)); in parserInit()
1139 parser->m_errorCode = XML_ERROR_NONE; in parserInit()
1140 parser->m_eventPtr = NULL; in parserInit()
1141 parser->m_eventEndPtr = NULL; in parserInit()
1142 parser->m_positionPtr = NULL; in parserInit()
1143 parser->m_openInternalEntities = NULL; in parserInit()
1144 parser->m_defaultExpandInternalEntities = XML_TRUE; in parserInit()
1145 parser->m_tagLevel = 0; in parserInit()
1146 parser->m_tagStack = NULL; in parserInit()
1147 parser->m_inheritedBindings = NULL; in parserInit()
1148 parser->m_nSpecifiedAtts = 0; in parserInit()
1149 parser->m_unknownEncodingMem = NULL; in parserInit()
1150 parser->m_unknownEncodingRelease = NULL; in parserInit()
1151 parser->m_unknownEncodingData = NULL; in parserInit()
1152 parser->m_parentParser = NULL; in parserInit()
1153 parser->m_parsingStatus.parsing = XML_INITIALIZED; in parserInit()
1155 parser->m_isParamEntity = XML_FALSE; in parserInit()
1156 parser->m_useForeignDTD = XML_FALSE; in parserInit()
1157 parser->m_paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; in parserInit()
1159 parser->m_hash_secret_salt = 0; in parserInit()
1162 memset(&parser->m_accounting, 0, sizeof(ACCOUNTING)); in parserInit()
1163 parser->m_accounting.debugLevel = getDebugLevel("EXPAT_ACCOUNTING_DEBUG", 0u); in parserInit()
1164 parser->m_accounting.maximumAmplificationFactor in parserInit()
1166 parser->m_accounting.activationThresholdBytes in parserInit()
1169 memset(&parser->m_entity_stats, 0, sizeof(ENTITY_STATS)); in parserInit()
1170 parser->m_entity_stats.debugLevel = getDebugLevel("EXPAT_ENTITY_DEBUG", 0u); in parserInit()
1176 moveToFreeBindingList(XML_Parser parser, BINDING *bindings) { in moveToFreeBindingList() argument
1180 b->nextTagBinding = parser->m_freeBindingList; in moveToFreeBindingList()
1181 parser->m_freeBindingList = b; in moveToFreeBindingList()
1186 XML_ParserReset(XML_Parser parser, const XML_Char *encodingName) { in XML_ParserReset() argument
1190 if (parser == NULL) in XML_ParserReset()
1193 if (parser->m_parentParser) in XML_ParserReset()
1196 tStk = parser->m_tagStack; in XML_ParserReset()
1200 tag->parent = parser->m_freeTagList; in XML_ParserReset()
1201 moveToFreeBindingList(parser, tag->bindings); in XML_ParserReset()
1203 parser->m_freeTagList = tag; in XML_ParserReset()
1206 openEntityList = parser->m_openInternalEntities; in XML_ParserReset()
1210 openEntity->next = parser->m_freeInternalEntities; in XML_ParserReset()
1211 parser->m_freeInternalEntities = openEntity; in XML_ParserReset()
1213 moveToFreeBindingList(parser, parser->m_inheritedBindings); in XML_ParserReset()
1214 FREE(parser, parser->m_unknownEncodingMem); in XML_ParserReset()
1215 if (parser->m_unknownEncodingRelease) in XML_ParserReset()
1216 parser->m_unknownEncodingRelease(parser->m_unknownEncodingData); in XML_ParserReset()
1217 poolClear(&parser->m_tempPool); in XML_ParserReset()
1218 poolClear(&parser->m_temp2Pool); in XML_ParserReset()
1219 FREE(parser, (void *)parser->m_protocolEncodingName); in XML_ParserReset()
1220 parser->m_protocolEncodingName = NULL; in XML_ParserReset()
1221 parserInit(parser, encodingName); in XML_ParserReset()
1222 dtdReset(parser->m_dtd, &parser->m_mem); in XML_ParserReset()
1227 XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName) { in XML_SetEncoding() argument
1228 if (parser == NULL) in XML_SetEncoding()
1234 if (parser->m_parsingStatus.parsing == XML_PARSING in XML_SetEncoding()
1235 || parser->m_parsingStatus.parsing == XML_SUSPENDED) in XML_SetEncoding()
1239 FREE(parser, (void *)parser->m_protocolEncodingName); in XML_SetEncoding()
1243 parser->m_protocolEncodingName = NULL; in XML_SetEncoding()
1246 parser->m_protocolEncodingName = copyString(encodingName, &(parser->m_mem)); in XML_SetEncoding()
1247 if (! parser->m_protocolEncodingName) in XML_SetEncoding()
1256 XML_Parser parser = oldParser; in XML_ExternalEntityParserCreate() local
1290 /* Note that the new parser shares the same hash secret as the old in XML_ExternalEntityParserCreate()
1291 parser, so that dtdCopy and copyEntityTable can lookup values in XML_ExternalEntityParserCreate()
1292 from hash tables associated with either parser without us having in XML_ExternalEntityParserCreate()
1301 /* Stash the original parser contents on the stack */ in XML_ExternalEntityParserCreate()
1302 oldDtd = parser->m_dtd; in XML_ExternalEntityParserCreate()
1303 oldStartElementHandler = parser->m_startElementHandler; in XML_ExternalEntityParserCreate()
1304 oldEndElementHandler = parser->m_endElementHandler; in XML_ExternalEntityParserCreate()
1305 oldCharacterDataHandler = parser->m_characterDataHandler; in XML_ExternalEntityParserCreate()
1306 oldProcessingInstructionHandler = parser->m_processingInstructionHandler; in XML_ExternalEntityParserCreate()
1307 oldCommentHandler = parser->m_commentHandler; in XML_ExternalEntityParserCreate()
1308 oldStartCdataSectionHandler = parser->m_startCdataSectionHandler; in XML_ExternalEntityParserCreate()
1309 oldEndCdataSectionHandler = parser->m_endCdataSectionHandler; in XML_ExternalEntityParserCreate()
1310 oldDefaultHandler = parser->m_defaultHandler; in XML_ExternalEntityParserCreate()
1311 oldUnparsedEntityDeclHandler = parser->m_unparsedEntityDeclHandler; in XML_ExternalEntityParserCreate()
1312 oldNotationDeclHandler = parser->m_notationDeclHandler; in XML_ExternalEntityParserCreate()
1313 oldStartNamespaceDeclHandler = parser->m_startNamespaceDeclHandler; in XML_ExternalEntityParserCreate()
1314 oldEndNamespaceDeclHandler = parser->m_endNamespaceDeclHandler; in XML_ExternalEntityParserCreate()
1315 oldNotStandaloneHandler = parser->m_notStandaloneHandler; in XML_ExternalEntityParserCreate()
1316 oldExternalEntityRefHandler = parser->m_externalEntityRefHandler; in XML_ExternalEntityParserCreate()
1317 oldSkippedEntityHandler = parser->m_skippedEntityHandler; in XML_ExternalEntityParserCreate()
1318 oldUnknownEncodingHandler = parser->m_unknownEncodingHandler; in XML_ExternalEntityParserCreate()
1319 oldElementDeclHandler = parser->m_elementDeclHandler; in XML_ExternalEntityParserCreate()
1320 oldAttlistDeclHandler = parser->m_attlistDeclHandler; in XML_ExternalEntityParserCreate()
1321 oldEntityDeclHandler = parser->m_entityDeclHandler; in XML_ExternalEntityParserCreate()
1322 oldXmlDeclHandler = parser->m_xmlDeclHandler; in XML_ExternalEntityParserCreate()
1323 oldDeclElementType = parser->m_declElementType; in XML_ExternalEntityParserCreate()
1325 oldUserData = parser->m_userData; in XML_ExternalEntityParserCreate()
1326 oldHandlerArg = parser->m_handlerArg; in XML_ExternalEntityParserCreate()
1327 oldDefaultExpandInternalEntities = parser->m_defaultExpandInternalEntities; in XML_ExternalEntityParserCreate()
1328 oldExternalEntityRefHandlerArg = parser->m_externalEntityRefHandlerArg; in XML_ExternalEntityParserCreate()
1330 oldParamEntityParsing = parser->m_paramEntityParsing; in XML_ExternalEntityParserCreate()
1331 oldInEntityValue = parser->m_prologState.inEntityValue; in XML_ExternalEntityParserCreate()
1333 oldns_triplets = parser->m_ns_triplets; in XML_ExternalEntityParserCreate()
1334 /* Note that the new parser shares the same hash secret as the old in XML_ExternalEntityParserCreate()
1335 parser, so that dtdCopy and copyEntityTable can lookup values in XML_ExternalEntityParserCreate()
1336 from hash tables associated with either parser without us having in XML_ExternalEntityParserCreate()
1339 oldhash_secret_salt = parser->m_hash_secret_salt; in XML_ExternalEntityParserCreate()
1347 access look more like C++ require that `parser' be overwritten in XML_ExternalEntityParserCreate()
1351 if (parser->m_ns) { in XML_ExternalEntityParserCreate()
1352 XML_Char tmp[2] = {parser->m_namespaceSeparator, 0}; in XML_ExternalEntityParserCreate()
1353 parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd); in XML_ExternalEntityParserCreate()
1355 parser = parserCreate(encodingName, &parser->m_mem, NULL, newDtd); in XML_ExternalEntityParserCreate()
1358 if (! parser) in XML_ExternalEntityParserCreate()
1361 parser->m_startElementHandler = oldStartElementHandler; in XML_ExternalEntityParserCreate()
1362 parser->m_endElementHandler = oldEndElementHandler; in XML_ExternalEntityParserCreate()
1363 parser->m_characterDataHandler = oldCharacterDataHandler; in XML_ExternalEntityParserCreate()
1364 parser->m_processingInstructionHandler = oldProcessingInstructionHandler; in XML_ExternalEntityParserCreate()
1365 parser->m_commentHandler = oldCommentHandler; in XML_ExternalEntityParserCreate()
1366 parser->m_startCdataSectionHandler = oldStartCdataSectionHandler; in XML_ExternalEntityParserCreate()
1367 parser->m_endCdataSectionHandler = oldEndCdataSectionHandler; in XML_ExternalEntityParserCreate()
1368 parser->m_defaultHandler = oldDefaultHandler; in XML_ExternalEntityParserCreate()
1369 parser->m_unparsedEntityDeclHandler = oldUnparsedEntityDeclHandler; in XML_ExternalEntityParserCreate()
1370 parser->m_notationDeclHandler = oldNotationDeclHandler; in XML_ExternalEntityParserCreate()
1371 parser->m_startNamespaceDeclHandler = oldStartNamespaceDeclHandler; in XML_ExternalEntityParserCreate()
1372 parser->m_endNamespaceDeclHandler = oldEndNamespaceDeclHandler; in XML_ExternalEntityParserCreate()
1373 parser->m_notStandaloneHandler = oldNotStandaloneHandler; in XML_ExternalEntityParserCreate()
1374 parser->m_externalEntityRefHandler = oldExternalEntityRefHandler; in XML_ExternalEntityParserCreate()
1375 parser->m_skippedEntityHandler = oldSkippedEntityHandler; in XML_ExternalEntityParserCreate()
1376 parser->m_unknownEncodingHandler = oldUnknownEncodingHandler; in XML_ExternalEntityParserCreate()
1377 parser->m_elementDeclHandler = oldElementDeclHandler; in XML_ExternalEntityParserCreate()
1378 parser->m_attlistDeclHandler = oldAttlistDeclHandler; in XML_ExternalEntityParserCreate()
1379 parser->m_entityDeclHandler = oldEntityDeclHandler; in XML_ExternalEntityParserCreate()
1380 parser->m_xmlDeclHandler = oldXmlDeclHandler; in XML_ExternalEntityParserCreate()
1381 parser->m_declElementType = oldDeclElementType; in XML_ExternalEntityParserCreate()
1382 parser->m_userData = oldUserData; in XML_ExternalEntityParserCreate()
1384 parser->m_handlerArg = parser->m_userData; in XML_ExternalEntityParserCreate()
1386 parser->m_handlerArg = parser; in XML_ExternalEntityParserCreate()
1388 parser->m_externalEntityRefHandlerArg = oldExternalEntityRefHandlerArg; in XML_ExternalEntityParserCreate()
1389 parser->m_defaultExpandInternalEntities = oldDefaultExpandInternalEntities; in XML_ExternalEntityParserCreate()
1390 parser->m_ns_triplets = oldns_triplets; in XML_ExternalEntityParserCreate()
1391 parser->m_hash_secret_salt = oldhash_secret_salt; in XML_ExternalEntityParserCreate()
1392 parser->m_parentParser = oldParser; in XML_ExternalEntityParserCreate()
1394 parser->m_paramEntityParsing = oldParamEntityParsing; in XML_ExternalEntityParserCreate()
1395 parser->m_prologState.inEntityValue = oldInEntityValue; in XML_ExternalEntityParserCreate()
1398 if (! dtdCopy(oldParser, parser->m_dtd, oldDtd, &parser->m_mem) in XML_ExternalEntityParserCreate()
1399 || ! setContext(parser, context)) { in XML_ExternalEntityParserCreate()
1400 XML_ParserFree(parser); in XML_ExternalEntityParserCreate()
1403 parser->m_processor = externalEntityInitProcessor; in XML_ExternalEntityParserCreate()
1406 /* The DTD instance referenced by parser->m_dtd is shared between the in XML_ExternalEntityParserCreate()
1407 document's root parser and external PE parsers, therefore one does not in XML_ExternalEntityParserCreate()
1410 pointers in parser->m_dtd with ones that get destroyed with the external in XML_ExternalEntityParserCreate()
1411 PE parser. This would leave those prefixes with dangling pointers. in XML_ExternalEntityParserCreate()
1413 parser->m_isParamEntity = XML_TRUE; in XML_ExternalEntityParserCreate()
1414 XmlPrologStateInitExternalEntity(&parser->m_prologState); in XML_ExternalEntityParserCreate()
1415 parser->m_processor = externalParEntInitProcessor; in XML_ExternalEntityParserCreate()
1418 return parser; in XML_ExternalEntityParserCreate()
1422 destroyBindings(BINDING *bindings, XML_Parser parser) { in destroyBindings() argument
1428 FREE(parser, b->uri); in destroyBindings()
1429 FREE(parser, b); in destroyBindings()
1434 XML_ParserFree(XML_Parser parser) { in XML_ParserFree() argument
1437 if (parser == NULL) in XML_ParserFree()
1440 tagList = parser->m_tagStack; in XML_ParserFree()
1444 if (parser->m_freeTagList == NULL) in XML_ParserFree()
1446 tagList = parser->m_freeTagList; in XML_ParserFree()
1447 parser->m_freeTagList = NULL; in XML_ParserFree()
1451 FREE(parser, p->buf); in XML_ParserFree()
1452 destroyBindings(p->bindings, parser); in XML_ParserFree()
1453 FREE(parser, p); in XML_ParserFree()
1456 entityList = parser->m_openInternalEntities; in XML_ParserFree()
1460 if (parser->m_freeInternalEntities == NULL) in XML_ParserFree()
1462 entityList = parser->m_freeInternalEntities; in XML_ParserFree()
1463 parser->m_freeInternalEntities = NULL; in XML_ParserFree()
1467 FREE(parser, openEntity); in XML_ParserFree()
1470 destroyBindings(parser->m_freeBindingList, parser); in XML_ParserFree()
1471 destroyBindings(parser->m_inheritedBindings, parser); in XML_ParserFree()
1472 poolDestroy(&parser->m_tempPool); in XML_ParserFree()
1473 poolDestroy(&parser->m_temp2Pool); in XML_ParserFree()
1474 FREE(parser, (void *)parser->m_protocolEncodingName); in XML_ParserFree()
1477 parser->m_dtd with the root parser, so we must not destroy it in XML_ParserFree()
1479 if (! parser->m_isParamEntity && parser->m_dtd) in XML_ParserFree()
1481 if (parser->m_dtd) in XML_ParserFree()
1483 dtdDestroy(parser->m_dtd, (XML_Bool)! parser->m_parentParser, in XML_ParserFree()
1484 &parser->m_mem); in XML_ParserFree()
1485 FREE(parser, (void *)parser->m_atts); in XML_ParserFree()
1487 FREE(parser, (void *)parser->m_attInfo); in XML_ParserFree()
1489 FREE(parser, parser->m_groupConnector); in XML_ParserFree()
1490 FREE(parser, parser->m_buffer); in XML_ParserFree()
1491 FREE(parser, parser->m_dataBuf); in XML_ParserFree()
1492 FREE(parser, parser->m_nsAtts); in XML_ParserFree()
1493 FREE(parser, parser->m_unknownEncodingMem); in XML_ParserFree()
1494 if (parser->m_unknownEncodingRelease) in XML_ParserFree()
1495 parser->m_unknownEncodingRelease(parser->m_unknownEncodingData); in XML_ParserFree()
1496 FREE(parser, parser); in XML_ParserFree()
1500 XML_UseParserAsHandlerArg(XML_Parser parser) { in XML_UseParserAsHandlerArg() argument
1501 if (parser != NULL) in XML_UseParserAsHandlerArg()
1502 parser->m_handlerArg = parser; in XML_UseParserAsHandlerArg()
1506 XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD) { in XML_UseForeignDTD() argument
1507 if (parser == NULL) in XML_UseForeignDTD()
1511 if (parser->m_parsingStatus.parsing == XML_PARSING in XML_UseForeignDTD()
1512 || parser->m_parsingStatus.parsing == XML_SUSPENDED) in XML_UseForeignDTD()
1514 parser->m_useForeignDTD = useDTD; in XML_UseForeignDTD()
1523 XML_SetReturnNSTriplet(XML_Parser parser, int do_nst) { in XML_SetReturnNSTriplet() argument
1524 if (parser == NULL) in XML_SetReturnNSTriplet()
1527 if (parser->m_parsingStatus.parsing == XML_PARSING in XML_SetReturnNSTriplet()
1528 || parser->m_parsingStatus.parsing == XML_SUSPENDED) in XML_SetReturnNSTriplet()
1530 parser->m_ns_triplets = do_nst ? XML_TRUE : XML_FALSE; in XML_SetReturnNSTriplet()
1534 XML_SetUserData(XML_Parser parser, void *p) { in XML_SetUserData() argument
1535 if (parser == NULL) in XML_SetUserData()
1537 if (parser->m_handlerArg == parser->m_userData) in XML_SetUserData()
1538 parser->m_handlerArg = parser->m_userData = p; in XML_SetUserData()
1540 parser->m_userData = p; in XML_SetUserData()
1544 XML_SetBase(XML_Parser parser, const XML_Char *p) { in XML_SetBase() argument
1545 if (parser == NULL) in XML_SetBase()
1548 p = poolCopyString(&parser->m_dtd->pool, p); in XML_SetBase()
1551 parser->m_curBase = p; in XML_SetBase()
1553 parser->m_curBase = NULL; in XML_SetBase()
1558 XML_GetBase(XML_Parser parser) { in XML_GetBase() argument
1559 if (parser == NULL) in XML_GetBase()
1561 return parser->m_curBase; in XML_GetBase()
1565 XML_GetSpecifiedAttributeCount(XML_Parser parser) { in XML_GetSpecifiedAttributeCount() argument
1566 if (parser == NULL) in XML_GetSpecifiedAttributeCount()
1568 return parser->m_nSpecifiedAtts; in XML_GetSpecifiedAttributeCount()
1572 XML_GetIdAttributeIndex(XML_Parser parser) { in XML_GetIdAttributeIndex() argument
1573 if (parser == NULL) in XML_GetIdAttributeIndex()
1575 return parser->m_idAttIndex; in XML_GetIdAttributeIndex()
1580 XML_GetAttributeInfo(XML_Parser parser) { in XML_GetAttributeInfo() argument
1581 if (parser == NULL) in XML_GetAttributeInfo()
1583 return parser->m_attInfo; in XML_GetAttributeInfo()
1588 XML_SetElementHandler(XML_Parser parser, XML_StartElementHandler start, in XML_SetElementHandler() argument
1590 if (parser == NULL) in XML_SetElementHandler()
1592 parser->m_startElementHandler = start; in XML_SetElementHandler()
1593 parser->m_endElementHandler = end; in XML_SetElementHandler()
1597 XML_SetStartElementHandler(XML_Parser parser, XML_StartElementHandler start) { in XML_SetStartElementHandler() argument
1598 if (parser != NULL) in XML_SetStartElementHandler()
1599 parser->m_startElementHandler = start; in XML_SetStartElementHandler()
1603 XML_SetEndElementHandler(XML_Parser parser, XML_EndElementHandler end) { in XML_SetEndElementHandler() argument
1604 if (parser != NULL) in XML_SetEndElementHandler()
1605 parser->m_endElementHandler = end; in XML_SetEndElementHandler()
1609 XML_SetCharacterDataHandler(XML_Parser parser, in XML_SetCharacterDataHandler() argument
1611 if (parser != NULL) in XML_SetCharacterDataHandler()
1612 parser->m_characterDataHandler = handler; in XML_SetCharacterDataHandler()
1616 XML_SetProcessingInstructionHandler(XML_Parser parser, in XML_SetProcessingInstructionHandler() argument
1618 if (parser != NULL) in XML_SetProcessingInstructionHandler()
1619 parser->m_processingInstructionHandler = handler; in XML_SetProcessingInstructionHandler()
1623 XML_SetCommentHandler(XML_Parser parser, XML_CommentHandler handler) { in XML_SetCommentHandler() argument
1624 if (parser != NULL) in XML_SetCommentHandler()
1625 parser->m_commentHandler = handler; in XML_SetCommentHandler()
1629 XML_SetCdataSectionHandler(XML_Parser parser, in XML_SetCdataSectionHandler() argument
1632 if (parser == NULL) in XML_SetCdataSectionHandler()
1634 parser->m_startCdataSectionHandler = start; in XML_SetCdataSectionHandler()
1635 parser->m_endCdataSectionHandler = end; in XML_SetCdataSectionHandler()
1639 XML_SetStartCdataSectionHandler(XML_Parser parser, in XML_SetStartCdataSectionHandler() argument
1641 if (parser != NULL) in XML_SetStartCdataSectionHandler()
1642 parser->m_startCdataSectionHandler = start; in XML_SetStartCdataSectionHandler()
1646 XML_SetEndCdataSectionHandler(XML_Parser parser, in XML_SetEndCdataSectionHandler() argument
1648 if (parser != NULL) in XML_SetEndCdataSectionHandler()
1649 parser->m_endCdataSectionHandler = end; in XML_SetEndCdataSectionHandler()
1653 XML_SetDefaultHandler(XML_Parser parser, XML_DefaultHandler handler) { in XML_SetDefaultHandler() argument
1654 if (parser == NULL) in XML_SetDefaultHandler()
1656 parser->m_defaultHandler = handler; in XML_SetDefaultHandler()
1657 parser->m_defaultExpandInternalEntities = XML_FALSE; in XML_SetDefaultHandler()
1661 XML_SetDefaultHandlerExpand(XML_Parser parser, XML_DefaultHandler handler) { in XML_SetDefaultHandlerExpand() argument
1662 if (parser == NULL) in XML_SetDefaultHandlerExpand()
1664 parser->m_defaultHandler = handler; in XML_SetDefaultHandlerExpand()
1665 parser->m_defaultExpandInternalEntities = XML_TRUE; in XML_SetDefaultHandlerExpand()
1669 XML_SetDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start, in XML_SetDoctypeDeclHandler() argument
1671 if (parser == NULL) in XML_SetDoctypeDeclHandler()
1673 parser->m_startDoctypeDeclHandler = start; in XML_SetDoctypeDeclHandler()
1674 parser->m_endDoctypeDeclHandler = end; in XML_SetDoctypeDeclHandler()
1678 XML_SetStartDoctypeDeclHandler(XML_Parser parser, in XML_SetStartDoctypeDeclHandler() argument
1680 if (parser != NULL) in XML_SetStartDoctypeDeclHandler()
1681 parser->m_startDoctypeDeclHandler = start; in XML_SetStartDoctypeDeclHandler()
1685 XML_SetEndDoctypeDeclHandler(XML_Parser parser, XML_EndDoctypeDeclHandler end) { in XML_SetEndDoctypeDeclHandler() argument
1686 if (parser != NULL) in XML_SetEndDoctypeDeclHandler()
1687 parser->m_endDoctypeDeclHandler = end; in XML_SetEndDoctypeDeclHandler()
1691 XML_SetUnparsedEntityDeclHandler(XML_Parser parser, in XML_SetUnparsedEntityDeclHandler() argument
1693 if (parser != NULL) in XML_SetUnparsedEntityDeclHandler()
1694 parser->m_unparsedEntityDeclHandler = handler; in XML_SetUnparsedEntityDeclHandler()
1698 XML_SetNotationDeclHandler(XML_Parser parser, XML_NotationDeclHandler handler) { in XML_SetNotationDeclHandler() argument
1699 if (parser != NULL) in XML_SetNotationDeclHandler()
1700 parser->m_notationDeclHandler = handler; in XML_SetNotationDeclHandler()
1704 XML_SetNamespaceDeclHandler(XML_Parser parser, in XML_SetNamespaceDeclHandler() argument
1707 if (parser == NULL) in XML_SetNamespaceDeclHandler()
1709 parser->m_startNamespaceDeclHandler = start; in XML_SetNamespaceDeclHandler()
1710 parser->m_endNamespaceDeclHandler = end; in XML_SetNamespaceDeclHandler()
1714 XML_SetStartNamespaceDeclHandler(XML_Parser parser, in XML_SetStartNamespaceDeclHandler() argument
1716 if (parser != NULL) in XML_SetStartNamespaceDeclHandler()
1717 parser->m_startNamespaceDeclHandler = start; in XML_SetStartNamespaceDeclHandler()
1721 XML_SetEndNamespaceDeclHandler(XML_Parser parser, in XML_SetEndNamespaceDeclHandler() argument
1723 if (parser != NULL) in XML_SetEndNamespaceDeclHandler()
1724 parser->m_endNamespaceDeclHandler = end; in XML_SetEndNamespaceDeclHandler()
1728 XML_SetNotStandaloneHandler(XML_Parser parser, in XML_SetNotStandaloneHandler() argument
1730 if (parser != NULL) in XML_SetNotStandaloneHandler()
1731 parser->m_notStandaloneHandler = handler; in XML_SetNotStandaloneHandler()
1735 XML_SetExternalEntityRefHandler(XML_Parser parser, in XML_SetExternalEntityRefHandler() argument
1737 if (parser != NULL) in XML_SetExternalEntityRefHandler()
1738 parser->m_externalEntityRefHandler = handler; in XML_SetExternalEntityRefHandler()
1742 XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg) { in XML_SetExternalEntityRefHandlerArg() argument
1743 if (parser == NULL) in XML_SetExternalEntityRefHandlerArg()
1746 parser->m_externalEntityRefHandlerArg = (XML_Parser)arg; in XML_SetExternalEntityRefHandlerArg()
1748 parser->m_externalEntityRefHandlerArg = parser; in XML_SetExternalEntityRefHandlerArg()
1752 XML_SetSkippedEntityHandler(XML_Parser parser, in XML_SetSkippedEntityHandler() argument
1754 if (parser != NULL) in XML_SetSkippedEntityHandler()
1755 parser->m_skippedEntityHandler = handler; in XML_SetSkippedEntityHandler()
1759 XML_SetUnknownEncodingHandler(XML_Parser parser, in XML_SetUnknownEncodingHandler() argument
1761 if (parser == NULL) in XML_SetUnknownEncodingHandler()
1763 parser->m_unknownEncodingHandler = handler; in XML_SetUnknownEncodingHandler()
1764 parser->m_unknownEncodingHandlerData = data; in XML_SetUnknownEncodingHandler()
1768 XML_SetElementDeclHandler(XML_Parser parser, XML_ElementDeclHandler eldecl) { in XML_SetElementDeclHandler() argument
1769 if (parser != NULL) in XML_SetElementDeclHandler()
1770 parser->m_elementDeclHandler = eldecl; in XML_SetElementDeclHandler()
1774 XML_SetAttlistDeclHandler(XML_Parser parser, XML_AttlistDeclHandler attdecl) { in XML_SetAttlistDeclHandler() argument
1775 if (parser != NULL) in XML_SetAttlistDeclHandler()
1776 parser->m_attlistDeclHandler = attdecl; in XML_SetAttlistDeclHandler()
1780 XML_SetEntityDeclHandler(XML_Parser parser, XML_EntityDeclHandler handler) { in XML_SetEntityDeclHandler() argument
1781 if (parser != NULL) in XML_SetEntityDeclHandler()
1782 parser->m_entityDeclHandler = handler; in XML_SetEntityDeclHandler()
1786 XML_SetXmlDeclHandler(XML_Parser parser, XML_XmlDeclHandler handler) { in XML_SetXmlDeclHandler() argument
1787 if (parser != NULL) in XML_SetXmlDeclHandler()
1788 parser->m_xmlDeclHandler = handler; in XML_SetXmlDeclHandler()
1792 XML_SetParamEntityParsing(XML_Parser parser, in XML_SetParamEntityParsing() argument
1794 if (parser == NULL) in XML_SetParamEntityParsing()
1797 if (parser->m_parsingStatus.parsing == XML_PARSING in XML_SetParamEntityParsing()
1798 || parser->m_parsingStatus.parsing == XML_SUSPENDED) in XML_SetParamEntityParsing()
1801 parser->m_paramEntityParsing = peParsing; in XML_SetParamEntityParsing()
1809 XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt) { in XML_SetHashSalt() argument
1810 if (parser == NULL) in XML_SetHashSalt()
1812 if (parser->m_parentParser) in XML_SetHashSalt()
1813 return XML_SetHashSalt(parser->m_parentParser, hash_salt); in XML_SetHashSalt()
1815 if (parser->m_parsingStatus.parsing == XML_PARSING in XML_SetHashSalt()
1816 || parser->m_parsingStatus.parsing == XML_SUSPENDED) in XML_SetHashSalt()
1818 parser->m_hash_secret_salt = hash_salt; in XML_SetHashSalt()
1823 XML_Parse(XML_Parser parser, const char *s, int len, int isFinal) { in XML_Parse() argument
1824 if ((parser == NULL) || (len < 0) || ((s == NULL) && (len != 0))) { in XML_Parse()
1825 if (parser != NULL) in XML_Parse()
1826 parser->m_errorCode = XML_ERROR_INVALID_ARGUMENT; in XML_Parse()
1829 switch (parser->m_parsingStatus.parsing) { in XML_Parse()
1831 parser->m_errorCode = XML_ERROR_SUSPENDED; in XML_Parse()
1834 parser->m_errorCode = XML_ERROR_FINISHED; in XML_Parse()
1837 if (parser->m_parentParser == NULL && ! startParsing(parser)) { in XML_Parse()
1838 parser->m_errorCode = XML_ERROR_NO_MEMORY; in XML_Parse()
1843 parser->m_parsingStatus.parsing = XML_PARSING; in XML_Parse()
1847 parser->m_parsingStatus.finalBuffer = (XML_Bool)isFinal; in XML_Parse()
1850 parser->m_positionPtr = parser->m_bufferPtr; in XML_Parse()
1851 parser->m_parseEndPtr = parser->m_bufferEnd; in XML_Parse()
1857 parser->m_errorCode in XML_Parse()
1858 = parser->m_processor(parser, parser->m_bufferPtr, in XML_Parse()
1859 parser->m_parseEndPtr, &parser->m_bufferPtr); in XML_Parse()
1861 if (parser->m_errorCode == XML_ERROR_NONE) { in XML_Parse()
1862 switch (parser->m_parsingStatus.parsing) { in XML_Parse()
1876 XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, in XML_Parse()
1877 parser->m_bufferPtr, &parser->m_position); in XML_Parse()
1878 parser->m_positionPtr = parser->m_bufferPtr; in XML_Parse()
1883 parser->m_parsingStatus.parsing = XML_FINISHED; in XML_Parse()
1889 parser->m_eventEndPtr = parser->m_eventPtr; in XML_Parse()
1890 parser->m_processor = errorProcessor; in XML_Parse()
1894 else if (parser->m_bufferPtr == parser->m_bufferEnd) { in XML_Parse()
1899 if ((XML_Size)len > ((XML_Size)-1) / 2 - parser->m_parseEndByteIndex) { in XML_Parse()
1900 parser->m_errorCode = XML_ERROR_NO_MEMORY; in XML_Parse()
1901 parser->m_eventPtr = parser->m_eventEndPtr = NULL; in XML_Parse()
1902 parser->m_processor = errorProcessor; in XML_Parse()
1905 parser->m_parseEndByteIndex += len; in XML_Parse()
1906 parser->m_positionPtr = s; in XML_Parse()
1907 parser->m_parsingStatus.finalBuffer = (XML_Bool)isFinal; in XML_Parse()
1909 parser->m_errorCode in XML_Parse()
1910 = parser->m_processor(parser, s, parser->m_parseEndPtr = s + len, &end); in XML_Parse()
1912 if (parser->m_errorCode != XML_ERROR_NONE) { in XML_Parse()
1913 parser->m_eventEndPtr = parser->m_eventPtr; in XML_Parse()
1914 parser->m_processor = errorProcessor; in XML_Parse()
1917 switch (parser->m_parsingStatus.parsing) { in XML_Parse()
1924 parser->m_parsingStatus.parsing = XML_FINISHED; in XML_Parse()
1933 XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, end, in XML_Parse()
1934 &parser->m_position); in XML_Parse()
1937 if (parser->m_buffer == NULL in XML_Parse()
1938 || nLeftOver > parser->m_bufferLim - parser->m_buffer) { in XML_Parse()
1943 temp = (char *)REALLOC(parser, parser->m_buffer, bytesToAllocate); in XML_Parse()
1946 parser->m_errorCode = XML_ERROR_NO_MEMORY; in XML_Parse()
1947 parser->m_eventPtr = parser->m_eventEndPtr = NULL; in XML_Parse()
1948 parser->m_processor = errorProcessor; in XML_Parse()
1951 parser->m_buffer = temp; in XML_Parse()
1952 parser->m_bufferLim = parser->m_buffer + bytesToAllocate; in XML_Parse()
1954 memcpy(parser->m_buffer, end, nLeftOver); in XML_Parse()
1956 parser->m_bufferPtr = parser->m_buffer; in XML_Parse()
1957 parser->m_bufferEnd = parser->m_buffer + nLeftOver; in XML_Parse()
1958 parser->m_positionPtr = parser->m_bufferPtr; in XML_Parse()
1959 parser->m_parseEndPtr = parser->m_bufferEnd; in XML_Parse()
1960 parser->m_eventPtr = parser->m_bufferPtr; in XML_Parse()
1961 parser->m_eventEndPtr = parser->m_bufferPtr; in XML_Parse()
1966 void *buff = XML_GetBuffer(parser, len); in XML_Parse()
1971 return XML_ParseBuffer(parser, len, isFinal); in XML_Parse()
1977 XML_ParseBuffer(XML_Parser parser, int len, int isFinal) { in XML_ParseBuffer() argument
1981 if (parser == NULL) in XML_ParseBuffer()
1983 switch (parser->m_parsingStatus.parsing) { in XML_ParseBuffer()
1985 parser->m_errorCode = XML_ERROR_SUSPENDED; in XML_ParseBuffer()
1988 parser->m_errorCode = XML_ERROR_FINISHED; in XML_ParseBuffer()
1992 if (! parser->m_bufferPtr) { in XML_ParseBuffer()
1993 parser->m_errorCode = XML_ERROR_NO_BUFFER; in XML_ParseBuffer()
1997 if (parser->m_parentParser == NULL && ! startParsing(parser)) { in XML_ParseBuffer()
1998 parser->m_errorCode = XML_ERROR_NO_MEMORY; in XML_ParseBuffer()
2003 parser->m_parsingStatus.parsing = XML_PARSING; in XML_ParseBuffer()
2006 start = parser->m_bufferPtr; in XML_ParseBuffer()
2007 parser->m_positionPtr = start; in XML_ParseBuffer()
2008 parser->m_bufferEnd += len; in XML_ParseBuffer()
2009 parser->m_parseEndPtr = parser->m_bufferEnd; in XML_ParseBuffer()
2010 parser->m_parseEndByteIndex += len; in XML_ParseBuffer()
2011 parser->m_parsingStatus.finalBuffer = (XML_Bool)isFinal; in XML_ParseBuffer()
2013 parser->m_errorCode = parser->m_processor( in XML_ParseBuffer()
2014 parser, start, parser->m_parseEndPtr, &parser->m_bufferPtr); in XML_ParseBuffer()
2016 if (parser->m_errorCode != XML_ERROR_NONE) { in XML_ParseBuffer()
2017 parser->m_eventEndPtr = parser->m_eventPtr; in XML_ParseBuffer()
2018 parser->m_processor = errorProcessor; in XML_ParseBuffer()
2021 switch (parser->m_parsingStatus.parsing) { in XML_ParseBuffer()
2028 parser->m_parsingStatus.parsing = XML_FINISHED; in XML_ParseBuffer()
2035 XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, in XML_ParseBuffer()
2036 parser->m_bufferPtr, &parser->m_position); in XML_ParseBuffer()
2037 parser->m_positionPtr = parser->m_bufferPtr; in XML_ParseBuffer()
2042 XML_GetBuffer(XML_Parser parser, int len) { in XML_GetBuffer() argument
2043 if (parser == NULL) in XML_GetBuffer()
2046 parser->m_errorCode = XML_ERROR_NO_MEMORY; in XML_GetBuffer()
2049 switch (parser->m_parsingStatus.parsing) { in XML_GetBuffer()
2051 parser->m_errorCode = XML_ERROR_SUSPENDED; in XML_GetBuffer()
2054 parser->m_errorCode = XML_ERROR_FINISHED; in XML_GetBuffer()
2059 if (len > EXPAT_SAFE_PTR_DIFF(parser->m_bufferLim, parser->m_bufferEnd)) { in XML_GetBuffer()
2066 parser->m_bufferEnd, parser->m_bufferPtr)); in XML_GetBuffer()
2068 parser->m_errorCode = XML_ERROR_NO_MEMORY; in XML_GetBuffer()
2072 keep = (int)EXPAT_SAFE_PTR_DIFF(parser->m_bufferPtr, parser->m_buffer); in XML_GetBuffer()
2077 parser->m_errorCode = XML_ERROR_NO_MEMORY; in XML_GetBuffer()
2083 <= EXPAT_SAFE_PTR_DIFF(parser->m_bufferLim, parser->m_buffer)) { in XML_GetBuffer()
2085 if (keep < EXPAT_SAFE_PTR_DIFF(parser->m_bufferPtr, parser->m_buffer)) { in XML_GetBuffer()
2087 = (int)EXPAT_SAFE_PTR_DIFF(parser->m_bufferPtr, parser->m_buffer) in XML_GetBuffer()
2091 memmove(parser->m_buffer, &parser->m_buffer[offset], in XML_GetBuffer()
2092 parser->m_bufferEnd - parser->m_bufferPtr + keep); in XML_GetBuffer()
2093 parser->m_bufferEnd -= offset; in XML_GetBuffer()
2094 parser->m_bufferPtr -= offset; in XML_GetBuffer()
2097 if (parser->m_buffer && parser->m_bufferPtr) { in XML_GetBuffer()
2098 memmove(parser->m_buffer, parser->m_bufferPtr, in XML_GetBuffer()
2099 EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr)); in XML_GetBuffer()
2100 parser->m_bufferEnd in XML_GetBuffer()
2101 = parser->m_buffer in XML_GetBuffer()
2102 + EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr); in XML_GetBuffer()
2103 parser->m_bufferPtr = parser->m_buffer; in XML_GetBuffer()
2109 = (int)EXPAT_SAFE_PTR_DIFF(parser->m_bufferLim, parser->m_bufferPtr); in XML_GetBuffer()
2117 parser->m_errorCode = XML_ERROR_NO_MEMORY; in XML_GetBuffer()
2120 newBuf = (char *)MALLOC(parser, bufferSize); in XML_GetBuffer()
2122 parser->m_errorCode = XML_ERROR_NO_MEMORY; in XML_GetBuffer()
2125 parser->m_bufferLim = newBuf + bufferSize; in XML_GetBuffer()
2127 if (parser->m_bufferPtr) { in XML_GetBuffer()
2128 memcpy(newBuf, &parser->m_bufferPtr[-keep], in XML_GetBuffer()
2129 EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr) in XML_GetBuffer()
2131 FREE(parser, parser->m_buffer); in XML_GetBuffer()
2132 parser->m_buffer = newBuf; in XML_GetBuffer()
2133 parser->m_bufferEnd in XML_GetBuffer()
2134 = parser->m_buffer in XML_GetBuffer()
2135 + EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr) in XML_GetBuffer()
2137 parser->m_bufferPtr = parser->m_buffer + keep; in XML_GetBuffer()
2140 parser->m_bufferEnd = newBuf; in XML_GetBuffer()
2141 parser->m_bufferPtr = parser->m_buffer = newBuf; in XML_GetBuffer()
2144 if (parser->m_bufferPtr) { in XML_GetBuffer()
2145 memcpy(newBuf, parser->m_bufferPtr, in XML_GetBuffer()
2146 EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr)); in XML_GetBuffer()
2147 FREE(parser, parser->m_buffer); in XML_GetBuffer()
2148 parser->m_bufferEnd in XML_GetBuffer()
2150 + EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr); in XML_GetBuffer()
2153 parser->m_bufferEnd = newBuf; in XML_GetBuffer()
2155 parser->m_bufferPtr = parser->m_buffer = newBuf; in XML_GetBuffer()
2158 parser->m_eventPtr = parser->m_eventEndPtr = NULL; in XML_GetBuffer()
2159 parser->m_positionPtr = NULL; in XML_GetBuffer()
2161 return parser->m_bufferEnd; in XML_GetBuffer()
2165 XML_StopParser(XML_Parser parser, XML_Bool resumable) { in XML_StopParser() argument
2166 if (parser == NULL) in XML_StopParser()
2168 switch (parser->m_parsingStatus.parsing) { in XML_StopParser()
2171 parser->m_errorCode = XML_ERROR_SUSPENDED; in XML_StopParser()
2174 parser->m_parsingStatus.parsing = XML_FINISHED; in XML_StopParser()
2177 parser->m_errorCode = XML_ERROR_FINISHED; in XML_StopParser()
2182 if (parser->m_isParamEntity) { in XML_StopParser()
2183 parser->m_errorCode = XML_ERROR_SUSPEND_PE; in XML_StopParser()
2187 parser->m_parsingStatus.parsing = XML_SUSPENDED; in XML_StopParser()
2189 parser->m_parsingStatus.parsing = XML_FINISHED; in XML_StopParser()
2195 XML_ResumeParser(XML_Parser parser) { in XML_ResumeParser() argument
2198 if (parser == NULL) in XML_ResumeParser()
2200 if (parser->m_parsingStatus.parsing != XML_SUSPENDED) { in XML_ResumeParser()
2201 parser->m_errorCode = XML_ERROR_NOT_SUSPENDED; in XML_ResumeParser()
2204 parser->m_parsingStatus.parsing = XML_PARSING; in XML_ResumeParser()
2206 parser->m_errorCode = parser->m_processor( in XML_ResumeParser()
2207 parser, parser->m_bufferPtr, parser->m_parseEndPtr, &parser->m_bufferPtr); in XML_ResumeParser()
2209 if (parser->m_errorCode != XML_ERROR_NONE) { in XML_ResumeParser()
2210 parser->m_eventEndPtr = parser->m_eventPtr; in XML_ResumeParser()
2211 parser->m_processor = errorProcessor; in XML_ResumeParser()
2214 switch (parser->m_parsingStatus.parsing) { in XML_ResumeParser()
2220 if (parser->m_parsingStatus.finalBuffer) { in XML_ResumeParser()
2221 parser->m_parsingStatus.parsing = XML_FINISHED; in XML_ResumeParser()
2228 XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, in XML_ResumeParser()
2229 parser->m_bufferPtr, &parser->m_position); in XML_ResumeParser()
2230 parser->m_positionPtr = parser->m_bufferPtr; in XML_ResumeParser()
2235 XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status) { in XML_GetParsingStatus() argument
2236 if (parser == NULL) in XML_GetParsingStatus()
2239 *status = parser->m_parsingStatus; in XML_GetParsingStatus()
2243 XML_GetErrorCode(XML_Parser parser) { in XML_GetErrorCode() argument
2244 if (parser == NULL) in XML_GetErrorCode()
2246 return parser->m_errorCode; in XML_GetErrorCode()
2250 XML_GetCurrentByteIndex(XML_Parser parser) { in XML_GetCurrentByteIndex() argument
2251 if (parser == NULL) in XML_GetCurrentByteIndex()
2253 if (parser->m_eventPtr) in XML_GetCurrentByteIndex()
2254 return (XML_Index)(parser->m_parseEndByteIndex in XML_GetCurrentByteIndex()
2255 - (parser->m_parseEndPtr - parser->m_eventPtr)); in XML_GetCurrentByteIndex()
2260 XML_GetCurrentByteCount(XML_Parser parser) { in XML_GetCurrentByteCount() argument
2261 if (parser == NULL) in XML_GetCurrentByteCount()
2263 if (parser->m_eventEndPtr && parser->m_eventPtr) in XML_GetCurrentByteCount()
2264 return (int)(parser->m_eventEndPtr - parser->m_eventPtr); in XML_GetCurrentByteCount()
2269 XML_GetInputContext(XML_Parser parser, int *offset, int *size) { in XML_GetInputContext() argument
2271 if (parser == NULL) in XML_GetInputContext()
2273 if (parser->m_eventPtr && parser->m_buffer) { in XML_GetInputContext()
2275 *offset = (int)(parser->m_eventPtr - parser->m_buffer); in XML_GetInputContext()
2277 *size = (int)(parser->m_bufferEnd - parser->m_buffer); in XML_GetInputContext()
2278 return parser->m_buffer; in XML_GetInputContext()
2281 (void)parser; in XML_GetInputContext()
2289 XML_GetCurrentLineNumber(XML_Parser parser) { in XML_GetCurrentLineNumber() argument
2290 if (parser == NULL) in XML_GetCurrentLineNumber()
2292 if (parser->m_eventPtr && parser->m_eventPtr >= parser->m_positionPtr) { in XML_GetCurrentLineNumber()
2293 XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, in XML_GetCurrentLineNumber()
2294 parser->m_eventPtr, &parser->m_position); in XML_GetCurrentLineNumber()
2295 parser->m_positionPtr = parser->m_eventPtr; in XML_GetCurrentLineNumber()
2297 return parser->m_position.lineNumber + 1; in XML_GetCurrentLineNumber()
2301 XML_GetCurrentColumnNumber(XML_Parser parser) { in XML_GetCurrentColumnNumber() argument
2302 if (parser == NULL) in XML_GetCurrentColumnNumber()
2304 if (parser->m_eventPtr && parser->m_eventPtr >= parser->m_positionPtr) { in XML_GetCurrentColumnNumber()
2305 XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, in XML_GetCurrentColumnNumber()
2306 parser->m_eventPtr, &parser->m_position); in XML_GetCurrentColumnNumber()
2307 parser->m_positionPtr = parser->m_eventPtr; in XML_GetCurrentColumnNumber()
2309 return parser->m_position.columnNumber; in XML_GetCurrentColumnNumber()
2313 XML_FreeContentModel(XML_Parser parser, XML_Content *model) { in XML_FreeContentModel() argument
2314 if (parser != NULL) in XML_FreeContentModel()
2315 FREE(parser, model); in XML_FreeContentModel()
2319 XML_MemMalloc(XML_Parser parser, size_t size) { in XML_MemMalloc() argument
2320 if (parser == NULL) in XML_MemMalloc()
2322 return MALLOC(parser, size); in XML_MemMalloc()
2326 XML_MemRealloc(XML_Parser parser, void *ptr, size_t size) { in XML_MemRealloc() argument
2327 if (parser == NULL) in XML_MemRealloc()
2329 return REALLOC(parser, ptr, size); in XML_MemRealloc()
2333 XML_MemFree(XML_Parser parser, void *ptr) { in XML_MemFree() argument
2334 if (parser != NULL) in XML_MemFree()
2335 FREE(parser, ptr); in XML_MemFree()
2339 XML_DefaultCurrent(XML_Parser parser) { in XML_DefaultCurrent() argument
2340 if (parser == NULL) in XML_DefaultCurrent()
2342 if (parser->m_defaultHandler) { in XML_DefaultCurrent()
2343 if (parser->m_openInternalEntities) in XML_DefaultCurrent()
2344 reportDefault(parser, parser->m_internalEncoding, in XML_DefaultCurrent()
2345 parser->m_openInternalEntities->internalEventPtr, in XML_DefaultCurrent()
2346 parser->m_openInternalEntities->internalEventEndPtr); in XML_DefaultCurrent()
2348 reportDefault(parser, parser->m_encoding, parser->m_eventPtr, in XML_DefaultCurrent()
2349 parser->m_eventEndPtr); in XML_DefaultCurrent()
2403 return XML_L("unexpected parser state - please send a bug report"); in XML_ErrorString()
2425 return XML_L("parser suspended"); in XML_ErrorString()
2427 return XML_L("parser not suspended"); in XML_ErrorString()
2538 XML_Parser parser, float maximumAmplificationFactor) { in XML_SetBillionLaughsAttackProtectionMaximumAmplification() argument
2539 if ((parser == NULL) || (parser->m_parentParser != NULL) in XML_SetBillionLaughsAttackProtectionMaximumAmplification()
2544 parser->m_accounting.maximumAmplificationFactor = maximumAmplificationFactor; in XML_SetBillionLaughsAttackProtectionMaximumAmplification()
2550 XML_Parser parser, unsigned long long activationThresholdBytes) { in XML_SetBillionLaughsAttackProtectionActivationThreshold() argument
2551 if ((parser == NULL) || (parser->m_parentParser != NULL)) { in XML_SetBillionLaughsAttackProtectionActivationThreshold()
2554 parser->m_accounting.activationThresholdBytes = activationThresholdBytes; in XML_SetBillionLaughsAttackProtectionActivationThreshold()
2565 storeRawNames(XML_Parser parser) { in storeRawNames() argument
2566 TAG *tag = parser->m_tagStack; in storeRawNames()
2588 char *temp = (char *)REALLOC(parser, tag->buf, bufSize); in storeRawNames()
2614 contentProcessor(XML_Parser parser, const char *start, const char *end, in contentProcessor() argument
2617 parser, 0, parser->m_encoding, start, end, endPtr, in contentProcessor()
2618 (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_ACCOUNT_DIRECT); in contentProcessor()
2620 if (! storeRawNames(parser)) in contentProcessor()
2627 externalEntityInitProcessor(XML_Parser parser, const char *start, in externalEntityInitProcessor() argument
2629 enum XML_Error result = initializeEncoding(parser); in externalEntityInitProcessor()
2632 parser->m_processor = externalEntityInitProcessor2; in externalEntityInitProcessor()
2633 return externalEntityInitProcessor2(parser, start, end, endPtr); in externalEntityInitProcessor()
2637 externalEntityInitProcessor2(XML_Parser parser, const char *start, in externalEntityInitProcessor2() argument
2640 int tok = XmlContentTok(parser->m_encoding, start, end, &next); in externalEntityInitProcessor2()
2644 if (! accountingDiffTolerated(parser, tok, start, next, __LINE__, in externalEntityInitProcessor2()
2646 accountingOnAbort(parser); in externalEntityInitProcessor2()
2656 if (next == end && ! parser->m_parsingStatus.finalBuffer) { in externalEntityInitProcessor2()
2663 if (! parser->m_parsingStatus.finalBuffer) { in externalEntityInitProcessor2()
2667 parser->m_eventPtr = start; in externalEntityInitProcessor2()
2670 if (! parser->m_parsingStatus.finalBuffer) { in externalEntityInitProcessor2()
2674 parser->m_eventPtr = start; in externalEntityInitProcessor2()
2677 parser->m_processor = externalEntityInitProcessor3; in externalEntityInitProcessor2()
2678 return externalEntityInitProcessor3(parser, start, end, endPtr); in externalEntityInitProcessor2()
2682 externalEntityInitProcessor3(XML_Parser parser, const char *start, in externalEntityInitProcessor3() argument
2686 parser->m_eventPtr = start; in externalEntityInitProcessor3()
2687 tok = XmlContentTok(parser->m_encoding, start, end, &next); in externalEntityInitProcessor3()
2692 parser->m_eventEndPtr = next; in externalEntityInitProcessor3()
2697 result = processXmlDecl(parser, 1, start, next); in externalEntityInitProcessor3()
2700 switch (parser->m_parsingStatus.parsing) { in externalEntityInitProcessor3()
2711 if (! parser->m_parsingStatus.finalBuffer) { in externalEntityInitProcessor3()
2717 if (! parser->m_parsingStatus.finalBuffer) { in externalEntityInitProcessor3()
2723 parser->m_processor = externalEntityContentProcessor; in externalEntityInitProcessor3()
2724 parser->m_tagLevel = 1; in externalEntityInitProcessor3()
2725 return externalEntityContentProcessor(parser, start, end, endPtr); in externalEntityInitProcessor3()
2729 externalEntityContentProcessor(XML_Parser parser, const char *start, in externalEntityContentProcessor() argument
2732 = doContent(parser, 1, parser->m_encoding, start, end, endPtr, in externalEntityContentProcessor()
2733 (XML_Bool)! parser->m_parsingStatus.finalBuffer, in externalEntityContentProcessor()
2736 if (! storeRawNames(parser)) in externalEntityContentProcessor()
2743 doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc, in doContent() argument
2747 DTD *const dtd = parser->m_dtd; in doContent()
2751 if (enc == parser->m_encoding) { in doContent()
2752 eventPP = &parser->m_eventPtr; in doContent()
2753 eventEndPP = &parser->m_eventEndPtr; in doContent()
2755 eventPP = &(parser->m_openInternalEntities->internalEventPtr); in doContent()
2756 eventEndPP = &(parser->m_openInternalEntities->internalEventEndPtr); in doContent()
2768 if (! accountingDiffTolerated(parser, tok, s, accountAfter, __LINE__, in doContent()
2770 accountingOnAbort(parser); in doContent()
2782 if (parser->m_characterDataHandler) { in doContent()
2784 parser->m_characterDataHandler(parser->m_handlerArg, &c, 1); in doContent()
2785 } else if (parser->m_defaultHandler) in doContent()
2786 reportDefault(parser, enc, s, end); in doContent()
2792 if (parser->m_tagLevel != startTagLevel) in doContent()
2802 if (parser->m_tagLevel != startTagLevel) in doContent()
2833 accountingDiffTolerated(parser, tok, (char *)&ch, in doContent()
2837 if (parser->m_characterDataHandler) in doContent()
2838 parser->m_characterDataHandler(parser->m_handlerArg, &ch, 1); in doContent()
2839 else if (parser->m_defaultHandler) in doContent()
2840 reportDefault(parser, enc, s, next); in doContent()
2847 entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0); in doContent()
2859 if (parser->m_skippedEntityHandler) in doContent()
2860 parser->m_skippedEntityHandler(parser->m_handlerArg, name, 0); in doContent()
2861 else if (parser->m_defaultHandler) in doContent()
2862 reportDefault(parser, enc, s, next); in doContent()
2871 if (! parser->m_defaultExpandInternalEntities) { in doContent()
2872 if (parser->m_skippedEntityHandler) in doContent()
2873 parser->m_skippedEntityHandler(parser->m_handlerArg, entity->name, in doContent()
2875 else if (parser->m_defaultHandler) in doContent()
2876 reportDefault(parser, enc, s, next); in doContent()
2879 result = processInternalEntity(parser, entity, XML_FALSE); in doContent()
2882 } else if (parser->m_externalEntityRefHandler) { in doContent()
2885 context = getContext(parser); in doContent()
2889 if (! parser->m_externalEntityRefHandler( in doContent()
2890 parser->m_externalEntityRefHandlerArg, context, entity->base, in doContent()
2893 poolDiscard(&parser->m_tempPool); in doContent()
2894 } else if (parser->m_defaultHandler) in doContent()
2895 reportDefault(parser, enc, s, next); in doContent()
2904 if (parser->m_freeTagList) { in doContent()
2905 tag = parser->m_freeTagList; in doContent()
2906 parser->m_freeTagList = parser->m_freeTagList->parent; in doContent()
2908 tag = (TAG *)MALLOC(parser, sizeof(TAG)); in doContent()
2911 tag->buf = (char *)MALLOC(parser, INIT_TAG_BUF_SIZE); in doContent()
2913 FREE(parser, tag); in doContent()
2919 tag->parent = parser->m_tagStack; in doContent()
2920 parser->m_tagStack = tag; in doContent()
2925 ++parser->m_tagLevel; in doContent()
2944 char *temp = (char *)REALLOC(parser, tag->buf, bufSize); in doContent()
2956 = storeAtts(parser, enc, s, &(tag->name), &(tag->bindings), account); in doContent()
2959 if (parser->m_startElementHandler) in doContent()
2960 parser->m_startElementHandler(parser->m_handlerArg, tag->name.str, in doContent()
2961 (const XML_Char **)parser->m_atts); in doContent()
2962 else if (parser->m_defaultHandler) in doContent()
2963 reportDefault(parser, enc, s, next); in doContent()
2964 poolClear(&parser->m_tempPool); in doContent()
2975 name.str = poolStoreString(&parser->m_tempPool, enc, rawName, in doContent()
2979 poolFinish(&parser->m_tempPool); in doContent()
2980 result = storeAtts(parser, enc, s, &name, &bindings, in doContent()
2983 freeBindings(parser, bindings); in doContent()
2986 poolFinish(&parser->m_tempPool); in doContent()
2987 if (parser->m_startElementHandler) { in doContent()
2988 parser->m_startElementHandler(parser->m_handlerArg, name.str, in doContent()
2989 (const XML_Char **)parser->m_atts); in doContent()
2992 if (parser->m_endElementHandler) { in doContent()
2993 if (parser->m_startElementHandler) in doContent()
2995 parser->m_endElementHandler(parser->m_handlerArg, name.str); in doContent()
2998 if (noElmHandlers && parser->m_defaultHandler) in doContent()
2999 reportDefault(parser, enc, s, next); in doContent()
3000 poolClear(&parser->m_tempPool); in doContent()
3001 freeBindings(parser, bindings); in doContent()
3003 if ((parser->m_tagLevel == 0) in doContent()
3004 && (parser->m_parsingStatus.parsing != XML_FINISHED)) { in doContent()
3005 if (parser->m_parsingStatus.parsing == XML_SUSPENDED) in doContent()
3006 parser->m_processor = epilogProcessor; in doContent()
3008 return epilogProcessor(parser, next, end, nextPtr); in doContent()
3012 if (parser->m_tagLevel == startTagLevel) in doContent()
3017 TAG *tag = parser->m_tagStack; in doContent()
3018 parser->m_tagStack = tag->parent; in doContent()
3019 tag->parent = parser->m_freeTagList; in doContent()
3020 parser->m_freeTagList = tag; in doContent()
3028 --parser->m_tagLevel; in doContent()
3029 if (parser->m_endElementHandler) { in doContent()
3034 if (parser->m_ns && localPart) { in doContent()
3044 if (parser->m_ns_triplets && prefix) { in doContent()
3045 *uri++ = parser->m_namespaceSeparator; in doContent()
3051 parser->m_endElementHandler(parser->m_handlerArg, tag->name.str); in doContent()
3052 } else if (parser->m_defaultHandler) in doContent()
3053 reportDefault(parser, enc, s, next); in doContent()
3056 if (parser->m_endNamespaceDeclHandler) in doContent()
3057 parser->m_endNamespaceDeclHandler(parser->m_handlerArg, in doContent()
3060 b->nextTagBinding = parser->m_freeBindingList; in doContent()
3061 parser->m_freeBindingList = b; in doContent()
3064 if ((parser->m_tagLevel == 0) in doContent()
3065 && (parser->m_parsingStatus.parsing != XML_FINISHED)) { in doContent()
3066 if (parser->m_parsingStatus.parsing == XML_SUSPENDED) in doContent()
3067 parser->m_processor = epilogProcessor; in doContent()
3069 return epilogProcessor(parser, next, end, nextPtr); in doContent()
3077 if (parser->m_characterDataHandler) { in doContent()
3079 parser->m_characterDataHandler(parser->m_handlerArg, buf, in doContent()
3081 } else if (parser->m_defaultHandler) in doContent()
3082 reportDefault(parser, enc, s, next); in doContent()
3087 if (parser->m_characterDataHandler) { in doContent()
3089 parser->m_characterDataHandler(parser->m_handlerArg, &c, 1); in doContent()
3090 } else if (parser->m_defaultHandler) in doContent()
3091 reportDefault(parser, enc, s, next); in doContent()
3095 if (parser->m_startCdataSectionHandler) in doContent()
3096 parser->m_startCdataSectionHandler(parser->m_handlerArg); in doContent()
3110 else if (0 && parser->m_characterDataHandler) in doContent()
3111 parser->m_characterDataHandler(parser->m_handlerArg, parser->m_dataBuf, in doContent()
3114 else if (parser->m_defaultHandler) in doContent()
3115 reportDefault(parser, enc, s, next); in doContent()
3117 = doCdataSection(parser, enc, &next, end, nextPtr, haveMore, account); in doContent()
3121 parser->m_processor = cdataSectionProcessor; in doContent()
3130 if (parser->m_characterDataHandler) { in doContent()
3132 ICHAR *dataPtr = (ICHAR *)parser->m_dataBuf; in doContent()
3133 XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)parser->m_dataBufEnd); in doContent()
3134 parser->m_characterDataHandler( in doContent()
3135 parser->m_handlerArg, parser->m_dataBuf, in doContent()
3136 (int)(dataPtr - (ICHAR *)parser->m_dataBuf)); in doContent()
3138 parser->m_characterDataHandler( in doContent()
3139 parser->m_handlerArg, (XML_Char *)s, in doContent()
3141 } else if (parser->m_defaultHandler) in doContent()
3142 reportDefault(parser, enc, s, end); in doContent()
3150 if (parser->m_tagLevel != startTagLevel) { in doContent()
3157 XML_CharacterDataHandler charDataHandler = parser->m_characterDataHandler; in doContent()
3161 ICHAR *dataPtr = (ICHAR *)parser->m_dataBuf; in doContent()
3163 enc, &s, next, &dataPtr, (ICHAR *)parser->m_dataBufEnd); in doContent()
3165 charDataHandler(parser->m_handlerArg, parser->m_dataBuf, in doContent()
3166 (int)(dataPtr - (ICHAR *)parser->m_dataBuf)); in doContent()
3173 charDataHandler(parser->m_handlerArg, (XML_Char *)s, in doContent()
3175 } else if (parser->m_defaultHandler) in doContent()
3176 reportDefault(parser, enc, s, next); in doContent()
3179 if (! reportProcessingInstruction(parser, enc, s, next)) in doContent()
3183 if (! reportComment(parser, enc, s, next)) in doContent()
3194 if (parser->m_defaultHandler) in doContent()
3195 reportDefault(parser, enc, s, next); in doContent()
3200 switch (parser->m_parsingStatus.parsing) { in doContent()
3213 * moving it to the parser's m_freeBindingList where it can be freed or
3217 freeBindings(XML_Parser parser, BINDING *bindings) { in freeBindings() argument
3224 if (parser->m_endNamespaceDeclHandler) in freeBindings()
3225 parser->m_endNamespaceDeclHandler(parser->m_handlerArg, b->prefix->name); in freeBindings()
3228 b->nextTagBinding = parser->m_freeBindingList; in freeBindings()
3229 parser->m_freeBindingList = b; in freeBindings()
3245 storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, in storeAtts() argument
3248 DTD *const dtd = parser->m_dtd; /* save one level of indirection */ in storeAtts()
3263 = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, tagNamePtr->str, 0); in storeAtts()
3268 elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, name, in storeAtts()
3272 if (parser->m_ns && ! setElementTypePrefix(parser, elementType)) in storeAtts()
3278 n = XmlGetAttributes(enc, attStr, parser->m_attsSize, parser->m_atts); in storeAtts()
3285 if (n + nDefaultAtts > parser->m_attsSize) { in storeAtts()
3286 int oldAttsSize = parser->m_attsSize; in storeAtts()
3298 parser->m_attsSize = n + nDefaultAtts + INIT_ATTS_SIZE; in storeAtts()
3305 if ((unsigned)parser->m_attsSize > (size_t)(-1) / sizeof(ATTRIBUTE)) { in storeAtts()
3306 parser->m_attsSize = oldAttsSize; in storeAtts()
3311 temp = (ATTRIBUTE *)REALLOC(parser, (void *)parser->m_atts, in storeAtts()
3312 parser->m_attsSize * sizeof(ATTRIBUTE)); in storeAtts()
3314 parser->m_attsSize = oldAttsSize; in storeAtts()
3317 parser->m_atts = temp; in storeAtts()
3324 if ((unsigned)parser->m_attsSize > (size_t)(-1) / sizeof(XML_AttrInfo)) { in storeAtts()
3325 parser->m_attsSize = oldAttsSize; in storeAtts()
3330 temp2 = (XML_AttrInfo *)REALLOC(parser, (void *)parser->m_attInfo, in storeAtts()
3331 parser->m_attsSize * sizeof(XML_AttrInfo)); in storeAtts()
3333 parser->m_attsSize = oldAttsSize; in storeAtts()
3336 parser->m_attInfo = temp2; in storeAtts()
3339 XmlGetAttributes(enc, attStr, n, parser->m_atts); in storeAtts()
3342 appAtts = (const XML_Char **)parser->m_atts; in storeAtts()
3344 ATTRIBUTE *currAtt = &parser->m_atts[i]; in storeAtts()
3346 XML_AttrInfo *currAttInfo = &parser->m_attInfo[i]; in storeAtts()
3350 = getAttributeId(parser, enc, currAtt->name, in storeAtts()
3356 = parser->m_parseEndByteIndex - (parser->m_parseEndPtr - currAtt->name); in storeAtts()
3359 currAttInfo->valueStart = parser->m_parseEndByteIndex in storeAtts()
3360 - (parser->m_parseEndPtr - currAtt->valuePtr); in storeAtts()
3361 currAttInfo->valueEnd = parser->m_parseEndByteIndex in storeAtts()
3362 - (parser->m_parseEndPtr - currAtt->valueEnd); in storeAtts()
3369 if (enc == parser->m_encoding) in storeAtts()
3370 parser->m_eventPtr = parser->m_atts[i].name; in storeAtts()
3375 if (! parser->m_atts[i].normalized) { in storeAtts()
3392 parser, enc, isCdata, parser->m_atts[i].valuePtr, in storeAtts()
3393 parser->m_atts[i].valueEnd, &parser->m_tempPool, account); in storeAtts()
3396 appAtts[attIndex] = poolStart(&parser->m_tempPool); in storeAtts()
3397 poolFinish(&parser->m_tempPool); in storeAtts()
3400 appAtts[attIndex] = poolStoreString(&parser->m_tempPool, enc, in storeAtts()
3401 parser->m_atts[i].valuePtr, in storeAtts()
3402 parser->m_atts[i].valueEnd); in storeAtts()
3405 poolFinish(&parser->m_tempPool); in storeAtts()
3411 enum XML_Error result = addBinding(parser, attId->prefix, attId, in storeAtts()
3427 parser->m_nSpecifiedAtts = attIndex; in storeAtts()
3431 parser->m_idAttIndex = i; in storeAtts()
3435 parser->m_idAttIndex = -1; in storeAtts()
3443 enum XML_Error result = addBinding(parser, da->id->prefix, da->id, in storeAtts()
3467 unsigned long version = parser->m_nsAttsVersion; in storeAtts()
3470 if (parser->m_nsAttsPower >= sizeof(unsigned int) * 8 /* bits per byte */) { in storeAtts()
3474 unsigned int nsAttsSize = 1u << parser->m_nsAttsPower; in storeAtts()
3475 unsigned char oldNsAttsPower = parser->m_nsAttsPower; in storeAtts()
3478 >> parser->m_nsAttsPower) { /* true for m_nsAttsPower = 0 */ in storeAtts()
3481 while (nPrefixes >> parser->m_nsAttsPower++) in storeAtts()
3483 if (parser->m_nsAttsPower < 3) in storeAtts()
3484 parser->m_nsAttsPower = 3; in storeAtts()
3487 if (parser->m_nsAttsPower >= sizeof(nsAttsSize) * 8 /* bits per byte */) { in storeAtts()
3489 parser->m_nsAttsPower = oldNsAttsPower; in storeAtts()
3493 nsAttsSize = 1u << parser->m_nsAttsPower; in storeAtts()
3502 parser->m_nsAttsPower = oldNsAttsPower; in storeAtts()
3507 temp = (NS_ATT *)REALLOC(parser, parser->m_nsAtts, in storeAtts()
3511 parser->m_nsAttsPower = oldNsAttsPower; in storeAtts()
3514 parser->m_nsAtts = temp; in storeAtts()
3521 parser->m_nsAtts[--j].version = version; in storeAtts()
3523 parser->m_nsAttsVersion = --version; in storeAtts()
3535 copy_salt_to_sipkey(parser, &sip_key); in storeAtts()
3539 id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, s, 0); in storeAtts()
3563 if (! poolAppendChar(&parser->m_tempPool, c)) in storeAtts()
3575 if (! poolAppendChar(&parser->m_tempPool, *s)) in storeAtts()
3582 Derived from code in lookup(parser, HASH_TABLE *table, ...). in storeAtts()
3587 while (parser->m_nsAtts[j].version == version) { in storeAtts()
3589 if (uriHash == parser->m_nsAtts[j].hash) { in storeAtts()
3590 const XML_Char *s1 = poolStart(&parser->m_tempPool); in storeAtts()
3591 const XML_Char *s2 = parser->m_nsAtts[j].uriName; in storeAtts()
3599 step = PROBE_STEP(uriHash, mask, parser->m_nsAttsPower); in storeAtts()
3604 if (parser->m_ns_triplets) { /* append namespace separator and prefix */ in storeAtts()
3605 parser->m_tempPool.ptr[-1] = parser->m_namespaceSeparator; in storeAtts()
3608 if (! poolAppendChar(&parser->m_tempPool, *s)) in storeAtts()
3614 s = poolStart(&parser->m_tempPool); in storeAtts()
3615 poolFinish(&parser->m_tempPool); in storeAtts()
3619 parser->m_nsAtts[j].version = version; in storeAtts()
3620 parser->m_nsAtts[j].hash = uriHash; in storeAtts()
3621 parser->m_nsAtts[j].uriName = s; in storeAtts()
3637 if (! parser->m_ns) in storeAtts()
3654 if (parser->m_ns_triplets && binding->prefix->name) { in storeAtts()
3689 uri = (XML_Char *)MALLOC(parser, (n + EXPAND_SPARE) * sizeof(XML_Char)); in storeAtts()
3694 for (p = parser->m_tagStack; p; p = p->parent) in storeAtts()
3697 FREE(parser, binding->uri); in storeAtts()
3706 *uri = parser->m_namespaceSeparator; /* replace null terminator */ in storeAtts()
3717 addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, in addBinding() argument
3776 if (parser->m_ns && (uri[len] == parser->m_namespaceSeparator)) { in addBinding()
3790 if (parser->m_namespaceSeparator) in addBinding()
3792 if (parser->m_freeBindingList) { in addBinding()
3793 b = parser->m_freeBindingList; in addBinding()
3811 parser, b->uri, sizeof(XML_Char) * (len + EXPAND_SPARE)); in addBinding()
3817 parser->m_freeBindingList = b->nextTagBinding; in addBinding()
3819 b = (BINDING *)MALLOC(parser, sizeof(BINDING)); in addBinding()
3838 = (XML_Char *)MALLOC(parser, sizeof(XML_Char) * (len + EXPAND_SPARE)); in addBinding()
3840 FREE(parser, b); in addBinding()
3847 if (parser->m_namespaceSeparator) in addBinding()
3848 b->uri[len - 1] = parser->m_namespaceSeparator; in addBinding()
3853 if (*uri == XML_T('\0') && prefix == &parser->m_dtd->defaultPrefix) in addBinding()
3860 if (attId && parser->m_startNamespaceDeclHandler) in addBinding()
3861 parser->m_startNamespaceDeclHandler(parser->m_handlerArg, prefix->name, in addBinding()
3870 cdataSectionProcessor(XML_Parser parser, const char *start, const char *end, in cdataSectionProcessor() argument
3873 parser, parser->m_encoding, &start, end, endPtr, in cdataSectionProcessor()
3874 (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_ACCOUNT_DIRECT); in cdataSectionProcessor()
3878 if (parser->m_parentParser) { /* we are parsing an external entity */ in cdataSectionProcessor()
3879 parser->m_processor = externalEntityContentProcessor; in cdataSectionProcessor()
3880 return externalEntityContentProcessor(parser, start, end, endPtr); in cdataSectionProcessor()
3882 parser->m_processor = contentProcessor; in cdataSectionProcessor()
3883 return contentProcessor(parser, start, end, endPtr); in cdataSectionProcessor()
3893 doCdataSection(XML_Parser parser, const ENCODING *enc, const char **startPtr, in doCdataSection() argument
3899 if (enc == parser->m_encoding) { in doCdataSection()
3900 eventPP = &parser->m_eventPtr; in doCdataSection()
3902 eventEndPP = &parser->m_eventEndPtr; in doCdataSection()
3904 eventPP = &(parser->m_openInternalEntities->internalEventPtr); in doCdataSection()
3905 eventEndPP = &(parser->m_openInternalEntities->internalEventEndPtr); in doCdataSection()
3914 if (! accountingDiffTolerated(parser, tok, s, next, __LINE__, account)) { in doCdataSection()
3915 accountingOnAbort(parser); in doCdataSection()
3924 if (parser->m_endCdataSectionHandler) in doCdataSection()
3925 parser->m_endCdataSectionHandler(parser->m_handlerArg); in doCdataSection()
3928 else if (0 && parser->m_characterDataHandler) in doCdataSection()
3929 parser->m_characterDataHandler(parser->m_handlerArg, parser->m_dataBuf, in doCdataSection()
3932 else if (parser->m_defaultHandler) in doCdataSection()
3933 reportDefault(parser, enc, s, next); in doCdataSection()
3936 if (parser->m_parsingStatus.parsing == XML_FINISHED) in doCdataSection()
3941 if (parser->m_characterDataHandler) { in doCdataSection()
3943 parser->m_characterDataHandler(parser->m_handlerArg, &c, 1); in doCdataSection()
3944 } else if (parser->m_defaultHandler) in doCdataSection()
3945 reportDefault(parser, enc, s, next); in doCdataSection()
3948 XML_CharacterDataHandler charDataHandler = parser->m_characterDataHandler; in doCdataSection()
3952 ICHAR *dataPtr = (ICHAR *)parser->m_dataBuf; in doCdataSection()
3954 enc, &s, next, &dataPtr, (ICHAR *)parser->m_dataBufEnd); in doCdataSection()
3956 charDataHandler(parser->m_handlerArg, parser->m_dataBuf, in doCdataSection()
3957 (int)(dataPtr - (ICHAR *)parser->m_dataBuf)); in doCdataSection()
3964 charDataHandler(parser->m_handlerArg, (XML_Char *)s, in doCdataSection()
3966 } else if (parser->m_defaultHandler) in doCdataSection()
3967 reportDefault(parser, enc, s, next); in doCdataSection()
3999 switch (parser->m_parsingStatus.parsing) { in doCdataSection()
4017 ignoreSectionProcessor(XML_Parser parser, const char *start, const char *end, in ignoreSectionProcessor() argument
4020 = doIgnoreSection(parser, parser->m_encoding, &start, end, endPtr, in ignoreSectionProcessor()
4021 (XML_Bool)! parser->m_parsingStatus.finalBuffer); in ignoreSectionProcessor()
4025 parser->m_processor = prologProcessor; in ignoreSectionProcessor()
4026 return prologProcessor(parser, start, end, endPtr); in ignoreSectionProcessor()
4035 doIgnoreSection(XML_Parser parser, const ENCODING *enc, const char **startPtr, in doIgnoreSection() argument
4042 if (enc == parser->m_encoding) { in doIgnoreSection()
4043 eventPP = &parser->m_eventPtr; in doIgnoreSection()
4045 eventEndPP = &parser->m_eventEndPtr; in doIgnoreSection()
4058 eventPP = &(parser->m_openInternalEntities->internalEventPtr); in doIgnoreSection()
4059 eventEndPP = &(parser->m_openInternalEntities->internalEventEndPtr); in doIgnoreSection()
4066 if (! accountingDiffTolerated(parser, tok, s, next, __LINE__, in doIgnoreSection()
4068 accountingOnAbort(parser); in doIgnoreSection()
4075 if (parser->m_defaultHandler) in doIgnoreSection()
4076 reportDefault(parser, enc, s, next); in doIgnoreSection()
4079 if (parser->m_parsingStatus.parsing == XML_FINISHED) in doIgnoreSection()
4117 initializeEncoding(XML_Parser parser) { in initializeEncoding() argument
4122 if (! parser->m_protocolEncodingName) in initializeEncoding()
4126 for (i = 0; parser->m_protocolEncodingName[i]; i++) { in initializeEncoding()
4128 || (parser->m_protocolEncodingName[i] & ~0x7f) != 0) { in initializeEncoding()
4132 encodingBuf[i] = (char)parser->m_protocolEncodingName[i]; in initializeEncoding()
4138 s = parser->m_protocolEncodingName; in initializeEncoding()
4140 if ((parser->m_ns ? XmlInitEncodingNS : XmlInitEncoding)( in initializeEncoding()
4141 &parser->m_initEncoding, &parser->m_encoding, s)) in initializeEncoding()
4143 return handleUnknownEncoding(parser, parser->m_protocolEncodingName); in initializeEncoding()
4147 processXmlDecl(XML_Parser parser, int isGeneralTextEntity, const char *s, in processXmlDecl() argument
4158 if (! accountingDiffTolerated(parser, XML_TOK_XML_DECL, s, next, __LINE__, in processXmlDecl()
4160 accountingOnAbort(parser); in processXmlDecl()
4165 if (! (parser->m_ns ? XmlParseXmlDeclNS : XmlParseXmlDecl)( in processXmlDecl()
4166 isGeneralTextEntity, parser->m_encoding, s, next, &parser->m_eventPtr, in processXmlDecl()
4174 parser->m_dtd->standalone = XML_TRUE; in processXmlDecl()
4176 if (parser->m_paramEntityParsing in processXmlDecl()
4178 parser->m_paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; in processXmlDecl()
4181 if (parser->m_xmlDeclHandler) { in processXmlDecl()
4184 &parser->m_temp2Pool, parser->m_encoding, encodingName, in processXmlDecl()
4185 encodingName + XmlNameLength(parser->m_encoding, encodingName)); in processXmlDecl()
4188 poolFinish(&parser->m_temp2Pool); in processXmlDecl()
4192 = poolStoreString(&parser->m_temp2Pool, parser->m_encoding, version, in processXmlDecl()
4193 versionend - parser->m_encoding->minBytesPerChar); in processXmlDecl()
4197 parser->m_xmlDeclHandler(parser->m_handlerArg, storedversion, storedEncName, in processXmlDecl()
4199 } else if (parser->m_defaultHandler) in processXmlDecl()
4200 reportDefault(parser, parser->m_encoding, s, next); in processXmlDecl()
4201 if (parser->m_protocolEncodingName == NULL) { in processXmlDecl()
4204 * the parser has already deduced. Do we have the same number in processXmlDecl()
4208 if (newEncoding->minBytesPerChar != parser->m_encoding->minBytesPerChar in processXmlDecl()
4210 && newEncoding != parser->m_encoding)) { in processXmlDecl()
4211 parser->m_eventPtr = encodingName; in processXmlDecl()
4214 parser->m_encoding = newEncoding; in processXmlDecl()
4219 &parser->m_temp2Pool, parser->m_encoding, encodingName, in processXmlDecl()
4220 encodingName + XmlNameLength(parser->m_encoding, encodingName)); in processXmlDecl()
4224 result = handleUnknownEncoding(parser, storedEncName); in processXmlDecl()
4225 poolClear(&parser->m_temp2Pool); in processXmlDecl()
4227 parser->m_eventPtr = encodingName; in processXmlDecl()
4233 poolClear(&parser->m_temp2Pool); in processXmlDecl()
4239 handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName) { in handleUnknownEncoding() argument
4240 if (parser->m_unknownEncodingHandler) { in handleUnknownEncoding()
4248 if (parser->m_unknownEncodingHandler(parser->m_unknownEncodingHandlerData, in handleUnknownEncoding()
4251 parser->m_unknownEncodingMem = MALLOC(parser, XmlSizeOfUnknownEncoding()); in handleUnknownEncoding()
4252 if (! parser->m_unknownEncodingMem) { in handleUnknownEncoding()
4257 enc = (parser->m_ns ? XmlInitUnknownEncodingNS : XmlInitUnknownEncoding)( in handleUnknownEncoding()
4258 parser->m_unknownEncodingMem, info.map, info.convert, info.data); in handleUnknownEncoding()
4260 parser->m_unknownEncodingData = info.data; in handleUnknownEncoding()
4261 parser->m_unknownEncodingRelease = info.release; in handleUnknownEncoding()
4262 parser->m_encoding = enc; in handleUnknownEncoding()
4273 prologInitProcessor(XML_Parser parser, const char *s, const char *end, in prologInitProcessor() argument
4275 enum XML_Error result = initializeEncoding(parser); in prologInitProcessor()
4278 parser->m_processor = prologProcessor; in prologInitProcessor()
4279 return prologProcessor(parser, s, end, nextPtr); in prologInitProcessor()
4285 externalParEntInitProcessor(XML_Parser parser, const char *s, const char *end, in externalParEntInitProcessor() argument
4287 enum XML_Error result = initializeEncoding(parser); in externalParEntInitProcessor()
4293 parser->m_dtd->paramEntityRead = XML_TRUE; in externalParEntInitProcessor()
4295 if (parser->m_prologState.inEntityValue) { in externalParEntInitProcessor()
4296 parser->m_processor = entityValueInitProcessor; in externalParEntInitProcessor()
4297 return entityValueInitProcessor(parser, s, end, nextPtr); in externalParEntInitProcessor()
4299 parser->m_processor = externalParEntProcessor; in externalParEntInitProcessor()
4300 return externalParEntProcessor(parser, s, end, nextPtr); in externalParEntInitProcessor()
4305 entityValueInitProcessor(XML_Parser parser, const char *s, const char *end, in entityValueInitProcessor() argument
4310 parser->m_eventPtr = start; in entityValueInitProcessor()
4313 tok = XmlPrologTok(parser->m_encoding, start, end, &next); in entityValueInitProcessor()
4318 parser->m_eventEndPtr = next; in entityValueInitProcessor()
4320 if (! parser->m_parsingStatus.finalBuffer && tok != XML_TOK_INVALID) { in entityValueInitProcessor()
4336 return storeEntityValue(parser, parser->m_encoding, s, end, in entityValueInitProcessor()
4340 result = processXmlDecl(parser, 0, start, next); in entityValueInitProcessor()
4345 * to suspend the parser, which fails and raises an error. The parser can in entityValueInitProcessor()
4348 if (parser->m_parsingStatus.parsing == XML_FINISHED) in entityValueInitProcessor()
4352 parser->m_processor = entityValueProcessor; in entityValueInitProcessor()
4353 return entityValueProcessor(parser, next, end, nextPtr); in entityValueInitProcessor()
4363 && ! parser->m_parsingStatus.finalBuffer) { in entityValueInitProcessor()
4365 if (! accountingDiffTolerated(parser, tok, s, next, __LINE__, in entityValueInitProcessor()
4367 accountingOnAbort(parser); in entityValueInitProcessor()
4384 parser->m_eventPtr = start; in entityValueInitProcessor()
4389 externalParEntProcessor(XML_Parser parser, const char *s, const char *end, in externalParEntProcessor() argument
4394 tok = XmlPrologTok(parser->m_encoding, s, end, &next); in externalParEntProcessor()
4396 if (! parser->m_parsingStatus.finalBuffer && tok != XML_TOK_INVALID) { in externalParEntProcessor()
4418 if (! accountingDiffTolerated(parser, tok, s, next, __LINE__, in externalParEntProcessor()
4420 accountingOnAbort(parser); in externalParEntProcessor()
4425 tok = XmlPrologTok(parser->m_encoding, s, end, &next); in externalParEntProcessor()
4428 parser->m_processor = prologProcessor; in externalParEntProcessor()
4429 return doProlog(parser, parser->m_encoding, s, end, tok, next, nextPtr, in externalParEntProcessor()
4430 (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_TRUE, in externalParEntProcessor()
4435 entityValueProcessor(XML_Parser parser, const char *s, const char *end, in entityValueProcessor() argument
4439 const ENCODING *enc = parser->m_encoding; in entityValueProcessor()
4448 if (! parser->m_parsingStatus.finalBuffer && tok != XML_TOK_INVALID) { in entityValueProcessor()
4464 return storeEntityValue(parser, enc, s, end, XML_ACCOUNT_DIRECT); in entityValueProcessor()
4473 prologProcessor(XML_Parser parser, const char *s, const char *end, in prologProcessor() argument
4476 int tok = XmlPrologTok(parser->m_encoding, s, end, &next); in prologProcessor()
4477 return doProlog(parser, parser->m_encoding, s, end, tok, next, nextPtr, in prologProcessor()
4478 (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_TRUE, in prologProcessor()
4483 doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end, in doProlog() argument
4517 DTD *const dtd = parser->m_dtd; in doProlog()
4523 if (enc == parser->m_encoding) { in doProlog()
4524 eventPP = &parser->m_eventPtr; in doProlog()
4525 eventEndPP = &parser->m_eventEndPtr; in doProlog()
4527 eventPP = &(parser->m_openInternalEntities->internalEventPtr); in doProlog()
4528 eventEndPP = &(parser->m_openInternalEntities->internalEventEndPtr); in doProlog()
4555 if (enc != parser->m_encoding in doProlog()
4556 && ! parser->m_openInternalEntities->betweenDecl) { in doProlog()
4564 if (parser->m_isParamEntity || enc != parser->m_encoding) { in doProlog()
4565 if (XmlTokenRole(&parser->m_prologState, XML_TOK_NONE, end, end, enc) in doProlog()
4579 role = XmlTokenRole(&parser->m_prologState, tok, s, next, enc); in doProlog()
4587 if (! accountingDiffTolerated(parser, tok, s, next, __LINE__, account)) { in doProlog()
4588 accountingOnAbort(parser); in doProlog()
4595 enum XML_Error result = processXmlDecl(parser, 0, s, next); in doProlog()
4598 enc = parser->m_encoding; in doProlog()
4602 if (parser->m_startDoctypeDeclHandler) { in doProlog()
4603 parser->m_doctypeName in doProlog()
4604 = poolStoreString(&parser->m_tempPool, enc, s, next); in doProlog()
4605 if (! parser->m_doctypeName) in doProlog()
4607 poolFinish(&parser->m_tempPool); in doProlog()
4608 parser->m_doctypePubid = NULL; in doProlog()
4611 parser->m_doctypeSysid = NULL; /* always initialize to NULL */ in doProlog()
4614 if (parser->m_startDoctypeDeclHandler) { in doProlog()
4615 parser->m_startDoctypeDeclHandler( in doProlog()
4616 parser->m_handlerArg, parser->m_doctypeName, parser->m_doctypeSysid, in doProlog()
4617 parser->m_doctypePubid, 1); in doProlog()
4618 parser->m_doctypeName = NULL; in doProlog()
4619 poolClear(&parser->m_tempPool); in doProlog()
4625 enum XML_Error result = processXmlDecl(parser, 1, s, next); in doProlog()
4628 enc = parser->m_encoding; in doProlog()
4634 parser->m_useForeignDTD = XML_FALSE; in doProlog()
4635 parser->m_declEntity = (ENTITY *)lookup( in doProlog()
4636 parser, &dtd->paramEntities, externalSubsetName, sizeof(ENTITY)); in doProlog()
4637 if (! parser->m_declEntity) in doProlog()
4641 if (parser->m_startDoctypeDeclHandler) { in doProlog()
4645 pubId = poolStoreString(&parser->m_tempPool, enc, in doProlog()
4651 poolFinish(&parser->m_tempPool); in doProlog()
4652 parser->m_doctypePubid = pubId; in doProlog()
4661 if (dtd->keepProcessing && parser->m_declEntity) { in doProlog()
4668 parser->m_declEntity->publicId = tem; in doProlog()
4673 if (parser->m_entityDeclHandler && role == XML_ROLE_ENTITY_PUBLIC_ID) in doProlog()
4683 if (parser->m_doctypeName) { in doProlog()
4684 parser->m_startDoctypeDeclHandler( in doProlog()
4685 parser->m_handlerArg, parser->m_doctypeName, parser->m_doctypeSysid, in doProlog()
4686 parser->m_doctypePubid, 0); in doProlog()
4687 poolClear(&parser->m_tempPool); in doProlog()
4690 /* parser->m_doctypeSysid will be non-NULL in the case of a previous in doProlog()
4691 XML_ROLE_DOCTYPE_SYSTEM_ID, even if parser->m_startDoctypeDeclHandler in doProlog()
4695 if (parser->m_doctypeSysid || parser->m_useForeignDTD) { in doProlog()
4698 if (parser->m_paramEntityParsing in doProlog()
4699 && parser->m_externalEntityRefHandler) { in doProlog()
4700 ENTITY *entity = (ENTITY *)lookup(parser, &dtd->paramEntities, in doProlog()
4710 if (parser->m_useForeignDTD) in doProlog()
4711 entity->base = parser->m_curBase; in doProlog()
4713 if (! parser->m_externalEntityRefHandler( in doProlog()
4714 parser->m_externalEntityRefHandlerArg, 0, entity->base, in doProlog()
4718 if (! dtd->standalone && parser->m_notStandaloneHandler in doProlog()
4719 && ! parser->m_notStandaloneHandler(parser->m_handlerArg)) in doProlog()
4725 else if (! parser->m_doctypeSysid) in doProlog()
4729 parser->m_useForeignDTD = XML_FALSE; in doProlog()
4732 if (parser->m_endDoctypeDeclHandler) { in doProlog()
4733 parser->m_endDoctypeDeclHandler(parser->m_handlerArg); in doProlog()
4742 if (parser->m_useForeignDTD) { in doProlog()
4745 if (parser->m_paramEntityParsing in doProlog()
4746 && parser->m_externalEntityRefHandler) { in doProlog()
4747 ENTITY *entity = (ENTITY *)lookup(parser, &dtd->paramEntities, in doProlog()
4751 entity->base = parser->m_curBase; in doProlog()
4753 if (! parser->m_externalEntityRefHandler( in doProlog()
4754 parser->m_externalEntityRefHandlerArg, 0, entity->base, in doProlog()
4758 if (! dtd->standalone && parser->m_notStandaloneHandler in doProlog()
4759 && ! parser->m_notStandaloneHandler(parser->m_handlerArg)) in doProlog()
4771 parser->m_processor = contentProcessor; in doProlog()
4772 return contentProcessor(parser, s, end, nextPtr); in doProlog()
4774 parser->m_declElementType = getElementType(parser, enc, s, next); in doProlog()
4775 if (! parser->m_declElementType) in doProlog()
4779 parser->m_declAttributeId = getAttributeId(parser, enc, s, next); in doProlog()
4780 if (! parser->m_declAttributeId) in doProlog()
4782 parser->m_declAttributeIsCdata = XML_FALSE; in doProlog()
4783 parser->m_declAttributeType = NULL; in doProlog()
4784 parser->m_declAttributeIsId = XML_FALSE; in doProlog()
4787 parser->m_declAttributeIsCdata = XML_TRUE; in doProlog()
4788 parser->m_declAttributeType = atypeCDATA; in doProlog()
4791 parser->m_declAttributeIsId = XML_TRUE; in doProlog()
4792 parser->m_declAttributeType = atypeID; in doProlog()
4795 parser->m_declAttributeType = atypeIDREF; in doProlog()
4798 parser->m_declAttributeType = atypeIDREFS; in doProlog()
4801 parser->m_declAttributeType = atypeENTITY; in doProlog()
4804 parser->m_declAttributeType = atypeENTITIES; in doProlog()
4807 parser->m_declAttributeType = atypeNMTOKEN; in doProlog()
4810 parser->m_declAttributeType = atypeNMTOKENS; in doProlog()
4812 if (dtd->keepProcessing && parser->m_attlistDeclHandler) in doProlog()
4817 if (dtd->keepProcessing && parser->m_attlistDeclHandler) { in doProlog()
4819 if (parser->m_declAttributeType) { in doProlog()
4825 if (! poolAppendString(&parser->m_tempPool, prefix)) in doProlog()
4827 if (! poolAppend(&parser->m_tempPool, enc, s, next)) in doProlog()
4829 parser->m_declAttributeType = parser->m_tempPool.start; in doProlog()
4836 if (! defineAttribute(parser->m_declElementType, in doProlog()
4837 parser->m_declAttributeId, in doProlog()
4838 parser->m_declAttributeIsCdata, in doProlog()
4839 parser->m_declAttributeIsId, 0, parser)) in doProlog()
4841 if (parser->m_attlistDeclHandler && parser->m_declAttributeType) { in doProlog()
4842 if (*parser->m_declAttributeType == XML_T(ASCII_LPAREN) in doProlog()
4843 || (*parser->m_declAttributeType == XML_T(ASCII_N) in doProlog()
4844 && parser->m_declAttributeType[1] == XML_T(ASCII_O))) { in doProlog()
4846 if (! poolAppendChar(&parser->m_tempPool, XML_T(ASCII_RPAREN)) in doProlog()
4847 || ! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) in doProlog()
4849 parser->m_declAttributeType = parser->m_tempPool.start; in doProlog()
4850 poolFinish(&parser->m_tempPool); in doProlog()
4853 parser->m_attlistDeclHandler( in doProlog()
4854 parser->m_handlerArg, parser->m_declElementType->name, in doProlog()
4855 parser->m_declAttributeId->name, parser->m_declAttributeType, 0, in doProlog()
4857 poolClear(&parser->m_tempPool); in doProlog()
4867 parser, enc, parser->m_declAttributeIsCdata, in doProlog()
4876 parser->m_declElementType, parser->m_declAttributeId, in doProlog()
4877 parser->m_declAttributeIsCdata, XML_FALSE, attVal, parser)) in doProlog()
4879 if (parser->m_attlistDeclHandler && parser->m_declAttributeType) { in doProlog()
4880 if (*parser->m_declAttributeType == XML_T(ASCII_LPAREN) in doProlog()
4881 || (*parser->m_declAttributeType == XML_T(ASCII_N) in doProlog()
4882 && parser->m_declAttributeType[1] == XML_T(ASCII_O))) { in doProlog()
4884 if (! poolAppendChar(&parser->m_tempPool, XML_T(ASCII_RPAREN)) in doProlog()
4885 || ! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) in doProlog()
4887 parser->m_declAttributeType = parser->m_tempPool.start; in doProlog()
4888 poolFinish(&parser->m_tempPool); in doProlog()
4891 parser->m_attlistDeclHandler( in doProlog()
4892 parser->m_handlerArg, parser->m_declElementType->name, in doProlog()
4893 parser->m_declAttributeId->name, parser->m_declAttributeType, in doProlog()
4895 poolClear(&parser->m_tempPool); in doProlog()
4903 = storeEntityValue(parser, enc, s + enc->minBytesPerChar, in doProlog()
4905 if (parser->m_declEntity) { in doProlog()
4906 parser->m_declEntity->textPtr = poolStart(&dtd->entityValuePool); in doProlog()
4907 parser->m_declEntity->textLen in doProlog()
4910 if (parser->m_entityDeclHandler) { in doProlog()
4912 parser->m_entityDeclHandler( in doProlog()
4913 parser->m_handlerArg, parser->m_declEntity->name, in doProlog()
4914 parser->m_declEntity->is_param, parser->m_declEntity->textPtr, in doProlog()
4915 parser->m_declEntity->textLen, parser->m_curBase, 0, 0, 0); in doProlog()
4926 parser->m_useForeignDTD = XML_FALSE; in doProlog()
4929 if (parser->m_startDoctypeDeclHandler) { in doProlog()
4930 parser->m_doctypeSysid = poolStoreString(&parser->m_tempPool, enc, in doProlog()
4933 if (parser->m_doctypeSysid == NULL) in doProlog()
4935 poolFinish(&parser->m_tempPool); in doProlog()
4940 /* use externalSubsetName to make parser->m_doctypeSysid non-NULL in doProlog()
4941 for the case where no parser->m_startDoctypeDeclHandler is set */ in doProlog()
4942 parser->m_doctypeSysid = externalSubsetName; in doProlog()
4946 && ! parser->m_paramEntityParsing in doProlog()
4948 && parser->m_notStandaloneHandler in doProlog()
4949 && ! parser->m_notStandaloneHandler(parser->m_handlerArg)) in doProlog()
4954 if (! parser->m_declEntity) { in doProlog()
4955 parser->m_declEntity = (ENTITY *)lookup( in doProlog()
4956 parser, &dtd->paramEntities, externalSubsetName, sizeof(ENTITY)); in doProlog()
4957 if (! parser->m_declEntity) in doProlog()
4959 parser->m_declEntity->publicId = NULL; in doProlog()
4964 if (dtd->keepProcessing && parser->m_declEntity) { in doProlog()
4965 parser->m_declEntity->systemId in doProlog()
4968 if (! parser->m_declEntity->systemId) in doProlog()
4970 parser->m_declEntity->base = parser->m_curBase; in doProlog()
4975 if (parser->m_entityDeclHandler && role == XML_ROLE_ENTITY_SYSTEM_ID) in doProlog()
4980 if (dtd->keepProcessing && parser->m_declEntity in doProlog()
4981 && parser->m_entityDeclHandler) { in doProlog()
4983 parser->m_entityDeclHandler( in doProlog()
4984 parser->m_handlerArg, parser->m_declEntity->name, in doProlog()
4985 parser->m_declEntity->is_param, 0, 0, parser->m_declEntity->base, in doProlog()
4986 parser->m_declEntity->systemId, parser->m_declEntity->publicId, 0); in doProlog()
4991 if (dtd->keepProcessing && parser->m_declEntity) { in doProlog()
4992 parser->m_declEntity->notation in doProlog()
4994 if (! parser->m_declEntity->notation) in doProlog()
4997 if (parser->m_unparsedEntityDeclHandler) { in doProlog()
4999 parser->m_unparsedEntityDeclHandler( in doProlog()
5000 parser->m_handlerArg, parser->m_declEntity->name, in doProlog()
5001 parser->m_declEntity->base, parser->m_declEntity->systemId, in doProlog()
5002 parser->m_declEntity->publicId, parser->m_declEntity->notation); in doProlog()
5004 } else if (parser->m_entityDeclHandler) { in doProlog()
5006 parser->m_entityDeclHandler( in doProlog()
5007 parser->m_handlerArg, parser->m_declEntity->name, 0, 0, 0, in doProlog()
5008 parser->m_declEntity->base, parser->m_declEntity->systemId, in doProlog()
5009 parser->m_declEntity->publicId, parser->m_declEntity->notation); in doProlog()
5016 parser->m_declEntity = NULL; in doProlog()
5023 parser->m_declEntity = (ENTITY *)lookup(parser, &dtd->generalEntities, in doProlog()
5025 if (! parser->m_declEntity) in doProlog()
5027 if (parser->m_declEntity->name != name) { in doProlog()
5029 parser->m_declEntity = NULL; in doProlog()
5032 parser->m_declEntity->publicId = NULL; in doProlog()
5033 parser->m_declEntity->is_param = XML_FALSE; in doProlog()
5034 /* if we have a parent parser or are reading an internal parameter in doProlog()
5037 parser->m_declEntity->is_internal in doProlog()
5038 = ! (parser->m_parentParser || parser->m_openInternalEntities); in doProlog()
5039 if (parser->m_entityDeclHandler) in doProlog()
5044 parser->m_declEntity = NULL; in doProlog()
5053 parser->m_declEntity = (ENTITY *)lookup(parser, &dtd->paramEntities, in doProlog()
5055 if (! parser->m_declEntity) in doProlog()
5057 if (parser->m_declEntity->name != name) { in doProlog()
5059 parser->m_declEntity = NULL; in doProlog()
5062 parser->m_declEntity->publicId = NULL; in doProlog()
5063 parser->m_declEntity->is_param = XML_TRUE; in doProlog()
5064 /* if we have a parent parser or are reading an internal parameter in doProlog()
5067 parser->m_declEntity->is_internal in doProlog()
5068 = ! (parser->m_parentParser || parser->m_openInternalEntities); in doProlog()
5069 if (parser->m_entityDeclHandler) in doProlog()
5074 parser->m_declEntity = NULL; in doProlog()
5077 parser->m_declEntity = NULL; in doProlog()
5081 parser->m_declNotationPublicId = NULL; in doProlog()
5082 parser->m_declNotationName = NULL; in doProlog()
5083 if (parser->m_notationDeclHandler) { in doProlog()
5084 parser->m_declNotationName in doProlog()
5085 = poolStoreString(&parser->m_tempPool, enc, s, next); in doProlog()
5086 if (! parser->m_declNotationName) in doProlog()
5088 poolFinish(&parser->m_tempPool); in doProlog()
5095 if (parser in doProlog()
5097 XML_Char *tem = poolStoreString(&parser->m_tempPool, enc, in doProlog()
5103 parser->m_declNotationPublicId = tem; in doProlog()
5104 poolFinish(&parser->m_tempPool); in doProlog()
5109 if (parser->m_declNotationName && parser->m_notationDeclHandler) { in doProlog()
5110 const XML_Char *systemId = poolStoreString(&parser->m_tempPool, enc, in doProlog()
5116 parser->m_notationDeclHandler( in doProlog()
5117 parser->m_handlerArg, parser->m_declNotationName, parser->m_curBase, in doProlog()
5118 systemId, parser->m_declNotationPublicId); in doProlog()
5121 poolClear(&parser->m_tempPool); in doProlog()
5124 if (parser->m_declNotationPublicId && parser->m_notationDeclHandler) { in doProlog()
5126 parser->m_notationDeclHandler( in doProlog()
5127 parser->m_handlerArg, parser->m_declNotationName, parser->m_curBase, in doProlog()
5128 0, parser->m_declNotationPublicId); in doProlog()
5131 poolClear(&parser->m_tempPool); in doProlog()
5147 if (parser->m_defaultHandler) in doProlog()
5148 reportDefault(parser, enc, s, next); in doProlog()
5150 result = doIgnoreSection(parser, enc, &next, end, nextPtr, haveMore); in doProlog()
5154 parser->m_processor = ignoreSectionProcessor; in doProlog()
5160 if (parser->m_prologState.level >= parser->m_groupSize) { in doProlog()
5161 if (parser->m_groupSize) { in doProlog()
5164 if (parser->m_groupSize > (unsigned int)(-1) / 2u) { in doProlog()
5169 parser, parser->m_groupConnector, parser->m_groupSize *= 2); in doProlog()
5171 parser->m_groupSize /= 2; in doProlog()
5174 parser->m_groupConnector = new_connector; in doProlog()
5183 if (parser->m_groupSize > (size_t)(-1) / sizeof(int)) { in doProlog()
5189 parser, dtd->scaffIndex, parser->m_groupSize * sizeof(int)); in doProlog()
5195 parser->m_groupConnector in doProlog()
5196 = (char *)MALLOC(parser, parser->m_groupSize = 32); in doProlog()
5197 if (! parser->m_groupConnector) { in doProlog()
5198 parser->m_groupSize = 0; in doProlog()
5203 parser->m_groupConnector[parser->m_prologState.level] = 0; in doProlog()
5205 int myindex = nextScaffoldPart(parser); in doProlog()
5212 if (parser->m_elementDeclHandler) in doProlog()
5217 if (parser->m_groupConnector[parser->m_prologState.level] == ASCII_PIPE) in doProlog()
5219 parser->m_groupConnector[parser->m_prologState.level] = ASCII_COMMA; in doProlog()
5220 if (dtd->in_eldecl && parser->m_elementDeclHandler) in doProlog()
5224 if (parser->m_groupConnector[parser->m_prologState.level] == ASCII_COMMA) in doProlog()
5227 && ! parser->m_groupConnector[parser->m_prologState.level] in doProlog()
5232 if (parser->m_elementDeclHandler) in doProlog()
5235 parser->m_groupConnector[parser->m_prologState.level] = ASCII_PIPE; in doProlog()
5241 if (! parser->m_paramEntityParsing) in doProlog()
5250 entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0); in doProlog()
5256 if (parser->m_prologState.documentEntity in doProlog()
5257 && (dtd->standalone ? ! parser->m_openInternalEntities in doProlog()
5288 && parser->m_skippedEntityHandler) { in doProlog()
5289 parser->m_skippedEntityHandler(parser->m_handlerArg, name, 1); in doProlog()
5300 result = processInternalEntity(parser, entity, betweenDecl); in doProlog()
5306 if (parser->m_externalEntityRefHandler) { in doProlog()
5309 entityTrackingOnOpen(parser, entity, __LINE__); in doProlog()
5310 if (! parser->m_externalEntityRefHandler( in doProlog()
5311 parser->m_externalEntityRefHandlerArg, 0, entity->base, in doProlog()
5313 entityTrackingOnClose(parser, entity, __LINE__); in doProlog()
5317 entityTrackingOnClose(parser, entity, __LINE__); in doProlog()
5330 if (! dtd->standalone && parser->m_notStandaloneHandler in doProlog()
5331 && ! parser->m_notStandaloneHandler(parser->m_handlerArg)) in doProlog()
5338 if (parser->m_elementDeclHandler) { in doProlog()
5339 parser->m_declElementType = getElementType(parser, enc, s, next); in doProlog()
5340 if (! parser->m_declElementType) in doProlog()
5352 if (parser->m_elementDeclHandler) { in doProlog()
5354 = (XML_Content *)MALLOC(parser, sizeof(XML_Content)); in doProlog()
5364 parser->m_elementDeclHandler( in doProlog()
5365 parser->m_handlerArg, parser->m_declElementType->name, content); in doProlog()
5376 if (parser->m_elementDeclHandler) in doProlog()
5399 int myindex = nextScaffoldPart(parser); in doProlog()
5404 el = getElementType(parser, enc, s, nxt); in doProlog()
5419 if (parser->m_elementDeclHandler) in doProlog()
5437 if (parser->m_elementDeclHandler) in doProlog()
5443 XML_Content *model = build_model(parser); in doProlog()
5447 parser->m_elementDeclHandler( in doProlog()
5448 parser->m_handlerArg, parser->m_declElementType->name, model); in doProlog()
5458 if (! reportProcessingInstruction(parser, enc, s, next)) in doProlog()
5463 if (! reportComment(parser, enc, s, next)) in doProlog()
5475 if (parser->m_startDoctypeDeclHandler) in doProlog()
5479 if (dtd->keepProcessing && parser->m_entityDeclHandler) in doProlog()
5483 if (parser->m_notationDeclHandler) in doProlog()
5487 if (dtd->keepProcessing && parser->m_attlistDeclHandler) in doProlog()
5491 if (parser->m_elementDeclHandler) in doProlog()
5496 if (handleDefault && parser->m_defaultHandler) in doProlog()
5497 reportDefault(parser, enc, s, next); in doProlog()
5499 switch (parser->m_parsingStatus.parsing) { in doProlog()
5514 epilogProcessor(XML_Parser parser, const char *s, const char *end, in epilogProcessor() argument
5516 parser->m_processor = epilogProcessor; in epilogProcessor()
5517 parser->m_eventPtr = s; in epilogProcessor()
5520 int tok = XmlPrologTok(parser->m_encoding, s, end, &next); in epilogProcessor()
5522 if (! accountingDiffTolerated(parser, tok, s, next, __LINE__, in epilogProcessor()
5524 accountingOnAbort(parser); in epilogProcessor()
5528 parser->m_eventEndPtr = next; in epilogProcessor()
5532 if (parser->m_defaultHandler) { in epilogProcessor()
5533 reportDefault(parser, parser->m_encoding, s, next); in epilogProcessor()
5534 if (parser->m_parsingStatus.parsing == XML_FINISHED) in epilogProcessor()
5543 if (parser->m_defaultHandler) in epilogProcessor()
5544 reportDefault(parser, parser->m_encoding, s, next); in epilogProcessor()
5547 if (! reportProcessingInstruction(parser, parser->m_encoding, s, next)) in epilogProcessor()
5551 if (! reportComment(parser, parser->m_encoding, s, next)) in epilogProcessor()
5555 parser->m_eventPtr = next; in epilogProcessor()
5558 if (! parser->m_parsingStatus.finalBuffer) { in epilogProcessor()
5564 if (! parser->m_parsingStatus.finalBuffer) { in epilogProcessor()
5572 parser->m_eventPtr = s = next; in epilogProcessor()
5573 switch (parser->m_parsingStatus.parsing) { in epilogProcessor()
5585 processInternalEntity(XML_Parser parser, ENTITY *entity, XML_Bool betweenDecl) { in processInternalEntity() argument
5591 if (parser->m_freeInternalEntities) { in processInternalEntity()
5592 openEntity = parser->m_freeInternalEntities; in processInternalEntity()
5593 parser->m_freeInternalEntities = openEntity->next; in processInternalEntity()
5596 = (OPEN_INTERNAL_ENTITY *)MALLOC(parser, sizeof(OPEN_INTERNAL_ENTITY)); in processInternalEntity()
5602 entityTrackingOnOpen(parser, entity, __LINE__); in processInternalEntity()
5605 openEntity->next = parser->m_openInternalEntities; in processInternalEntity()
5606 parser->m_openInternalEntities = openEntity; in processInternalEntity()
5608 openEntity->startTagLevel = parser->m_tagLevel; in processInternalEntity()
5620 = XmlPrologTok(parser->m_internalEncoding, textStart, textEnd, &next); in processInternalEntity()
5621 result = doProlog(parser, parser->m_internalEncoding, textStart, textEnd, in processInternalEntity()
5626 result = doContent(parser, parser->m_tagLevel, parser->m_internalEncoding, in processInternalEntity()
5631 if (textEnd != next && parser->m_parsingStatus.parsing == XML_SUSPENDED) { in processInternalEntity()
5633 parser->m_processor = internalEntityProcessor; in processInternalEntity()
5636 entityTrackingOnClose(parser, entity, __LINE__); in processInternalEntity()
5639 parser->m_openInternalEntities = openEntity->next; in processInternalEntity()
5641 openEntity->next = parser->m_freeInternalEntities; in processInternalEntity()
5642 parser->m_freeInternalEntities = openEntity; in processInternalEntity()
5649 internalEntityProcessor(XML_Parser parser, const char *s, const char *end, in internalEntityProcessor() argument
5655 OPEN_INTERNAL_ENTITY *openEntity = parser->m_openInternalEntities; in internalEntityProcessor()
5668 = XmlPrologTok(parser->m_internalEncoding, textStart, textEnd, &next); in internalEntityProcessor()
5669 result = doProlog(parser, parser->m_internalEncoding, textStart, textEnd, in internalEntityProcessor()
5674 result = doContent(parser, openEntity->startTagLevel, in internalEntityProcessor()
5675 parser->m_internalEncoding, textStart, textEnd, &next, in internalEntityProcessor()
5681 && parser->m_parsingStatus.parsing == XML_SUSPENDED) { in internalEntityProcessor()
5686 entityTrackingOnClose(parser, entity, __LINE__); in internalEntityProcessor()
5689 parser->m_openInternalEntities = openEntity->next; in internalEntityProcessor()
5691 openEntity->next = parser->m_freeInternalEntities; in internalEntityProcessor()
5692 parser->m_freeInternalEntities = openEntity; in internalEntityProcessor()
5698 parser->m_processor = prologProcessor; in internalEntityProcessor()
5699 tok = XmlPrologTok(parser->m_encoding, s, end, &next); in internalEntityProcessor()
5700 return doProlog(parser, parser->m_encoding, s, end, tok, next, nextPtr, in internalEntityProcessor()
5701 (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_TRUE, in internalEntityProcessor()
5706 parser->m_processor = contentProcessor; in internalEntityProcessor()
5708 result = doContent(parser, parser->m_parentParser ? 1 : 0, in internalEntityProcessor()
5709 parser->m_encoding, s, end, nextPtr, in internalEntityProcessor()
5710 (XML_Bool)! parser->m_parsingStatus.finalBuffer, in internalEntityProcessor()
5713 if (! storeRawNames(parser)) in internalEntityProcessor()
5721 errorProcessor(XML_Parser parser, const char *s, const char *end, in errorProcessor() argument
5726 return parser->m_errorCode; in errorProcessor()
5730 storeAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, in storeAttributeValue() argument
5734 = appendAttributeValue(parser, enc, isCdata, ptr, end, pool, account); in storeAttributeValue()
5745 appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, in appendAttributeValue() argument
5748 DTD *const dtd = parser->m_dtd; /* save one level of indirection */ in appendAttributeValue()
5758 if (! accountingDiffTolerated(parser, tok, ptr, next, __LINE__, account)) { in appendAttributeValue()
5759 accountingOnAbort(parser); in appendAttributeValue()
5767 if (enc == parser->m_encoding) in appendAttributeValue()
5768 parser->m_eventPtr = next; in appendAttributeValue()
5771 if (enc == parser->m_encoding) in appendAttributeValue()
5772 parser->m_eventPtr = ptr; in appendAttributeValue()
5779 if (enc == parser->m_encoding) in appendAttributeValue()
5780 parser->m_eventPtr = ptr; in appendAttributeValue()
5826 accountingDiffTolerated(parser, tok, (char *)&ch, in appendAttributeValue()
5834 name = poolStoreString(&parser->m_temp2Pool, enc, in appendAttributeValue()
5839 entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0); in appendAttributeValue()
5840 poolDiscard(&parser->m_temp2Pool); in appendAttributeValue()
5847 parser->m_prologState.documentEntity && in appendAttributeValue()
5849 (dtd->standalone ? ! parser->m_openInternalEntities in appendAttributeValue()
5851 else /* if (pool == &parser->m_tempPool): we are called from content */ in appendAttributeValue()
5860 parser->m_skippedEntityHandler. in appendAttributeValue()
5861 if (parser->m_skippedEntityHandler) in appendAttributeValue()
5862 parser->m_skippedEntityHandler(parser->m_handlerArg, name, 0); in appendAttributeValue()
5866 if ((pool == &parser->m_tempPool) && parser->m_defaultHandler) in appendAttributeValue()
5867 reportDefault(parser, enc, ptr, next); in appendAttributeValue()
5872 if (enc == parser->m_encoding) { in appendAttributeValue()
5880 * sets the local encoding ("enc") to the parser's in appendAttributeValue()
5890 parser->m_eventPtr = ptr; /* LCOV_EXCL_LINE */ in appendAttributeValue()
5895 if (enc == parser->m_encoding) in appendAttributeValue()
5896 parser->m_eventPtr = ptr; in appendAttributeValue()
5900 if (enc == parser->m_encoding) in appendAttributeValue()
5901 parser->m_eventPtr = ptr; in appendAttributeValue()
5908 entityTrackingOnOpen(parser, entity, __LINE__); in appendAttributeValue()
5910 result = appendAttributeValue(parser, parser->m_internalEncoding, in appendAttributeValue()
5915 entityTrackingOnClose(parser, entity, __LINE__); in appendAttributeValue()
5934 if (enc == parser->m_encoding) in appendAttributeValue()
5935 parser->m_eventPtr = ptr; in appendAttributeValue()
5945 storeEntityValue(XML_Parser parser, const ENCODING *enc, in storeEntityValue() argument
5948 DTD *const dtd = parser->m_dtd; /* save one level of indirection */ in storeEntityValue()
5952 int oldInEntityValue = parser->m_prologState.inEntityValue; in storeEntityValue()
5953 parser->m_prologState.inEntityValue = 1; in storeEntityValue()
5971 if (! accountingDiffTolerated(parser, tok, entityTextPtr, next, __LINE__, in storeEntityValue()
5973 accountingOnAbort(parser); in storeEntityValue()
5982 if (parser->m_isParamEntity || enc != parser->m_encoding) { in storeEntityValue()
5985 name = poolStoreString(&parser->m_tempPool, enc, in storeEntityValue()
5992 entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0); in storeEntityValue()
5993 poolDiscard(&parser->m_tempPool); in storeEntityValue()
5997 parser->m_skippedEntityHandler in storeEntityValue()
5998 if (parser->m_skippedEntityHandler) in storeEntityValue()
5999 parser->m_skippedEntityHandler(parser->m_handlerArg, name, 0); in storeEntityValue()
6005 if (enc == parser->m_encoding) in storeEntityValue()
6006 parser->m_eventPtr = entityTextPtr; in storeEntityValue()
6011 if (parser->m_externalEntityRefHandler) { in storeEntityValue()
6014 entityTrackingOnOpen(parser, entity, __LINE__); in storeEntityValue()
6015 if (! parser->m_externalEntityRefHandler( in storeEntityValue()
6016 parser->m_externalEntityRefHandlerArg, 0, entity->base, in storeEntityValue()
6018 entityTrackingOnClose(parser, entity, __LINE__); in storeEntityValue()
6023 entityTrackingOnClose(parser, entity, __LINE__); in storeEntityValue()
6031 entityTrackingOnOpen(parser, entity, __LINE__); in storeEntityValue()
6033 parser, parser->m_internalEncoding, (const char *)entity->textPtr, in storeEntityValue()
6036 entityTrackingOnClose(parser, entity, __LINE__); in storeEntityValue()
6046 parser->m_eventPtr = entityTextPtr; in storeEntityValue()
6074 if (enc == parser->m_encoding) in storeEntityValue()
6075 parser->m_eventPtr = entityTextPtr; in storeEntityValue()
6098 if (enc == parser->m_encoding) in storeEntityValue()
6099 parser->m_eventPtr = entityTextPtr; in storeEntityValue()
6103 if (enc == parser->m_encoding) in storeEntityValue()
6104 parser->m_eventPtr = next; in storeEntityValue()
6115 if (enc == parser->m_encoding) in storeEntityValue()
6116 parser->m_eventPtr = entityTextPtr; in storeEntityValue()
6125 parser->m_prologState.inEntityValue = oldInEntityValue; in storeEntityValue()
6152 reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, in reportProcessingInstruction() argument
6157 if (! parser->m_processingInstructionHandler) { in reportProcessingInstruction()
6158 if (parser->m_defaultHandler) in reportProcessingInstruction()
6159 reportDefault(parser, enc, start, end); in reportProcessingInstruction()
6164 target = poolStoreString(&parser->m_tempPool, enc, start, tem); in reportProcessingInstruction()
6167 poolFinish(&parser->m_tempPool); in reportProcessingInstruction()
6168 data = poolStoreString(&parser->m_tempPool, enc, XmlSkipS(enc, tem), in reportProcessingInstruction()
6173 parser->m_processingInstructionHandler(parser->m_handlerArg, target, data); in reportProcessingInstruction()
6174 poolClear(&parser->m_tempPool); in reportProcessingInstruction()
6179 reportComment(XML_Parser parser, const ENCODING *enc, const char *start, in reportComment() argument
6182 if (! parser->m_commentHandler) { in reportComment()
6183 if (parser->m_defaultHandler) in reportComment()
6184 reportDefault(parser, enc, start, end); in reportComment()
6187 data = poolStoreString(&parser->m_tempPool, enc, in reportComment()
6193 parser->m_commentHandler(parser->m_handlerArg, data); in reportComment()
6194 poolClear(&parser->m_tempPool); in reportComment()
6199 reportDefault(XML_Parser parser, const ENCODING *enc, const char *s, in reportDefault() argument
6205 if (enc == parser->m_encoding) { in reportDefault()
6206 eventPP = &parser->m_eventPtr; in reportDefault()
6207 eventEndPP = &parser->m_eventEndPtr; in reportDefault()
6209 /* To get here, two things must be true; the parser must be in reportDefault()
6214 * in is not the same as the parser's encoding are when it is in reportDefault()
6225 eventPP = &(parser->m_openInternalEntities->internalEventPtr); in reportDefault()
6226 eventEndPP = &(parser->m_openInternalEntities->internalEventEndPtr); in reportDefault()
6230 ICHAR *dataPtr = (ICHAR *)parser->m_dataBuf; in reportDefault()
6232 = XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)parser->m_dataBufEnd); in reportDefault()
6234 parser->m_defaultHandler(parser->m_handlerArg, parser->m_dataBuf, in reportDefault()
6235 (int)(dataPtr - (ICHAR *)parser->m_dataBuf)); in reportDefault()
6240 parser->m_defaultHandler(parser->m_handlerArg, (XML_Char *)s, in reportDefault()
6246 XML_Bool isId, const XML_Char *value, XML_Parser parser) { in defineAttribute() argument
6262 parser, type->allocDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); in defineAttribute()
6287 temp = (DEFAULT_ATTRIBUTE *)REALLOC(parser, type->defaultAtts, in defineAttribute()
6306 setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType) { in setElementTypePrefix() argument
6307 DTD *const dtd = parser->m_dtd; /* save one level of indirection */ in setElementTypePrefix()
6319 prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&dtd->pool), in setElementTypePrefix()
6335 getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start, in getAttributeId() argument
6337 DTD *const dtd = parser->m_dtd; /* save one level of indirection */ in getAttributeId()
6347 id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, name, in getAttributeId()
6355 if (! parser->m_ns) in getAttributeId()
6364 id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, name + 6, in getAttributeId()
6379 id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, in getAttributeId()
6398 getContext(XML_Parser parser) { in getContext() argument
6399 DTD *const dtd = parser->m_dtd; /* save one level of indirection */ in getContext()
6406 if (! poolAppendChar(&parser->m_tempPool, XML_T(ASCII_EQUALS))) in getContext()
6409 if (parser->m_namespaceSeparator) in getContext()
6412 if (! poolAppendChar(&parser->m_tempPool, in getContext()
6418 * URI into the parser's temporary string pool. Previously, in getContext()
6456 if (needSep && ! poolAppendChar(&parser->m_tempPool, CONTEXT_SEP)) in getContext()
6459 if (! poolAppendChar(&parser->m_tempPool, *s)) in getContext()
6461 if (! poolAppendChar(&parser->m_tempPool, XML_T(ASCII_EQUALS))) in getContext()
6464 if (parser->m_namespaceSeparator) in getContext()
6467 if (! poolAppendChar(&parser->m_tempPool, prefix->binding->uri[i])) in getContext()
6480 if (needSep && ! poolAppendChar(&parser->m_tempPool, CONTEXT_SEP)) in getContext()
6483 if (! poolAppendChar(&parser->m_tempPool, *s)) in getContext()
6488 if (! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) in getContext()
6490 return parser->m_tempPool.start; in getContext()
6494 setContext(XML_Parser parser, const XML_Char *context) { in setContext() argument
6495 DTD *const dtd = parser->m_dtd; /* save one level of indirection */ in setContext()
6501 if (! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) in setContext()
6503 e = (ENTITY *)lookup(parser, &dtd->generalEntities, in setContext()
6504 poolStart(&parser->m_tempPool), 0); in setContext()
6510 poolDiscard(&parser->m_tempPool); in setContext()
6513 if (poolLength(&parser->m_tempPool) == 0) in setContext()
6516 if (! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) in setContext()
6519 = (PREFIX *)lookup(parser, &dtd->prefixes, in setContext()
6520 poolStart(&parser->m_tempPool), sizeof(PREFIX)); in setContext()
6523 if (prefix->name == poolStart(&parser->m_tempPool)) { in setContext()
6528 poolDiscard(&parser->m_tempPool); in setContext()
6532 if (! poolAppendChar(&parser->m_tempPool, *context)) in setContext()
6534 if (! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) in setContext()
6536 if (addBinding(parser, prefix, NULL, poolStart(&parser->m_tempPool), in setContext()
6537 &parser->m_inheritedBindings) in setContext()
6540 poolDiscard(&parser->m_tempPool); in setContext()
6545 if (! poolAppendChar(&parser->m_tempPool, *s)) in setContext()
6885 copy_salt_to_sipkey(XML_Parser parser, struct sipkey *key) { in copy_salt_to_sipkey() argument
6887 key->k[1] = get_hash_secret_salt(parser); in copy_salt_to_sipkey()
6891 hash(XML_Parser parser, KEY s) { in hash() argument
6895 copy_salt_to_sipkey(parser, &key); in hash()
6902 lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) { in lookup() argument
6918 i = hash(parser, name) & ((unsigned long)table->size - 1); in lookup()
6920 unsigned long h = hash(parser, name); in lookup()
6958 unsigned long newHash = hash(parser, table->v[i]->name); in lookup()
7285 nextScaffoldPart(XML_Parser parser) { in nextScaffoldPart() argument
7286 DTD *const dtd = parser->m_dtd; /* save one level of indirection */ in nextScaffoldPart()
7291 dtd->scaffIndex = (int *)MALLOC(parser, parser->m_groupSize * sizeof(int)); in nextScaffoldPart()
7315 parser, dtd->scaffold, dtd->scaffSize * 2 * sizeof(CONTENT_SCAFFOLD)); in nextScaffoldPart()
7320 temp = (CONTENT_SCAFFOLD *)MALLOC(parser, INIT_SCAFFOLD_ELEMENTS in nextScaffoldPart()
7346 build_model(XML_Parser parser) { in build_model() argument
7347 /* Function build_model transforms the existing parser->m_dtd->scaffold in build_model()
7351 DTD *const dtd = parser->m_dtd; /* save one level of indirection */ in build_model()
7375 ret = (XML_Content *)MALLOC(parser, allocsize); in build_model()
7458 getElementType(XML_Parser parser, const ENCODING *enc, const char *ptr, in getElementType() argument
7460 DTD *const dtd = parser->m_dtd; /* save one level of indirection */ in getElementType()
7466 ret = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, name, in getElementType()
7474 if (! setElementTypePrefix(parser, ret)) in getElementType()
7634 testingAccountingGetCountBytesDirect(XML_Parser parser) { in testingAccountingGetCountBytesDirect() argument
7635 if (! parser) in testingAccountingGetCountBytesDirect()
7637 return parser->m_accounting.countBytesDirect; in testingAccountingGetCountBytesDirect()
7641 testingAccountingGetCountBytesIndirect(XML_Parser parser) { in testingAccountingGetCountBytesIndirect() argument
7642 if (! parser) in testingAccountingGetCountBytesIndirect()
7644 return parser->m_accounting.countBytesIndirect; in testingAccountingGetCountBytesIndirect()
7696 getRootParserOf(XML_Parser parser, unsigned int *outLevelDiff) { in getRootParserOf() argument
7697 XML_Parser rootParser = parser; in getRootParserOf()