Lines Matching full:parser
7 |_| XML parser
242 static void copy_salt_to_sipkey(XML_Parser parser, struct sipkey *key);
305 A parser reuses these structures, maintaining a list of allocated
428 XML_ACCOUNT_DIRECT, /* bytes directly passed to the Expat parser */
452 typedef enum XML_Error PTRCALL Processor(XML_Parser parser, const char *start,
474 static enum XML_Error handleUnknownEncoding(XML_Parser parser,
476 static enum XML_Error processXmlDecl(XML_Parser parser, int isGeneralTextEntity,
478 static enum XML_Error initializeEncoding(XML_Parser parser);
479 static enum XML_Error doProlog(XML_Parser parser, const ENCODING *enc,
484 static enum XML_Error processInternalEntity(XML_Parser parser, ENTITY *entity,
486 static enum XML_Error doContent(XML_Parser parser, int startTagLevel,
490 static enum XML_Error doCdataSection(XML_Parser parser, const ENCODING *enc,
495 static enum XML_Error doIgnoreSection(XML_Parser parser, const ENCODING *enc,
500 static void freeBindings(XML_Parser parser, BINDING *bindings);
501 static enum XML_Error storeAtts(XML_Parser parser, const ENCODING *enc,
505 static enum XML_Error addBinding(XML_Parser parser, PREFIX *prefix,
510 const XML_Char *value, XML_Parser parser);
511 static enum XML_Error storeAttributeValue(XML_Parser parser,
516 static enum XML_Error appendAttributeValue(XML_Parser parser,
521 static ATTRIBUTE_ID *getAttributeId(XML_Parser parser, const ENCODING *enc,
523 static int setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType);
525 static enum XML_Error storeEntityValue(XML_Parser parser, const ENCODING *enc,
529 static enum XML_Error storeSelfEntityValue(XML_Parser parser, ENTITY *entity);
531 static int reportProcessingInstruction(XML_Parser parser, const ENCODING *enc,
533 static int reportComment(XML_Parser parser, const ENCODING *enc,
535 static void reportDefault(XML_Parser parser, const ENCODING *enc,
538 static const XML_Char *getContext(XML_Parser parser);
539 static XML_Bool setContext(XML_Parser parser, const XML_Char *context);
552 static NAMED *lookup(XML_Parser parser, HASH_TABLE *table, KEY name,
578 static int FASTCALL nextScaffoldPart(XML_Parser parser);
579 static XML_Content *build_model(XML_Parser parser);
580 static ELEMENT_TYPE *getElementType(XML_Parser parser, const ENCODING *enc,
586 static unsigned long generate_hash_secret_salt(XML_Parser parser);
587 static XML_Bool startParsing(XML_Parser parser);
593 static void parserInit(XML_Parser parser, const XML_Char *encodingName);
609 static void entityTrackingReportStats(XML_Parser parser, ENTITY *entity,
611 static void entityTrackingOnOpen(XML_Parser parser, ENTITY *entity,
613 static void entityTrackingOnClose(XML_Parser parser, ENTITY *entity,
616 static XML_Parser getRootParserOf(XML_Parser parser,
761 #define MALLOC(parser, s) (parser->m_mem.malloc_fcn((s))) argument
762 #define REALLOC(parser, p, s) (parser->m_mem.realloc_fcn((p), (s))) argument
763 #define FREE(parser, p) (parser->m_mem.free_fcn((p))) argument
951 generate_hash_secret_salt(XML_Parser parser) { in generate_hash_secret_salt() argument
953 (void)parser; in generate_hash_secret_salt()
994 get_hash_secret_salt(XML_Parser parser) { in get_hash_secret_salt() argument
995 if (parser->m_parentParser != NULL) in get_hash_secret_salt()
996 return get_hash_secret_salt(parser->m_parentParser); in get_hash_secret_salt()
997 return parser->m_hash_secret_salt; in get_hash_secret_salt()
1001 callProcessor(XML_Parser parser, const char *start, const char *end, in callProcessor() argument
1005 if (parser->m_reparseDeferralEnabled in callProcessor()
1006 && ! parser->m_parsingStatus.finalBuffer) { in callProcessor()
1009 const size_t had_before = parser->m_partialTokenBytesBefore; in callProcessor()
1012 = EXPAT_SAFE_PTR_DIFF(parser->m_bufferPtr, parser->m_buffer); in callProcessor()
1017 += EXPAT_SAFE_PTR_DIFF(parser->m_bufferLim, parser->m_bufferEnd); in callProcessor()
1021 || ((size_t)parser->m_lastBufferRequestSize > available_buffer); in callProcessor()
1031 const enum XML_Error ret = parser->m_processor(parser, start, end, endPtr); in callProcessor()
1035 parser->m_partialTokenBytesBefore = have_now; in callProcessor()
1037 parser->m_partialTokenBytesBefore = 0; in callProcessor()
1043 static XML_Bool /* only valid for root parser */
1044 startParsing(XML_Parser parser) { in startParsing() argument
1046 if (parser->m_hash_secret_salt == 0) in startParsing()
1047 parser->m_hash_secret_salt = generate_hash_secret_salt(parser); in startParsing()
1048 if (parser->m_ns) { in startParsing()
1049 /* implicit context only set for root parser, since child in startParsing()
1052 return setContext(parser, implicitContext); in startParsing()
1068 XML_Parser parser; in parserCreate() local
1072 parser = memsuite->malloc_fcn(sizeof(struct XML_ParserStruct)); in parserCreate()
1073 if (parser != NULL) { in parserCreate()
1074 mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem); in parserCreate()
1081 parser = (XML_Parser)malloc(sizeof(struct XML_ParserStruct)); in parserCreate()
1082 if (parser != NULL) { in parserCreate()
1083 mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem); in parserCreate()
1090 if (! parser) in parserCreate()
1091 return parser; in parserCreate()
1093 parser->m_buffer = NULL; in parserCreate()
1094 parser->m_bufferLim = NULL; in parserCreate()
1096 parser->m_attsSize = INIT_ATTS_SIZE; in parserCreate()
1097 parser->m_atts in parserCreate()
1098 = (ATTRIBUTE *)MALLOC(parser, parser->m_attsSize * sizeof(ATTRIBUTE)); in parserCreate()
1099 if (parser->m_atts == NULL) { in parserCreate()
1100 FREE(parser, parser); in parserCreate()
1104 parser->m_attInfo = (XML_AttrInfo *)MALLOC( in parserCreate()
1105 parser, parser->m_attsSize * sizeof(XML_AttrInfo)); in parserCreate()
1106 if (parser->m_attInfo == NULL) { in parserCreate()
1107 FREE(parser, parser->m_atts); in parserCreate()
1108 FREE(parser, parser); in parserCreate()
1112 parser->m_dataBuf in parserCreate()
1113 = (XML_Char *)MALLOC(parser, INIT_DATA_BUF_SIZE * sizeof(XML_Char)); in parserCreate()
1114 if (parser->m_dataBuf == NULL) { in parserCreate()
1115 FREE(parser, parser->m_atts); in parserCreate()
1117 FREE(parser, parser->m_attInfo); in parserCreate()
1119 FREE(parser, parser); in parserCreate()
1122 parser->m_dataBufEnd = parser->m_dataBuf + INIT_DATA_BUF_SIZE; in parserCreate()
1125 parser->m_dtd = dtd; in parserCreate()
1127 parser->m_dtd = dtdCreate(&parser->m_mem); in parserCreate()
1128 if (parser->m_dtd == NULL) { in parserCreate()
1129 FREE(parser, parser->m_dataBuf); in parserCreate()
1130 FREE(parser, parser->m_atts); in parserCreate()
1132 FREE(parser, parser->m_attInfo); in parserCreate()
1134 FREE(parser, parser); in parserCreate()
1139 parser->m_freeBindingList = NULL; in parserCreate()
1140 parser->m_freeTagList = NULL; in parserCreate()
1141 parser->m_freeInternalEntities = NULL; in parserCreate()
1143 parser->m_groupSize = 0; in parserCreate()
1144 parser->m_groupConnector = NULL; in parserCreate()
1146 parser->m_unknownEncodingHandler = NULL; in parserCreate()
1147 parser->m_unknownEncodingHandlerData = NULL; in parserCreate()
1149 parser->m_namespaceSeparator = ASCII_EXCL; in parserCreate()
1150 parser->m_ns = XML_FALSE; in parserCreate()
1151 parser->m_ns_triplets = XML_FALSE; in parserCreate()
1153 parser->m_nsAtts = NULL; in parserCreate()
1154 parser->m_nsAttsVersion = 0; in parserCreate()
1155 parser->m_nsAttsPower = 0; in parserCreate()
1157 parser->m_protocolEncodingName = NULL; in parserCreate()
1159 poolInit(&parser->m_tempPool, &(parser->m_mem)); in parserCreate()
1160 poolInit(&parser->m_temp2Pool, &(parser->m_mem)); in parserCreate()
1161 parserInit(parser, encodingName); in parserCreate()
1163 if (encodingName && ! parser->m_protocolEncodingName) { in parserCreate()
1166 // destroying parser->m_dtd because the DTD is shared with the parent in parserCreate()
1167 // parser and the only guard that keeps XML_ParserFree from destroying in parserCreate()
1168 // parser->m_dtd is parser->m_isParamEntity but it will be set to in parserCreate()
1170 parser->m_dtd = NULL; in parserCreate()
1172 XML_ParserFree(parser); in parserCreate()
1177 parser->m_ns = XML_TRUE; in parserCreate()
1178 parser->m_internalEncoding = XmlGetInternalEncodingNS(); in parserCreate()
1179 parser->m_namespaceSeparator = *nameSep; in parserCreate()
1181 parser->m_internalEncoding = XmlGetInternalEncoding(); in parserCreate()
1184 return parser; in parserCreate()
1188 parserInit(XML_Parser parser, const XML_Char *encodingName) { in parserInit() argument
1189 parser->m_processor = prologInitProcessor; in parserInit()
1190 XmlPrologStateInit(&parser->m_prologState); in parserInit()
1192 parser->m_protocolEncodingName = copyString(encodingName, &(parser->m_mem)); in parserInit()
1194 parser->m_curBase = NULL; in parserInit()
1195 XmlInitEncoding(&parser->m_initEncoding, &parser->m_encoding, 0); in parserInit()
1196 parser->m_userData = NULL; in parserInit()
1197 parser->m_handlerArg = NULL; in parserInit()
1198 parser->m_startElementHandler = NULL; in parserInit()
1199 parser->m_endElementHandler = NULL; in parserInit()
1200 parser->m_characterDataHandler = NULL; in parserInit()
1201 parser->m_processingInstructionHandler = NULL; in parserInit()
1202 parser->m_commentHandler = NULL; in parserInit()
1203 parser->m_startCdataSectionHandler = NULL; in parserInit()
1204 parser->m_endCdataSectionHandler = NULL; in parserInit()
1205 parser->m_defaultHandler = NULL; in parserInit()
1206 parser->m_startDoctypeDeclHandler = NULL; in parserInit()
1207 parser->m_endDoctypeDeclHandler = NULL; in parserInit()
1208 parser->m_unparsedEntityDeclHandler = NULL; in parserInit()
1209 parser->m_notationDeclHandler = NULL; in parserInit()
1210 parser->m_startNamespaceDeclHandler = NULL; in parserInit()
1211 parser->m_endNamespaceDeclHandler = NULL; in parserInit()
1212 parser->m_notStandaloneHandler = NULL; in parserInit()
1213 parser->m_externalEntityRefHandler = NULL; in parserInit()
1214 parser->m_externalEntityRefHandlerArg = parser; in parserInit()
1215 parser->m_skippedEntityHandler = NULL; in parserInit()
1216 parser->m_elementDeclHandler = NULL; in parserInit()
1217 parser->m_attlistDeclHandler = NULL; in parserInit()
1218 parser->m_entityDeclHandler = NULL; in parserInit()
1219 parser->m_xmlDeclHandler = NULL; in parserInit()
1220 parser->m_bufferPtr = parser->m_buffer; in parserInit()
1221 parser->m_bufferEnd = parser->m_buffer; in parserInit()
1222 parser->m_parseEndByteIndex = 0; in parserInit()
1223 parser->m_parseEndPtr = NULL; in parserInit()
1224 parser->m_partialTokenBytesBefore = 0; in parserInit()
1225 parser->m_reparseDeferralEnabled = g_reparseDeferralEnabledDefault; in parserInit()
1226 parser->m_lastBufferRequestSize = 0; in parserInit()
1227 parser->m_declElementType = NULL; in parserInit()
1228 parser->m_declAttributeId = NULL; in parserInit()
1229 parser->m_declEntity = NULL; in parserInit()
1230 parser->m_doctypeName = NULL; in parserInit()
1231 parser->m_doctypeSysid = NULL; in parserInit()
1232 parser->m_doctypePubid = NULL; in parserInit()
1233 parser->m_declAttributeType = NULL; in parserInit()
1234 parser->m_declNotationName = NULL; in parserInit()
1235 parser->m_declNotationPublicId = NULL; in parserInit()
1236 parser->m_declAttributeIsCdata = XML_FALSE; in parserInit()
1237 parser->m_declAttributeIsId = XML_FALSE; in parserInit()
1238 memset(&parser->m_position, 0, sizeof(POSITION)); in parserInit()
1239 parser->m_errorCode = XML_ERROR_NONE; in parserInit()
1240 parser->m_eventPtr = NULL; in parserInit()
1241 parser->m_eventEndPtr = NULL; in parserInit()
1242 parser->m_positionPtr = NULL; in parserInit()
1243 parser->m_openInternalEntities = NULL; in parserInit()
1244 parser->m_defaultExpandInternalEntities = XML_TRUE; in parserInit()
1245 parser->m_tagLevel = 0; in parserInit()
1246 parser->m_tagStack = NULL; in parserInit()
1247 parser->m_inheritedBindings = NULL; in parserInit()
1248 parser->m_nSpecifiedAtts = 0; in parserInit()
1249 parser->m_unknownEncodingMem = NULL; in parserInit()
1250 parser->m_unknownEncodingRelease = NULL; in parserInit()
1251 parser->m_unknownEncodingData = NULL; in parserInit()
1252 parser->m_parentParser = NULL; in parserInit()
1253 parser->m_parsingStatus.parsing = XML_INITIALIZED; in parserInit()
1255 parser->m_isParamEntity = XML_FALSE; in parserInit()
1256 parser->m_useForeignDTD = XML_FALSE; in parserInit()
1257 parser->m_paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; in parserInit()
1259 parser->m_hash_secret_salt = 0; in parserInit()
1262 memset(&parser->m_accounting, 0, sizeof(ACCOUNTING)); in parserInit()
1263 parser->m_accounting.debugLevel = getDebugLevel("EXPAT_ACCOUNTING_DEBUG", 0u); in parserInit()
1264 parser->m_accounting.maximumAmplificationFactor in parserInit()
1266 parser->m_accounting.activationThresholdBytes in parserInit()
1269 memset(&parser->m_entity_stats, 0, sizeof(ENTITY_STATS)); in parserInit()
1270 parser->m_entity_stats.debugLevel = getDebugLevel("EXPAT_ENTITY_DEBUG", 0u); in parserInit()
1276 moveToFreeBindingList(XML_Parser parser, BINDING *bindings) { in moveToFreeBindingList() argument
1280 b->nextTagBinding = parser->m_freeBindingList; in moveToFreeBindingList()
1281 parser->m_freeBindingList = b; in moveToFreeBindingList()
1286 XML_ParserReset(XML_Parser parser, const XML_Char *encodingName) { in XML_ParserReset() argument
1290 if (parser == NULL) in XML_ParserReset()
1293 if (parser->m_parentParser) in XML_ParserReset()
1296 tStk = parser->m_tagStack; in XML_ParserReset()
1300 tag->parent = parser->m_freeTagList; in XML_ParserReset()
1301 moveToFreeBindingList(parser, tag->bindings); in XML_ParserReset()
1303 parser->m_freeTagList = tag; in XML_ParserReset()
1306 openEntityList = parser->m_openInternalEntities; in XML_ParserReset()
1310 openEntity->next = parser->m_freeInternalEntities; in XML_ParserReset()
1311 parser->m_freeInternalEntities = openEntity; in XML_ParserReset()
1313 moveToFreeBindingList(parser, parser->m_inheritedBindings); in XML_ParserReset()
1314 FREE(parser, parser->m_unknownEncodingMem); in XML_ParserReset()
1315 if (parser->m_unknownEncodingRelease) in XML_ParserReset()
1316 parser->m_unknownEncodingRelease(parser->m_unknownEncodingData); in XML_ParserReset()
1317 poolClear(&parser->m_tempPool); in XML_ParserReset()
1318 poolClear(&parser->m_temp2Pool); in XML_ParserReset()
1319 FREE(parser, (void *)parser->m_protocolEncodingName); in XML_ParserReset()
1320 parser->m_protocolEncodingName = NULL; in XML_ParserReset()
1321 parserInit(parser, encodingName); in XML_ParserReset()
1322 dtdReset(parser->m_dtd, &parser->m_mem); in XML_ParserReset()
1327 XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName) { in XML_SetEncoding() argument
1328 if (parser == NULL) in XML_SetEncoding()
1334 if (parser->m_parsingStatus.parsing == XML_PARSING in XML_SetEncoding()
1335 || parser->m_parsingStatus.parsing == XML_SUSPENDED) in XML_SetEncoding()
1339 FREE(parser, (void *)parser->m_protocolEncodingName); in XML_SetEncoding()
1343 parser->m_protocolEncodingName = NULL; in XML_SetEncoding()
1346 parser->m_protocolEncodingName = copyString(encodingName, &(parser->m_mem)); in XML_SetEncoding()
1347 if (! parser->m_protocolEncodingName) in XML_SetEncoding()
1356 XML_Parser parser = oldParser; in XML_ExternalEntityParserCreate() local
1390 /* Note that the new parser shares the same hash secret as the old in XML_ExternalEntityParserCreate()
1391 parser, so that dtdCopy and copyEntityTable can lookup values in XML_ExternalEntityParserCreate()
1392 from hash tables associated with either parser without us having in XML_ExternalEntityParserCreate()
1402 /* Stash the original parser contents on the stack */ in XML_ExternalEntityParserCreate()
1403 oldDtd = parser->m_dtd; in XML_ExternalEntityParserCreate()
1404 oldStartElementHandler = parser->m_startElementHandler; in XML_ExternalEntityParserCreate()
1405 oldEndElementHandler = parser->m_endElementHandler; in XML_ExternalEntityParserCreate()
1406 oldCharacterDataHandler = parser->m_characterDataHandler; in XML_ExternalEntityParserCreate()
1407 oldProcessingInstructionHandler = parser->m_processingInstructionHandler; in XML_ExternalEntityParserCreate()
1408 oldCommentHandler = parser->m_commentHandler; in XML_ExternalEntityParserCreate()
1409 oldStartCdataSectionHandler = parser->m_startCdataSectionHandler; in XML_ExternalEntityParserCreate()
1410 oldEndCdataSectionHandler = parser->m_endCdataSectionHandler; in XML_ExternalEntityParserCreate()
1411 oldDefaultHandler = parser->m_defaultHandler; in XML_ExternalEntityParserCreate()
1412 oldUnparsedEntityDeclHandler = parser->m_unparsedEntityDeclHandler; in XML_ExternalEntityParserCreate()
1413 oldNotationDeclHandler = parser->m_notationDeclHandler; in XML_ExternalEntityParserCreate()
1414 oldStartNamespaceDeclHandler = parser->m_startNamespaceDeclHandler; in XML_ExternalEntityParserCreate()
1415 oldEndNamespaceDeclHandler = parser->m_endNamespaceDeclHandler; in XML_ExternalEntityParserCreate()
1416 oldNotStandaloneHandler = parser->m_notStandaloneHandler; in XML_ExternalEntityParserCreate()
1417 oldExternalEntityRefHandler = parser->m_externalEntityRefHandler; in XML_ExternalEntityParserCreate()
1418 oldSkippedEntityHandler = parser->m_skippedEntityHandler; in XML_ExternalEntityParserCreate()
1419 oldUnknownEncodingHandler = parser->m_unknownEncodingHandler; in XML_ExternalEntityParserCreate()
1420 oldElementDeclHandler = parser->m_elementDeclHandler; in XML_ExternalEntityParserCreate()
1421 oldAttlistDeclHandler = parser->m_attlistDeclHandler; in XML_ExternalEntityParserCreate()
1422 oldEntityDeclHandler = parser->m_entityDeclHandler; in XML_ExternalEntityParserCreate()
1423 oldXmlDeclHandler = parser->m_xmlDeclHandler; in XML_ExternalEntityParserCreate()
1424 oldDeclElementType = parser->m_declElementType; in XML_ExternalEntityParserCreate()
1426 oldUserData = parser->m_userData; in XML_ExternalEntityParserCreate()
1427 oldHandlerArg = parser->m_handlerArg; in XML_ExternalEntityParserCreate()
1428 oldDefaultExpandInternalEntities = parser->m_defaultExpandInternalEntities; in XML_ExternalEntityParserCreate()
1429 oldExternalEntityRefHandlerArg = parser->m_externalEntityRefHandlerArg; in XML_ExternalEntityParserCreate()
1431 oldParamEntityParsing = parser->m_paramEntityParsing; in XML_ExternalEntityParserCreate()
1432 oldInEntityValue = parser->m_prologState.inEntityValue; in XML_ExternalEntityParserCreate()
1434 oldns_triplets = parser->m_ns_triplets; in XML_ExternalEntityParserCreate()
1435 /* Note that the new parser shares the same hash secret as the old in XML_ExternalEntityParserCreate()
1436 parser, so that dtdCopy and copyEntityTable can lookup values in XML_ExternalEntityParserCreate()
1437 from hash tables associated with either parser without us having in XML_ExternalEntityParserCreate()
1440 oldhash_secret_salt = parser->m_hash_secret_salt; in XML_ExternalEntityParserCreate()
1441 oldReparseDeferralEnabled = parser->m_reparseDeferralEnabled; in XML_ExternalEntityParserCreate()
1449 access look more like C++ require that `parser' be overwritten in XML_ExternalEntityParserCreate()
1453 if (parser->m_ns) { in XML_ExternalEntityParserCreate()
1454 XML_Char tmp[2] = {parser->m_namespaceSeparator, 0}; in XML_ExternalEntityParserCreate()
1455 parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd); in XML_ExternalEntityParserCreate()
1457 parser = parserCreate(encodingName, &parser->m_mem, NULL, newDtd); in XML_ExternalEntityParserCreate()
1460 if (! parser) in XML_ExternalEntityParserCreate()
1463 parser->m_startElementHandler = oldStartElementHandler; in XML_ExternalEntityParserCreate()
1464 parser->m_endElementHandler = oldEndElementHandler; in XML_ExternalEntityParserCreate()
1465 parser->m_characterDataHandler = oldCharacterDataHandler; in XML_ExternalEntityParserCreate()
1466 parser->m_processingInstructionHandler = oldProcessingInstructionHandler; in XML_ExternalEntityParserCreate()
1467 parser->m_commentHandler = oldCommentHandler; in XML_ExternalEntityParserCreate()
1468 parser->m_startCdataSectionHandler = oldStartCdataSectionHandler; in XML_ExternalEntityParserCreate()
1469 parser->m_endCdataSectionHandler = oldEndCdataSectionHandler; in XML_ExternalEntityParserCreate()
1470 parser->m_defaultHandler = oldDefaultHandler; in XML_ExternalEntityParserCreate()
1471 parser->m_unparsedEntityDeclHandler = oldUnparsedEntityDeclHandler; in XML_ExternalEntityParserCreate()
1472 parser->m_notationDeclHandler = oldNotationDeclHandler; in XML_ExternalEntityParserCreate()
1473 parser->m_startNamespaceDeclHandler = oldStartNamespaceDeclHandler; in XML_ExternalEntityParserCreate()
1474 parser->m_endNamespaceDeclHandler = oldEndNamespaceDeclHandler; in XML_ExternalEntityParserCreate()
1475 parser->m_notStandaloneHandler = oldNotStandaloneHandler; in XML_ExternalEntityParserCreate()
1476 parser->m_externalEntityRefHandler = oldExternalEntityRefHandler; in XML_ExternalEntityParserCreate()
1477 parser->m_skippedEntityHandler = oldSkippedEntityHandler; in XML_ExternalEntityParserCreate()
1478 parser->m_unknownEncodingHandler = oldUnknownEncodingHandler; in XML_ExternalEntityParserCreate()
1479 parser->m_elementDeclHandler = oldElementDeclHandler; in XML_ExternalEntityParserCreate()
1480 parser->m_attlistDeclHandler = oldAttlistDeclHandler; in XML_ExternalEntityParserCreate()
1481 parser->m_entityDeclHandler = oldEntityDeclHandler; in XML_ExternalEntityParserCreate()
1482 parser->m_xmlDeclHandler = oldXmlDeclHandler; in XML_ExternalEntityParserCreate()
1483 parser->m_declElementType = oldDeclElementType; in XML_ExternalEntityParserCreate()
1484 parser->m_userData = oldUserData; in XML_ExternalEntityParserCreate()
1486 parser->m_handlerArg = parser->m_userData; in XML_ExternalEntityParserCreate()
1488 parser->m_handlerArg = parser; in XML_ExternalEntityParserCreate()
1490 parser->m_externalEntityRefHandlerArg = oldExternalEntityRefHandlerArg; in XML_ExternalEntityParserCreate()
1491 parser->m_defaultExpandInternalEntities = oldDefaultExpandInternalEntities; in XML_ExternalEntityParserCreate()
1492 parser->m_ns_triplets = oldns_triplets; in XML_ExternalEntityParserCreate()
1493 parser->m_hash_secret_salt = oldhash_secret_salt; in XML_ExternalEntityParserCreate()
1494 parser->m_reparseDeferralEnabled = oldReparseDeferralEnabled; in XML_ExternalEntityParserCreate()
1495 parser->m_parentParser = oldParser; in XML_ExternalEntityParserCreate()
1497 parser->m_paramEntityParsing = oldParamEntityParsing; in XML_ExternalEntityParserCreate()
1498 parser->m_prologState.inEntityValue = oldInEntityValue; in XML_ExternalEntityParserCreate()
1501 if (! dtdCopy(oldParser, parser->m_dtd, oldDtd, &parser->m_mem) in XML_ExternalEntityParserCreate()
1502 || ! setContext(parser, context)) { in XML_ExternalEntityParserCreate()
1503 XML_ParserFree(parser); in XML_ExternalEntityParserCreate()
1506 parser->m_processor = externalEntityInitProcessor; in XML_ExternalEntityParserCreate()
1509 /* The DTD instance referenced by parser->m_dtd is shared between the in XML_ExternalEntityParserCreate()
1510 document's root parser and external PE parsers, therefore one does not in XML_ExternalEntityParserCreate()
1513 pointers in parser->m_dtd with ones that get destroyed with the external in XML_ExternalEntityParserCreate()
1514 PE parser. This would leave those prefixes with dangling pointers. in XML_ExternalEntityParserCreate()
1516 parser->m_isParamEntity = XML_TRUE; in XML_ExternalEntityParserCreate()
1517 XmlPrologStateInitExternalEntity(&parser->m_prologState); in XML_ExternalEntityParserCreate()
1518 parser->m_processor = externalParEntInitProcessor; in XML_ExternalEntityParserCreate()
1521 return parser; in XML_ExternalEntityParserCreate()
1525 destroyBindings(BINDING *bindings, XML_Parser parser) { in destroyBindings() argument
1531 FREE(parser, b->uri); in destroyBindings()
1532 FREE(parser, b); in destroyBindings()
1537 XML_ParserFree(XML_Parser parser) { in XML_ParserFree() argument
1540 if (parser == NULL) in XML_ParserFree()
1543 tagList = parser->m_tagStack; in XML_ParserFree()
1547 if (parser->m_freeTagList == NULL) in XML_ParserFree()
1549 tagList = parser->m_freeTagList; in XML_ParserFree()
1550 parser->m_freeTagList = NULL; in XML_ParserFree()
1554 FREE(parser, p->buf); in XML_ParserFree()
1555 destroyBindings(p->bindings, parser); in XML_ParserFree()
1556 FREE(parser, p); in XML_ParserFree()
1559 entityList = parser->m_openInternalEntities; in XML_ParserFree()
1563 if (parser->m_freeInternalEntities == NULL) in XML_ParserFree()
1565 entityList = parser->m_freeInternalEntities; in XML_ParserFree()
1566 parser->m_freeInternalEntities = NULL; in XML_ParserFree()
1570 FREE(parser, openEntity); in XML_ParserFree()
1573 destroyBindings(parser->m_freeBindingList, parser); in XML_ParserFree()
1574 destroyBindings(parser->m_inheritedBindings, parser); in XML_ParserFree()
1575 poolDestroy(&parser->m_tempPool); in XML_ParserFree()
1576 poolDestroy(&parser->m_temp2Pool); in XML_ParserFree()
1577 FREE(parser, (void *)parser->m_protocolEncodingName); in XML_ParserFree()
1580 parser->m_dtd with the root parser, so we must not destroy it in XML_ParserFree()
1582 if (! parser->m_isParamEntity && parser->m_dtd) in XML_ParserFree()
1584 if (parser->m_dtd) in XML_ParserFree()
1586 dtdDestroy(parser->m_dtd, (XML_Bool)! parser->m_parentParser, in XML_ParserFree()
1587 &parser->m_mem); in XML_ParserFree()
1588 FREE(parser, (void *)parser->m_atts); in XML_ParserFree()
1590 FREE(parser, (void *)parser->m_attInfo); in XML_ParserFree()
1592 FREE(parser, parser->m_groupConnector); in XML_ParserFree()
1593 FREE(parser, parser->m_buffer); in XML_ParserFree()
1594 FREE(parser, parser->m_dataBuf); in XML_ParserFree()
1595 FREE(parser, parser->m_nsAtts); in XML_ParserFree()
1596 FREE(parser, parser->m_unknownEncodingMem); in XML_ParserFree()
1597 if (parser->m_unknownEncodingRelease) in XML_ParserFree()
1598 parser->m_unknownEncodingRelease(parser->m_unknownEncodingData); in XML_ParserFree()
1599 FREE(parser, parser); in XML_ParserFree()
1603 XML_UseParserAsHandlerArg(XML_Parser parser) { in XML_UseParserAsHandlerArg() argument
1604 if (parser != NULL) in XML_UseParserAsHandlerArg()
1605 parser->m_handlerArg = parser; in XML_UseParserAsHandlerArg()
1609 XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD) { in XML_UseForeignDTD() argument
1610 if (parser == NULL) in XML_UseForeignDTD()
1614 if (parser->m_parsingStatus.parsing == XML_PARSING in XML_UseForeignDTD()
1615 || parser->m_parsingStatus.parsing == XML_SUSPENDED) in XML_UseForeignDTD()
1617 parser->m_useForeignDTD = useDTD; in XML_UseForeignDTD()
1626 XML_SetReturnNSTriplet(XML_Parser parser, int do_nst) { in XML_SetReturnNSTriplet() argument
1627 if (parser == NULL) in XML_SetReturnNSTriplet()
1630 if (parser->m_parsingStatus.parsing == XML_PARSING in XML_SetReturnNSTriplet()
1631 || parser->m_parsingStatus.parsing == XML_SUSPENDED) in XML_SetReturnNSTriplet()
1633 parser->m_ns_triplets = do_nst ? XML_TRUE : XML_FALSE; in XML_SetReturnNSTriplet()
1637 XML_SetUserData(XML_Parser parser, void *p) { in XML_SetUserData() argument
1638 if (parser == NULL) in XML_SetUserData()
1640 if (parser->m_handlerArg == parser->m_userData) in XML_SetUserData()
1641 parser->m_handlerArg = parser->m_userData = p; in XML_SetUserData()
1643 parser->m_userData = p; in XML_SetUserData()
1647 XML_SetBase(XML_Parser parser, const XML_Char *p) { in XML_SetBase() argument
1648 if (parser == NULL) in XML_SetBase()
1651 p = poolCopyString(&parser->m_dtd->pool, p); in XML_SetBase()
1654 parser->m_curBase = p; in XML_SetBase()
1656 parser->m_curBase = NULL; in XML_SetBase()
1661 XML_GetBase(XML_Parser parser) { in XML_GetBase() argument
1662 if (parser == NULL) in XML_GetBase()
1664 return parser->m_curBase; in XML_GetBase()
1668 XML_GetSpecifiedAttributeCount(XML_Parser parser) { in XML_GetSpecifiedAttributeCount() argument
1669 if (parser == NULL) in XML_GetSpecifiedAttributeCount()
1671 return parser->m_nSpecifiedAtts; in XML_GetSpecifiedAttributeCount()
1675 XML_GetIdAttributeIndex(XML_Parser parser) { in XML_GetIdAttributeIndex() argument
1676 if (parser == NULL) in XML_GetIdAttributeIndex()
1678 return parser->m_idAttIndex; in XML_GetIdAttributeIndex()
1683 XML_GetAttributeInfo(XML_Parser parser) { in XML_GetAttributeInfo() argument
1684 if (parser == NULL) in XML_GetAttributeInfo()
1686 return parser->m_attInfo; in XML_GetAttributeInfo()
1691 XML_SetElementHandler(XML_Parser parser, XML_StartElementHandler start, in XML_SetElementHandler() argument
1693 if (parser == NULL) in XML_SetElementHandler()
1695 parser->m_startElementHandler = start; in XML_SetElementHandler()
1696 parser->m_endElementHandler = end; in XML_SetElementHandler()
1700 XML_SetStartElementHandler(XML_Parser parser, XML_StartElementHandler start) { in XML_SetStartElementHandler() argument
1701 if (parser != NULL) in XML_SetStartElementHandler()
1702 parser->m_startElementHandler = start; in XML_SetStartElementHandler()
1706 XML_SetEndElementHandler(XML_Parser parser, XML_EndElementHandler end) { in XML_SetEndElementHandler() argument
1707 if (parser != NULL) in XML_SetEndElementHandler()
1708 parser->m_endElementHandler = end; in XML_SetEndElementHandler()
1712 XML_SetCharacterDataHandler(XML_Parser parser, in XML_SetCharacterDataHandler() argument
1714 if (parser != NULL) in XML_SetCharacterDataHandler()
1715 parser->m_characterDataHandler = handler; in XML_SetCharacterDataHandler()
1719 XML_SetProcessingInstructionHandler(XML_Parser parser, in XML_SetProcessingInstructionHandler() argument
1721 if (parser != NULL) in XML_SetProcessingInstructionHandler()
1722 parser->m_processingInstructionHandler = handler; in XML_SetProcessingInstructionHandler()
1726 XML_SetCommentHandler(XML_Parser parser, XML_CommentHandler handler) { in XML_SetCommentHandler() argument
1727 if (parser != NULL) in XML_SetCommentHandler()
1728 parser->m_commentHandler = handler; in XML_SetCommentHandler()
1732 XML_SetCdataSectionHandler(XML_Parser parser, in XML_SetCdataSectionHandler() argument
1735 if (parser == NULL) in XML_SetCdataSectionHandler()
1737 parser->m_startCdataSectionHandler = start; in XML_SetCdataSectionHandler()
1738 parser->m_endCdataSectionHandler = end; in XML_SetCdataSectionHandler()
1742 XML_SetStartCdataSectionHandler(XML_Parser parser, in XML_SetStartCdataSectionHandler() argument
1744 if (parser != NULL) in XML_SetStartCdataSectionHandler()
1745 parser->m_startCdataSectionHandler = start; in XML_SetStartCdataSectionHandler()
1749 XML_SetEndCdataSectionHandler(XML_Parser parser, in XML_SetEndCdataSectionHandler() argument
1751 if (parser != NULL) in XML_SetEndCdataSectionHandler()
1752 parser->m_endCdataSectionHandler = end; in XML_SetEndCdataSectionHandler()
1756 XML_SetDefaultHandler(XML_Parser parser, XML_DefaultHandler handler) { in XML_SetDefaultHandler() argument
1757 if (parser == NULL) in XML_SetDefaultHandler()
1759 parser->m_defaultHandler = handler; in XML_SetDefaultHandler()
1760 parser->m_defaultExpandInternalEntities = XML_FALSE; in XML_SetDefaultHandler()
1764 XML_SetDefaultHandlerExpand(XML_Parser parser, XML_DefaultHandler handler) { in XML_SetDefaultHandlerExpand() argument
1765 if (parser == NULL) in XML_SetDefaultHandlerExpand()
1767 parser->m_defaultHandler = handler; in XML_SetDefaultHandlerExpand()
1768 parser->m_defaultExpandInternalEntities = XML_TRUE; in XML_SetDefaultHandlerExpand()
1772 XML_SetDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start, in XML_SetDoctypeDeclHandler() argument
1774 if (parser == NULL) in XML_SetDoctypeDeclHandler()
1776 parser->m_startDoctypeDeclHandler = start; in XML_SetDoctypeDeclHandler()
1777 parser->m_endDoctypeDeclHandler = end; in XML_SetDoctypeDeclHandler()
1781 XML_SetStartDoctypeDeclHandler(XML_Parser parser, in XML_SetStartDoctypeDeclHandler() argument
1783 if (parser != NULL) in XML_SetStartDoctypeDeclHandler()
1784 parser->m_startDoctypeDeclHandler = start; in XML_SetStartDoctypeDeclHandler()
1788 XML_SetEndDoctypeDeclHandler(XML_Parser parser, XML_EndDoctypeDeclHandler end) { in XML_SetEndDoctypeDeclHandler() argument
1789 if (parser != NULL) in XML_SetEndDoctypeDeclHandler()
1790 parser->m_endDoctypeDeclHandler = end; in XML_SetEndDoctypeDeclHandler()
1794 XML_SetUnparsedEntityDeclHandler(XML_Parser parser, in XML_SetUnparsedEntityDeclHandler() argument
1796 if (parser != NULL) in XML_SetUnparsedEntityDeclHandler()
1797 parser->m_unparsedEntityDeclHandler = handler; in XML_SetUnparsedEntityDeclHandler()
1801 XML_SetNotationDeclHandler(XML_Parser parser, XML_NotationDeclHandler handler) { in XML_SetNotationDeclHandler() argument
1802 if (parser != NULL) in XML_SetNotationDeclHandler()
1803 parser->m_notationDeclHandler = handler; in XML_SetNotationDeclHandler()
1807 XML_SetNamespaceDeclHandler(XML_Parser parser, in XML_SetNamespaceDeclHandler() argument
1810 if (parser == NULL) in XML_SetNamespaceDeclHandler()
1812 parser->m_startNamespaceDeclHandler = start; in XML_SetNamespaceDeclHandler()
1813 parser->m_endNamespaceDeclHandler = end; in XML_SetNamespaceDeclHandler()
1817 XML_SetStartNamespaceDeclHandler(XML_Parser parser, in XML_SetStartNamespaceDeclHandler() argument
1819 if (parser != NULL) in XML_SetStartNamespaceDeclHandler()
1820 parser->m_startNamespaceDeclHandler = start; in XML_SetStartNamespaceDeclHandler()
1824 XML_SetEndNamespaceDeclHandler(XML_Parser parser, in XML_SetEndNamespaceDeclHandler() argument
1826 if (parser != NULL) in XML_SetEndNamespaceDeclHandler()
1827 parser->m_endNamespaceDeclHandler = end; in XML_SetEndNamespaceDeclHandler()
1831 XML_SetNotStandaloneHandler(XML_Parser parser, in XML_SetNotStandaloneHandler() argument
1833 if (parser != NULL) in XML_SetNotStandaloneHandler()
1834 parser->m_notStandaloneHandler = handler; in XML_SetNotStandaloneHandler()
1838 XML_SetExternalEntityRefHandler(XML_Parser parser, in XML_SetExternalEntityRefHandler() argument
1840 if (parser != NULL) in XML_SetExternalEntityRefHandler()
1841 parser->m_externalEntityRefHandler = handler; in XML_SetExternalEntityRefHandler()
1845 XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg) { in XML_SetExternalEntityRefHandlerArg() argument
1846 if (parser == NULL) in XML_SetExternalEntityRefHandlerArg()
1849 parser->m_externalEntityRefHandlerArg = (XML_Parser)arg; in XML_SetExternalEntityRefHandlerArg()
1851 parser->m_externalEntityRefHandlerArg = parser; in XML_SetExternalEntityRefHandlerArg()
1855 XML_SetSkippedEntityHandler(XML_Parser parser, in XML_SetSkippedEntityHandler() argument
1857 if (parser != NULL) in XML_SetSkippedEntityHandler()
1858 parser->m_skippedEntityHandler = handler; in XML_SetSkippedEntityHandler()
1862 XML_SetUnknownEncodingHandler(XML_Parser parser, in XML_SetUnknownEncodingHandler() argument
1864 if (parser == NULL) in XML_SetUnknownEncodingHandler()
1866 parser->m_unknownEncodingHandler = handler; in XML_SetUnknownEncodingHandler()
1867 parser->m_unknownEncodingHandlerData = data; in XML_SetUnknownEncodingHandler()
1871 XML_SetElementDeclHandler(XML_Parser parser, XML_ElementDeclHandler eldecl) { in XML_SetElementDeclHandler() argument
1872 if (parser != NULL) in XML_SetElementDeclHandler()
1873 parser->m_elementDeclHandler = eldecl; in XML_SetElementDeclHandler()
1877 XML_SetAttlistDeclHandler(XML_Parser parser, XML_AttlistDeclHandler attdecl) { in XML_SetAttlistDeclHandler() argument
1878 if (parser != NULL) in XML_SetAttlistDeclHandler()
1879 parser->m_attlistDeclHandler = attdecl; in XML_SetAttlistDeclHandler()
1883 XML_SetEntityDeclHandler(XML_Parser parser, XML_EntityDeclHandler handler) { in XML_SetEntityDeclHandler() argument
1884 if (parser != NULL) in XML_SetEntityDeclHandler()
1885 parser->m_entityDeclHandler = handler; in XML_SetEntityDeclHandler()
1889 XML_SetXmlDeclHandler(XML_Parser parser, XML_XmlDeclHandler handler) { in XML_SetXmlDeclHandler() argument
1890 if (parser != NULL) in XML_SetXmlDeclHandler()
1891 parser->m_xmlDeclHandler = handler; in XML_SetXmlDeclHandler()
1895 XML_SetParamEntityParsing(XML_Parser parser, in XML_SetParamEntityParsing() argument
1897 if (parser == NULL) in XML_SetParamEntityParsing()
1900 if (parser->m_parsingStatus.parsing == XML_PARSING in XML_SetParamEntityParsing()
1901 || parser->m_parsingStatus.parsing == XML_SUSPENDED) in XML_SetParamEntityParsing()
1904 parser->m_paramEntityParsing = peParsing; in XML_SetParamEntityParsing()
1912 XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt) { in XML_SetHashSalt() argument
1913 if (parser == NULL) in XML_SetHashSalt()
1915 if (parser->m_parentParser) in XML_SetHashSalt()
1916 return XML_SetHashSalt(parser->m_parentParser, hash_salt); in XML_SetHashSalt()
1918 if (parser->m_parsingStatus.parsing == XML_PARSING in XML_SetHashSalt()
1919 || parser->m_parsingStatus.parsing == XML_SUSPENDED) in XML_SetHashSalt()
1921 parser->m_hash_secret_salt = hash_salt; in XML_SetHashSalt()
1926 XML_Parse(XML_Parser parser, const char *s, int len, int isFinal) { in XML_Parse() argument
1927 if ((parser == NULL) || (len < 0) || ((s == NULL) && (len != 0))) { in XML_Parse()
1928 if (parser != NULL) in XML_Parse()
1929 parser->m_errorCode = XML_ERROR_INVALID_ARGUMENT; in XML_Parse()
1932 switch (parser->m_parsingStatus.parsing) { in XML_Parse()
1934 parser->m_errorCode = XML_ERROR_SUSPENDED; in XML_Parse()
1937 parser->m_errorCode = XML_ERROR_FINISHED; in XML_Parse()
1940 if (parser->m_parentParser == NULL && ! startParsing(parser)) { in XML_Parse()
1941 parser->m_errorCode = XML_ERROR_NO_MEMORY; in XML_Parse()
1946 parser->m_parsingStatus.parsing = XML_PARSING; in XML_Parse()
1950 if (parser->m_bufferPtr == parser->m_bufferEnd) { in XML_Parse()
1955 if ((XML_Size)len > ((XML_Size)-1) / 2 - parser->m_parseEndByteIndex) { in XML_Parse()
1956 parser->m_errorCode = XML_ERROR_NO_MEMORY; in XML_Parse()
1957 parser->m_eventPtr = parser->m_eventEndPtr = NULL; in XML_Parse()
1958 parser->m_processor = errorProcessor; in XML_Parse()
1963 parser->m_lastBufferRequestSize = len; in XML_Parse()
1964 parser->m_parseEndByteIndex += len; in XML_Parse()
1965 parser->m_positionPtr = s; in XML_Parse()
1966 parser->m_parsingStatus.finalBuffer = (XML_Bool)isFinal; in XML_Parse()
1968 parser->m_errorCode in XML_Parse()
1969 = callProcessor(parser, s, parser->m_parseEndPtr = s + len, &end); in XML_Parse()
1971 if (parser->m_errorCode != XML_ERROR_NONE) { in XML_Parse()
1972 parser->m_eventEndPtr = parser->m_eventPtr; in XML_Parse()
1973 parser->m_processor = errorProcessor; in XML_Parse()
1976 switch (parser->m_parsingStatus.parsing) { in XML_Parse()
1983 parser->m_parsingStatus.parsing = XML_FINISHED; in XML_Parse()
1992 XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, end, in XML_Parse()
1993 &parser->m_position); in XML_Parse()
1998 const enum XML_Parsing originalStatus = parser->m_parsingStatus.parsing; in XML_Parse()
1999 parser->m_parsingStatus.parsing = XML_PARSING; in XML_Parse()
2000 void *const temp = XML_GetBuffer(parser, nLeftOver); in XML_Parse()
2001 parser->m_parsingStatus.parsing = originalStatus; in XML_Parse()
2004 parser->m_lastBufferRequestSize = len; in XML_Parse()
2006 // NOTE: parser->m_errorCode has already been set by XML_GetBuffer(). in XML_Parse()
2007 parser->m_eventPtr = parser->m_eventEndPtr = NULL; in XML_Parse()
2008 parser->m_processor = errorProcessor; in XML_Parse()
2015 memcpy(parser->m_buffer, end, nLeftOver); in XML_Parse()
2017 parser->m_bufferPtr = parser->m_buffer; in XML_Parse()
2018 parser->m_bufferEnd = parser->m_buffer + nLeftOver; in XML_Parse()
2019 parser->m_positionPtr = parser->m_bufferPtr; in XML_Parse()
2020 parser->m_parseEndPtr = parser->m_bufferEnd; in XML_Parse()
2021 parser->m_eventPtr = parser->m_bufferPtr; in XML_Parse()
2022 parser->m_eventEndPtr = parser->m_bufferPtr; in XML_Parse()
2026 void *buff = XML_GetBuffer(parser, len); in XML_Parse()
2033 return XML_ParseBuffer(parser, len, isFinal); in XML_Parse()
2037 XML_ParseBuffer(XML_Parser parser, int len, int isFinal) { in XML_ParseBuffer() argument
2041 if (parser == NULL) in XML_ParseBuffer()
2045 parser->m_errorCode = XML_ERROR_INVALID_ARGUMENT; in XML_ParseBuffer()
2049 switch (parser->m_parsingStatus.parsing) { in XML_ParseBuffer()
2051 parser->m_errorCode = XML_ERROR_SUSPENDED; in XML_ParseBuffer()
2054 parser->m_errorCode = XML_ERROR_FINISHED; in XML_ParseBuffer()
2058 if (! parser->m_bufferPtr) { in XML_ParseBuffer()
2059 parser->m_errorCode = XML_ERROR_NO_BUFFER; in XML_ParseBuffer()
2063 if (parser->m_parentParser == NULL && ! startParsing(parser)) { in XML_ParseBuffer()
2064 parser->m_errorCode = XML_ERROR_NO_MEMORY; in XML_ParseBuffer()
2069 parser->m_parsingStatus.parsing = XML_PARSING; in XML_ParseBuffer()
2072 start = parser->m_bufferPtr; in XML_ParseBuffer()
2073 parser->m_positionPtr = start; in XML_ParseBuffer()
2074 parser->m_bufferEnd += len; in XML_ParseBuffer()
2075 parser->m_parseEndPtr = parser->m_bufferEnd; in XML_ParseBuffer()
2076 parser->m_parseEndByteIndex += len; in XML_ParseBuffer()
2077 parser->m_parsingStatus.finalBuffer = (XML_Bool)isFinal; in XML_ParseBuffer()
2079 parser->m_errorCode = callProcessor(parser, start, parser->m_parseEndPtr, in XML_ParseBuffer()
2080 &parser->m_bufferPtr); in XML_ParseBuffer()
2082 if (parser->m_errorCode != XML_ERROR_NONE) { in XML_ParseBuffer()
2083 parser->m_eventEndPtr = parser->m_eventPtr; in XML_ParseBuffer()
2084 parser->m_processor = errorProcessor; in XML_ParseBuffer()
2087 switch (parser->m_parsingStatus.parsing) { in XML_ParseBuffer()
2094 parser->m_parsingStatus.parsing = XML_FINISHED; in XML_ParseBuffer()
2101 XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, in XML_ParseBuffer()
2102 parser->m_bufferPtr, &parser->m_position); in XML_ParseBuffer()
2103 parser->m_positionPtr = parser->m_bufferPtr; in XML_ParseBuffer()
2108 XML_GetBuffer(XML_Parser parser, int len) { in XML_GetBuffer() argument
2109 if (parser == NULL) in XML_GetBuffer()
2112 parser->m_errorCode = XML_ERROR_NO_MEMORY; in XML_GetBuffer()
2115 switch (parser->m_parsingStatus.parsing) { in XML_GetBuffer()
2117 parser->m_errorCode = XML_ERROR_SUSPENDED; in XML_GetBuffer()
2120 parser->m_errorCode = XML_ERROR_FINISHED; in XML_GetBuffer()
2127 parser->m_lastBufferRequestSize = len; in XML_GetBuffer()
2128 if (len > EXPAT_SAFE_PTR_DIFF(parser->m_bufferLim, parser->m_bufferEnd) in XML_GetBuffer()
2129 || parser->m_buffer == NULL) { in XML_GetBuffer()
2136 parser->m_bufferEnd, parser->m_bufferPtr)); in XML_GetBuffer()
2138 parser->m_errorCode = XML_ERROR_NO_MEMORY; in XML_GetBuffer()
2142 keep = (int)EXPAT_SAFE_PTR_DIFF(parser->m_bufferPtr, parser->m_buffer); in XML_GetBuffer()
2147 parser->m_errorCode = XML_ERROR_NO_MEMORY; in XML_GetBuffer()
2152 if (parser->m_buffer && parser->m_bufferPtr in XML_GetBuffer()
2154 <= EXPAT_SAFE_PTR_DIFF(parser->m_bufferLim, parser->m_buffer)) { in XML_GetBuffer()
2156 if (keep < EXPAT_SAFE_PTR_DIFF(parser->m_bufferPtr, parser->m_buffer)) { in XML_GetBuffer()
2158 = (int)EXPAT_SAFE_PTR_DIFF(parser->m_bufferPtr, parser->m_buffer) in XML_GetBuffer()
2162 memmove(parser->m_buffer, &parser->m_buffer[offset], in XML_GetBuffer()
2163 parser->m_bufferEnd - parser->m_bufferPtr + keep); in XML_GetBuffer()
2164 parser->m_bufferEnd -= offset; in XML_GetBuffer()
2165 parser->m_bufferPtr -= offset; in XML_GetBuffer()
2168 memmove(parser->m_buffer, parser->m_bufferPtr, in XML_GetBuffer()
2169 EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr)); in XML_GetBuffer()
2170 parser->m_bufferEnd in XML_GetBuffer()
2171 = parser->m_buffer in XML_GetBuffer()
2172 + EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr); in XML_GetBuffer()
2173 parser->m_bufferPtr = parser->m_buffer; in XML_GetBuffer()
2178 = (int)EXPAT_SAFE_PTR_DIFF(parser->m_bufferLim, parser->m_buffer); in XML_GetBuffer()
2186 parser->m_errorCode = XML_ERROR_NO_MEMORY; in XML_GetBuffer()
2189 newBuf = (char *)MALLOC(parser, bufferSize); in XML_GetBuffer()
2191 parser->m_errorCode = XML_ERROR_NO_MEMORY; in XML_GetBuffer()
2194 parser->m_bufferLim = newBuf + bufferSize; in XML_GetBuffer()
2196 if (parser->m_bufferPtr) { in XML_GetBuffer()
2197 memcpy(newBuf, &parser->m_bufferPtr[-keep], in XML_GetBuffer()
2198 EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr) in XML_GetBuffer()
2200 FREE(parser, parser->m_buffer); in XML_GetBuffer()
2201 parser->m_buffer = newBuf; in XML_GetBuffer()
2202 parser->m_bufferEnd in XML_GetBuffer()
2203 = parser->m_buffer in XML_GetBuffer()
2204 + EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr) in XML_GetBuffer()
2206 parser->m_bufferPtr = parser->m_buffer + keep; in XML_GetBuffer()
2209 parser->m_bufferEnd = newBuf; in XML_GetBuffer()
2210 parser->m_bufferPtr = parser->m_buffer = newBuf; in XML_GetBuffer()
2213 if (parser->m_bufferPtr) { in XML_GetBuffer()
2214 memcpy(newBuf, parser->m_bufferPtr, in XML_GetBuffer()
2215 EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr)); in XML_GetBuffer()
2216 FREE(parser, parser->m_buffer); in XML_GetBuffer()
2217 parser->m_bufferEnd in XML_GetBuffer()
2219 + EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr); in XML_GetBuffer()
2222 parser->m_bufferEnd = newBuf; in XML_GetBuffer()
2224 parser->m_bufferPtr = parser->m_buffer = newBuf; in XML_GetBuffer()
2227 parser->m_eventPtr = parser->m_eventEndPtr = NULL; in XML_GetBuffer()
2228 parser->m_positionPtr = NULL; in XML_GetBuffer()
2230 return parser->m_bufferEnd; in XML_GetBuffer()
2234 XML_StopParser(XML_Parser parser, XML_Bool resumable) { in XML_StopParser() argument
2235 if (parser == NULL) in XML_StopParser()
2237 switch (parser->m_parsingStatus.parsing) { in XML_StopParser()
2239 parser->m_errorCode = XML_ERROR_NOT_STARTED; in XML_StopParser()
2243 parser->m_errorCode = XML_ERROR_SUSPENDED; in XML_StopParser()
2246 parser->m_parsingStatus.parsing = XML_FINISHED; in XML_StopParser()
2249 parser->m_errorCode = XML_ERROR_FINISHED; in XML_StopParser()
2254 if (parser->m_isParamEntity) { in XML_StopParser()
2255 parser->m_errorCode = XML_ERROR_SUSPEND_PE; in XML_StopParser()
2259 parser->m_parsingStatus.parsing = XML_SUSPENDED; in XML_StopParser()
2261 parser->m_parsingStatus.parsing = XML_FINISHED; in XML_StopParser()
2270 XML_ResumeParser(XML_Parser parser) { in XML_ResumeParser() argument
2273 if (parser == NULL) in XML_ResumeParser()
2275 if (parser->m_parsingStatus.parsing != XML_SUSPENDED) { in XML_ResumeParser()
2276 parser->m_errorCode = XML_ERROR_NOT_SUSPENDED; in XML_ResumeParser()
2279 parser->m_parsingStatus.parsing = XML_PARSING; in XML_ResumeParser()
2281 parser->m_errorCode = callProcessor( in XML_ResumeParser()
2282 parser, parser->m_bufferPtr, parser->m_parseEndPtr, &parser->m_bufferPtr); in XML_ResumeParser()
2284 if (parser->m_errorCode != XML_ERROR_NONE) { in XML_ResumeParser()
2285 parser->m_eventEndPtr = parser->m_eventPtr; in XML_ResumeParser()
2286 parser->m_processor = errorProcessor; in XML_ResumeParser()
2289 switch (parser->m_parsingStatus.parsing) { in XML_ResumeParser()
2295 if (parser->m_parsingStatus.finalBuffer) { in XML_ResumeParser()
2296 parser->m_parsingStatus.parsing = XML_FINISHED; in XML_ResumeParser()
2303 XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, in XML_ResumeParser()
2304 parser->m_bufferPtr, &parser->m_position); in XML_ResumeParser()
2305 parser->m_positionPtr = parser->m_bufferPtr; in XML_ResumeParser()
2310 XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status) { in XML_GetParsingStatus() argument
2311 if (parser == NULL) in XML_GetParsingStatus()
2314 *status = parser->m_parsingStatus; in XML_GetParsingStatus()
2318 XML_GetErrorCode(XML_Parser parser) { in XML_GetErrorCode() argument
2319 if (parser == NULL) in XML_GetErrorCode()
2321 return parser->m_errorCode; in XML_GetErrorCode()
2325 XML_GetCurrentByteIndex(XML_Parser parser) { in XML_GetCurrentByteIndex() argument
2326 if (parser == NULL) in XML_GetCurrentByteIndex()
2328 if (parser->m_eventPtr) in XML_GetCurrentByteIndex()
2329 return (XML_Index)(parser->m_parseEndByteIndex in XML_GetCurrentByteIndex()
2330 - (parser->m_parseEndPtr - parser->m_eventPtr)); in XML_GetCurrentByteIndex()
2335 XML_GetCurrentByteCount(XML_Parser parser) { in XML_GetCurrentByteCount() argument
2336 if (parser == NULL) in XML_GetCurrentByteCount()
2338 if (parser->m_eventEndPtr && parser->m_eventPtr) in XML_GetCurrentByteCount()
2339 return (int)(parser->m_eventEndPtr - parser->m_eventPtr); in XML_GetCurrentByteCount()
2344 XML_GetInputContext(XML_Parser parser, int *offset, int *size) { in XML_GetInputContext() argument
2346 if (parser == NULL) in XML_GetInputContext()
2348 if (parser->m_eventPtr && parser->m_buffer) { in XML_GetInputContext()
2350 *offset = (int)(parser->m_eventPtr - parser->m_buffer); in XML_GetInputContext()
2352 *size = (int)(parser->m_bufferEnd - parser->m_buffer); in XML_GetInputContext()
2353 return parser->m_buffer; in XML_GetInputContext()
2356 (void)parser; in XML_GetInputContext()
2364 XML_GetCurrentLineNumber(XML_Parser parser) { in XML_GetCurrentLineNumber() argument
2365 if (parser == NULL) in XML_GetCurrentLineNumber()
2367 if (parser->m_eventPtr && parser->m_eventPtr >= parser->m_positionPtr) { in XML_GetCurrentLineNumber()
2368 XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, in XML_GetCurrentLineNumber()
2369 parser->m_eventPtr, &parser->m_position); in XML_GetCurrentLineNumber()
2370 parser->m_positionPtr = parser->m_eventPtr; in XML_GetCurrentLineNumber()
2372 return parser->m_position.lineNumber + 1; in XML_GetCurrentLineNumber()
2376 XML_GetCurrentColumnNumber(XML_Parser parser) { in XML_GetCurrentColumnNumber() argument
2377 if (parser == NULL) in XML_GetCurrentColumnNumber()
2379 if (parser->m_eventPtr && parser->m_eventPtr >= parser->m_positionPtr) { in XML_GetCurrentColumnNumber()
2380 XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, in XML_GetCurrentColumnNumber()
2381 parser->m_eventPtr, &parser->m_position); in XML_GetCurrentColumnNumber()
2382 parser->m_positionPtr = parser->m_eventPtr; in XML_GetCurrentColumnNumber()
2384 return parser->m_position.columnNumber; in XML_GetCurrentColumnNumber()
2388 XML_FreeContentModel(XML_Parser parser, XML_Content *model) { in XML_FreeContentModel() argument
2389 if (parser != NULL) in XML_FreeContentModel()
2390 FREE(parser, model); in XML_FreeContentModel()
2394 XML_MemMalloc(XML_Parser parser, size_t size) { in XML_MemMalloc() argument
2395 if (parser == NULL) in XML_MemMalloc()
2397 return MALLOC(parser, size); in XML_MemMalloc()
2401 XML_MemRealloc(XML_Parser parser, void *ptr, size_t size) { in XML_MemRealloc() argument
2402 if (parser == NULL) in XML_MemRealloc()
2404 return REALLOC(parser, ptr, size); in XML_MemRealloc()
2408 XML_MemFree(XML_Parser parser, void *ptr) { in XML_MemFree() argument
2409 if (parser != NULL) in XML_MemFree()
2410 FREE(parser, ptr); in XML_MemFree()
2414 XML_DefaultCurrent(XML_Parser parser) { in XML_DefaultCurrent() argument
2415 if (parser == NULL) in XML_DefaultCurrent()
2417 if (parser->m_defaultHandler) { in XML_DefaultCurrent()
2418 if (parser->m_openInternalEntities) in XML_DefaultCurrent()
2419 reportDefault(parser, parser->m_internalEncoding, in XML_DefaultCurrent()
2420 parser->m_openInternalEntities->internalEventPtr, in XML_DefaultCurrent()
2421 parser->m_openInternalEntities->internalEventEndPtr); in XML_DefaultCurrent()
2423 reportDefault(parser, parser->m_encoding, parser->m_eventPtr, in XML_DefaultCurrent()
2424 parser->m_eventEndPtr); in XML_DefaultCurrent()
2478 return XML_L("unexpected parser state - please send a bug report"); in XML_ErrorString()
2500 return XML_L("parser suspended"); in XML_ErrorString()
2502 return XML_L("parser not suspended"); in XML_ErrorString()
2531 return XML_L("parser not started"); in XML_ErrorString()
2619 XML_Parser parser, float maximumAmplificationFactor) { in XML_SetBillionLaughsAttackProtectionMaximumAmplification() argument
2620 if ((parser == NULL) || (parser->m_parentParser != NULL) in XML_SetBillionLaughsAttackProtectionMaximumAmplification()
2625 parser->m_accounting.maximumAmplificationFactor = maximumAmplificationFactor; in XML_SetBillionLaughsAttackProtectionMaximumAmplification()
2631 XML_Parser parser, unsigned long long activationThresholdBytes) { in XML_SetBillionLaughsAttackProtectionActivationThreshold() argument
2632 if ((parser == NULL) || (parser->m_parentParser != NULL)) { in XML_SetBillionLaughsAttackProtectionActivationThreshold()
2635 parser->m_accounting.activationThresholdBytes = activationThresholdBytes; in XML_SetBillionLaughsAttackProtectionActivationThreshold()
2641 XML_SetReparseDeferralEnabled(XML_Parser parser, XML_Bool enabled) { in XML_SetReparseDeferralEnabled() argument
2642 if (parser != NULL && (enabled == XML_TRUE || enabled == XML_FALSE)) { in XML_SetReparseDeferralEnabled()
2643 parser->m_reparseDeferralEnabled = enabled; in XML_SetReparseDeferralEnabled()
2655 storeRawNames(XML_Parser parser) { in storeRawNames() argument
2656 TAG *tag = parser->m_tagStack; in storeRawNames()
2678 char *temp = (char *)REALLOC(parser, tag->buf, bufSize); in storeRawNames()
2704 contentProcessor(XML_Parser parser, const char *start, const char *end, in contentProcessor() argument
2707 parser, 0, parser->m_encoding, start, end, endPtr, in contentProcessor()
2708 (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_ACCOUNT_DIRECT); in contentProcessor()
2710 if (! storeRawNames(parser)) in contentProcessor()
2717 externalEntityInitProcessor(XML_Parser parser, const char *start, in externalEntityInitProcessor() argument
2719 enum XML_Error result = initializeEncoding(parser); in externalEntityInitProcessor()
2722 parser->m_processor = externalEntityInitProcessor2; in externalEntityInitProcessor()
2723 return externalEntityInitProcessor2(parser, start, end, endPtr); in externalEntityInitProcessor()
2727 externalEntityInitProcessor2(XML_Parser parser, const char *start, in externalEntityInitProcessor2() argument
2730 int tok = XmlContentTok(parser->m_encoding, start, end, &next); in externalEntityInitProcessor2()
2734 if (! accountingDiffTolerated(parser, tok, start, next, __LINE__, in externalEntityInitProcessor2()
2736 accountingOnAbort(parser); in externalEntityInitProcessor2()
2746 if (next == end && ! parser->m_parsingStatus.finalBuffer) { in externalEntityInitProcessor2()
2753 if (! parser->m_parsingStatus.finalBuffer) { in externalEntityInitProcessor2()
2757 parser->m_eventPtr = start; in externalEntityInitProcessor2()
2760 if (! parser->m_parsingStatus.finalBuffer) { in externalEntityInitProcessor2()
2764 parser->m_eventPtr = start; in externalEntityInitProcessor2()
2767 parser->m_processor = externalEntityInitProcessor3; in externalEntityInitProcessor2()
2768 return externalEntityInitProcessor3(parser, start, end, endPtr); in externalEntityInitProcessor2()
2772 externalEntityInitProcessor3(XML_Parser parser, const char *start, in externalEntityInitProcessor3() argument
2776 parser->m_eventPtr = start; in externalEntityInitProcessor3()
2777 tok = XmlContentTok(parser->m_encoding, start, end, &next); in externalEntityInitProcessor3()
2782 parser->m_eventEndPtr = next; in externalEntityInitProcessor3()
2787 result = processXmlDecl(parser, 1, start, next); in externalEntityInitProcessor3()
2790 switch (parser->m_parsingStatus.parsing) { in externalEntityInitProcessor3()
2801 if (! parser->m_parsingStatus.finalBuffer) { in externalEntityInitProcessor3()
2807 if (! parser->m_parsingStatus.finalBuffer) { in externalEntityInitProcessor3()
2813 parser->m_processor = externalEntityContentProcessor; in externalEntityInitProcessor3()
2814 parser->m_tagLevel = 1; in externalEntityInitProcessor3()
2815 return externalEntityContentProcessor(parser, start, end, endPtr); in externalEntityInitProcessor3()
2819 externalEntityContentProcessor(XML_Parser parser, const char *start, in externalEntityContentProcessor() argument
2822 = doContent(parser, 1, parser->m_encoding, start, end, endPtr, in externalEntityContentProcessor()
2823 (XML_Bool)! parser->m_parsingStatus.finalBuffer, in externalEntityContentProcessor()
2826 if (! storeRawNames(parser)) in externalEntityContentProcessor()
2833 doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc, in doContent() argument
2837 DTD *const dtd = parser->m_dtd; in doContent()
2841 if (enc == parser->m_encoding) { in doContent()
2842 eventPP = &parser->m_eventPtr; in doContent()
2843 eventEndPP = &parser->m_eventEndPtr; in doContent()
2845 eventPP = &(parser->m_openInternalEntities->internalEventPtr); in doContent()
2846 eventEndPP = &(parser->m_openInternalEntities->internalEventEndPtr); in doContent()
2858 if (! accountingDiffTolerated(parser, tok, s, accountAfter, __LINE__, in doContent()
2860 accountingOnAbort(parser); in doContent()
2872 if (parser->m_characterDataHandler) { in doContent()
2874 parser->m_characterDataHandler(parser->m_handlerArg, &c, 1); in doContent()
2875 } else if (parser->m_defaultHandler) in doContent()
2876 reportDefault(parser, enc, s, end); in doContent()
2882 if (parser->m_tagLevel != startTagLevel) in doContent()
2892 if (parser->m_tagLevel != startTagLevel) in doContent()
2923 accountingDiffTolerated(parser, tok, (char *)&ch, in doContent()
2927 if (parser->m_characterDataHandler) in doContent()
2928 parser->m_characterDataHandler(parser->m_handlerArg, &ch, 1); in doContent()
2929 else if (parser->m_defaultHandler) in doContent()
2930 reportDefault(parser, enc, s, next); in doContent()
2937 entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0); in doContent()
2949 if (parser->m_skippedEntityHandler) in doContent()
2950 parser->m_skippedEntityHandler(parser->m_handlerArg, name, 0); in doContent()
2951 else if (parser->m_defaultHandler) in doContent()
2952 reportDefault(parser, enc, s, next); in doContent()
2961 if (! parser->m_defaultExpandInternalEntities) { in doContent()
2962 if (parser->m_skippedEntityHandler) in doContent()
2963 parser->m_skippedEntityHandler(parser->m_handlerArg, entity->name, in doContent()
2965 else if (parser->m_defaultHandler) in doContent()
2966 reportDefault(parser, enc, s, next); in doContent()
2969 result = processInternalEntity(parser, entity, XML_FALSE); in doContent()
2972 } else if (parser->m_externalEntityRefHandler) { in doContent()
2975 context = getContext(parser); in doContent()
2979 if (! parser->m_externalEntityRefHandler( in doContent()
2980 parser->m_externalEntityRefHandlerArg, context, entity->base, in doContent()
2983 poolDiscard(&parser->m_tempPool); in doContent()
2984 } else if (parser->m_defaultHandler) in doContent()
2985 reportDefault(parser, enc, s, next); in doContent()
2994 if (parser->m_freeTagList) { in doContent()
2995 tag = parser->m_freeTagList; in doContent()
2996 parser->m_freeTagList = parser->m_freeTagList->parent; in doContent()
2998 tag = (TAG *)MALLOC(parser, sizeof(TAG)); in doContent()
3001 tag->buf = (char *)MALLOC(parser, INIT_TAG_BUF_SIZE); in doContent()
3003 FREE(parser, tag); in doContent()
3009 tag->parent = parser->m_tagStack; in doContent()
3010 parser->m_tagStack = tag; in doContent()
3015 ++parser->m_tagLevel; in doContent()
3034 char *temp = (char *)REALLOC(parser, tag->buf, bufSize); in doContent()
3046 = storeAtts(parser, enc, s, &(tag->name), &(tag->bindings), account); in doContent()
3049 if (parser->m_startElementHandler) in doContent()
3050 parser->m_startElementHandler(parser->m_handlerArg, tag->name.str, in doContent()
3051 (const XML_Char **)parser->m_atts); in doContent()
3052 else if (parser->m_defaultHandler) in doContent()
3053 reportDefault(parser, enc, s, next); in doContent()
3054 poolClear(&parser->m_tempPool); in doContent()
3065 name.str = poolStoreString(&parser->m_tempPool, enc, rawName, in doContent()
3069 poolFinish(&parser->m_tempPool); in doContent()
3070 result = storeAtts(parser, enc, s, &name, &bindings, in doContent()
3073 freeBindings(parser, bindings); in doContent()
3076 poolFinish(&parser->m_tempPool); in doContent()
3077 if (parser->m_startElementHandler) { in doContent()
3078 parser->m_startElementHandler(parser->m_handlerArg, name.str, in doContent()
3079 (const XML_Char **)parser->m_atts); in doContent()
3082 if (parser->m_endElementHandler) { in doContent()
3083 if (parser->m_startElementHandler) in doContent()
3085 parser->m_endElementHandler(parser->m_handlerArg, name.str); in doContent()
3088 if (noElmHandlers && parser->m_defaultHandler) in doContent()
3089 reportDefault(parser, enc, s, next); in doContent()
3090 poolClear(&parser->m_tempPool); in doContent()
3091 freeBindings(parser, bindings); in doContent()
3093 if ((parser->m_tagLevel == 0) in doContent()
3094 && (parser->m_parsingStatus.parsing != XML_FINISHED)) { in doContent()
3095 if (parser->m_parsingStatus.parsing == XML_SUSPENDED) in doContent()
3096 parser->m_processor = epilogProcessor; in doContent()
3098 return epilogProcessor(parser, next, end, nextPtr); in doContent()
3102 if (parser->m_tagLevel == startTagLevel) in doContent()
3107 TAG *tag = parser->m_tagStack; in doContent()
3115 parser->m_tagStack = tag->parent; in doContent()
3116 tag->parent = parser->m_freeTagList; in doContent()
3117 parser->m_freeTagList = tag; in doContent()
3118 --parser->m_tagLevel; in doContent()
3119 if (parser->m_endElementHandler) { in doContent()
3124 if (parser->m_ns && localPart) { in doContent()
3134 if (parser->m_ns_triplets && prefix) { in doContent()
3135 *uri++ = parser->m_namespaceSeparator; in doContent()
3141 parser->m_endElementHandler(parser->m_handlerArg, tag->name.str); in doContent()
3142 } else if (parser->m_defaultHandler) in doContent()
3143 reportDefault(parser, enc, s, next); in doContent()
3146 if (parser->m_endNamespaceDeclHandler) in doContent()
3147 parser->m_endNamespaceDeclHandler(parser->m_handlerArg, in doContent()
3150 b->nextTagBinding = parser->m_freeBindingList; in doContent()
3151 parser->m_freeBindingList = b; in doContent()
3154 if ((parser->m_tagLevel == 0) in doContent()
3155 && (parser->m_parsingStatus.parsing != XML_FINISHED)) { in doContent()
3156 if (parser->m_parsingStatus.parsing == XML_SUSPENDED) in doContent()
3157 parser->m_processor = epilogProcessor; in doContent()
3159 return epilogProcessor(parser, next, end, nextPtr); in doContent()
3167 if (parser->m_characterDataHandler) { in doContent()
3169 parser->m_characterDataHandler(parser->m_handlerArg, buf, in doContent()
3171 } else if (parser->m_defaultHandler) in doContent()
3172 reportDefault(parser, enc, s, next); in doContent()
3177 if (parser->m_characterDataHandler) { in doContent()
3179 parser->m_characterDataHandler(parser->m_handlerArg, &c, 1); in doContent()
3180 } else if (parser->m_defaultHandler) in doContent()
3181 reportDefault(parser, enc, s, next); in doContent()
3185 if (parser->m_startCdataSectionHandler) in doContent()
3186 parser->m_startCdataSectionHandler(parser->m_handlerArg); in doContent()
3200 else if ((0) && parser->m_characterDataHandler) in doContent()
3201 parser->m_characterDataHandler(parser->m_handlerArg, parser->m_dataBuf, in doContent()
3204 else if (parser->m_defaultHandler) in doContent()
3205 reportDefault(parser, enc, s, next); in doContent()
3207 = doCdataSection(parser, enc, &next, end, nextPtr, haveMore, account); in doContent()
3211 parser->m_processor = cdataSectionProcessor; in doContent()
3220 if (parser->m_characterDataHandler) { in doContent()
3222 ICHAR *dataPtr = (ICHAR *)parser->m_dataBuf; in doContent()
3223 XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)parser->m_dataBufEnd); in doContent()
3224 parser->m_characterDataHandler( in doContent()
3225 parser->m_handlerArg, parser->m_dataBuf, in doContent()
3226 (int)(dataPtr - (ICHAR *)parser->m_dataBuf)); in doContent()
3228 parser->m_characterDataHandler( in doContent()
3229 parser->m_handlerArg, (const XML_Char *)s, in doContent()
3231 } else if (parser->m_defaultHandler) in doContent()
3232 reportDefault(parser, enc, s, end); in doContent()
3240 if (parser->m_tagLevel != startTagLevel) { in doContent()
3247 XML_CharacterDataHandler charDataHandler = parser->m_characterDataHandler; in doContent()
3251 ICHAR *dataPtr = (ICHAR *)parser->m_dataBuf; in doContent()
3253 enc, &s, next, &dataPtr, (ICHAR *)parser->m_dataBufEnd); in doContent()
3255 charDataHandler(parser->m_handlerArg, parser->m_dataBuf, in doContent()
3256 (int)(dataPtr - (ICHAR *)parser->m_dataBuf)); in doContent()
3263 charDataHandler(parser->m_handlerArg, (const XML_Char *)s, in doContent()
3265 } else if (parser->m_defaultHandler) in doContent()
3266 reportDefault(parser, enc, s, next); in doContent()
3269 if (! reportProcessingInstruction(parser, enc, s, next)) in doContent()
3273 if (! reportComment(parser, enc, s, next)) in doContent()
3284 if (parser->m_defaultHandler) in doContent()
3285 reportDefault(parser, enc, s, next); in doContent()
3290 switch (parser->m_parsingStatus.parsing) { in doContent()
3303 * moving it to the parser's m_freeBindingList where it can be freed or
3307 freeBindings(XML_Parser parser, BINDING *bindings) { in freeBindings() argument
3314 if (parser->m_endNamespaceDeclHandler) in freeBindings()
3315 parser->m_endNamespaceDeclHandler(parser->m_handlerArg, b->prefix->name); in freeBindings()
3318 b->nextTagBinding = parser->m_freeBindingList; in freeBindings()
3319 parser->m_freeBindingList = b; in freeBindings()
3335 storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, in storeAtts() argument
3338 DTD *const dtd = parser->m_dtd; /* save one level of indirection */ in storeAtts()
3353 = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, tagNamePtr->str, 0); in storeAtts()
3358 elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, name, in storeAtts()
3362 if (parser->m_ns && ! setElementTypePrefix(parser, elementType)) in storeAtts()
3368 n = XmlGetAttributes(enc, attStr, parser->m_attsSize, parser->m_atts); in storeAtts()
3375 if (n + nDefaultAtts > parser->m_attsSize) { in storeAtts()
3376 int oldAttsSize = parser->m_attsSize; in storeAtts()
3388 parser->m_attsSize = n + nDefaultAtts + INIT_ATTS_SIZE; in storeAtts()
3395 if ((unsigned)parser->m_attsSize > (size_t)(-1) / sizeof(ATTRIBUTE)) { in storeAtts()
3396 parser->m_attsSize = oldAttsSize; in storeAtts()
3401 temp = (ATTRIBUTE *)REALLOC(parser, (void *)parser->m_atts, in storeAtts()
3402 parser->m_attsSize * sizeof(ATTRIBUTE)); in storeAtts()
3404 parser->m_attsSize = oldAttsSize; in storeAtts()
3407 parser->m_atts = temp; in storeAtts()
3414 if ((unsigned)parser->m_attsSize > (size_t)(-1) / sizeof(XML_AttrInfo)) { in storeAtts()
3415 parser->m_attsSize = oldAttsSize; in storeAtts()
3420 temp2 = (XML_AttrInfo *)REALLOC(parser, (void *)parser->m_attInfo, in storeAtts()
3421 parser->m_attsSize * sizeof(XML_AttrInfo)); in storeAtts()
3423 parser->m_attsSize = oldAttsSize; in storeAtts()
3426 parser->m_attInfo = temp2; in storeAtts()
3429 XmlGetAttributes(enc, attStr, n, parser->m_atts); in storeAtts()
3432 appAtts = (const XML_Char **)parser->m_atts; in storeAtts()
3434 ATTRIBUTE *currAtt = &parser->m_atts[i]; in storeAtts()
3436 XML_AttrInfo *currAttInfo = &parser->m_attInfo[i]; in storeAtts()
3440 = getAttributeId(parser, enc, currAtt->name, in storeAtts()
3446 = parser->m_parseEndByteIndex - (parser->m_parseEndPtr - currAtt->name); in storeAtts()
3449 currAttInfo->valueStart = parser->m_parseEndByteIndex in storeAtts()
3450 - (parser->m_parseEndPtr - currAtt->valuePtr); in storeAtts()
3451 currAttInfo->valueEnd = parser->m_parseEndByteIndex in storeAtts()
3452 - (parser->m_parseEndPtr - currAtt->valueEnd); in storeAtts()
3459 if (enc == parser->m_encoding) in storeAtts()
3460 parser->m_eventPtr = parser->m_atts[i].name; in storeAtts()
3465 if (! parser->m_atts[i].normalized) { in storeAtts()
3482 parser, enc, isCdata, parser->m_atts[i].valuePtr, in storeAtts()
3483 parser->m_atts[i].valueEnd, &parser->m_tempPool, account); in storeAtts()
3486 appAtts[attIndex] = poolStart(&parser->m_tempPool); in storeAtts()
3487 poolFinish(&parser->m_tempPool); in storeAtts()
3490 appAtts[attIndex] = poolStoreString(&parser->m_tempPool, enc, in storeAtts()
3491 parser->m_atts[i].valuePtr, in storeAtts()
3492 parser->m_atts[i].valueEnd); in storeAtts()
3495 poolFinish(&parser->m_tempPool); in storeAtts()
3501 enum XML_Error result = addBinding(parser, attId->prefix, attId, in storeAtts()
3517 parser->m_nSpecifiedAtts = attIndex; in storeAtts()
3521 parser->m_idAttIndex = i; in storeAtts()
3525 parser->m_idAttIndex = -1; in storeAtts()
3533 enum XML_Error result = addBinding(parser, da->id->prefix, da->id, in storeAtts()
3557 unsigned long version = parser->m_nsAttsVersion; in storeAtts()
3560 if (parser->m_nsAttsPower >= sizeof(unsigned int) * 8 /* bits per byte */) { in storeAtts()
3564 unsigned int nsAttsSize = 1u << parser->m_nsAttsPower; in storeAtts()
3565 unsigned char oldNsAttsPower = parser->m_nsAttsPower; in storeAtts()
3568 >> parser->m_nsAttsPower) { /* true for m_nsAttsPower = 0 */ in storeAtts()
3571 while (nPrefixes >> parser->m_nsAttsPower++) in storeAtts()
3573 if (parser->m_nsAttsPower < 3) in storeAtts()
3574 parser->m_nsAttsPower = 3; in storeAtts()
3577 if (parser->m_nsAttsPower >= sizeof(nsAttsSize) * 8 /* bits per byte */) { in storeAtts()
3579 parser->m_nsAttsPower = oldNsAttsPower; in storeAtts()
3583 nsAttsSize = 1u << parser->m_nsAttsPower; in storeAtts()
3592 parser->m_nsAttsPower = oldNsAttsPower; in storeAtts()
3597 temp = (NS_ATT *)REALLOC(parser, parser->m_nsAtts, in storeAtts()
3601 parser->m_nsAttsPower = oldNsAttsPower; in storeAtts()
3604 parser->m_nsAtts = temp; in storeAtts()
3611 parser->m_nsAtts[--j].version = version; in storeAtts()
3613 parser->m_nsAttsVersion = --version; in storeAtts()
3625 copy_salt_to_sipkey(parser, &sip_key); in storeAtts()
3629 id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, s, 0); in storeAtts()
3653 if (! poolAppendChar(&parser->m_tempPool, c)) in storeAtts()
3665 if (! poolAppendChar(&parser->m_tempPool, *s)) in storeAtts()
3672 Derived from code in lookup(parser, HASH_TABLE *table, ...). in storeAtts()
3677 while (parser->m_nsAtts[j].version == version) { in storeAtts()
3679 if (uriHash == parser->m_nsAtts[j].hash) { in storeAtts()
3680 const XML_Char *s1 = poolStart(&parser->m_tempPool); in storeAtts()
3681 const XML_Char *s2 = parser->m_nsAtts[j].uriName; in storeAtts()
3689 step = PROBE_STEP(uriHash, mask, parser->m_nsAttsPower); in storeAtts()
3694 if (parser->m_ns_triplets) { /* append namespace separator and prefix */ in storeAtts()
3695 parser->m_tempPool.ptr[-1] = parser->m_namespaceSeparator; in storeAtts()
3698 if (! poolAppendChar(&parser->m_tempPool, *s)) in storeAtts()
3704 s = poolStart(&parser->m_tempPool); in storeAtts()
3705 poolFinish(&parser->m_tempPool); in storeAtts()
3709 parser->m_nsAtts[j].version = version; in storeAtts()
3710 parser->m_nsAtts[j].hash = uriHash; in storeAtts()
3711 parser->m_nsAtts[j].uriName = s; in storeAtts()
3727 if (! parser->m_ns) in storeAtts()
3744 if (parser->m_ns_triplets && binding->prefix->name) { in storeAtts()
3779 uri = (XML_Char *)MALLOC(parser, (n + EXPAND_SPARE) * sizeof(XML_Char)); in storeAtts()
3784 for (p = parser->m_tagStack; p; p = p->parent) in storeAtts()
3787 FREE(parser, binding->uri); in storeAtts()
3796 *uri = parser->m_namespaceSeparator; /* replace null terminator */ in storeAtts()
3918 addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, in addBinding() argument
3990 if (parser->m_ns && (uri[len] == parser->m_namespaceSeparator) in addBinding()
4005 if (parser->m_namespaceSeparator) in addBinding()
4007 if (parser->m_freeBindingList) { in addBinding()
4008 b = parser->m_freeBindingList; in addBinding()
4026 parser, b->uri, sizeof(XML_Char) * (len + EXPAND_SPARE)); in addBinding()
4032 parser->m_freeBindingList = b->nextTagBinding; in addBinding()
4034 b = (BINDING *)MALLOC(parser, sizeof(BINDING)); in addBinding()
4053 = (XML_Char *)MALLOC(parser, sizeof(XML_Char) * (len + EXPAND_SPARE)); in addBinding()
4055 FREE(parser, b); in addBinding()
4062 if (parser->m_namespaceSeparator) in addBinding()
4063 b->uri[len - 1] = parser->m_namespaceSeparator; in addBinding()
4068 if (*uri == XML_T('\0') && prefix == &parser->m_dtd->defaultPrefix) in addBinding()
4075 if (attId && parser->m_startNamespaceDeclHandler) in addBinding()
4076 parser->m_startNamespaceDeclHandler(parser->m_handlerArg, prefix->name, in addBinding()
4085 cdataSectionProcessor(XML_Parser parser, const char *start, const char *end, in cdataSectionProcessor() argument
4088 parser, parser->m_encoding, &start, end, endPtr, in cdataSectionProcessor()
4089 (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_ACCOUNT_DIRECT); in cdataSectionProcessor()
4093 if (parser->m_parentParser) { /* we are parsing an external entity */ in cdataSectionProcessor()
4094 parser->m_processor = externalEntityContentProcessor; in cdataSectionProcessor()
4095 return externalEntityContentProcessor(parser, start, end, endPtr); in cdataSectionProcessor()
4097 parser->m_processor = contentProcessor; in cdataSectionProcessor()
4098 return contentProcessor(parser, start, end, endPtr); in cdataSectionProcessor()
4108 doCdataSection(XML_Parser parser, const ENCODING *enc, const char **startPtr, in doCdataSection() argument
4114 if (enc == parser->m_encoding) { in doCdataSection()
4115 eventPP = &parser->m_eventPtr; in doCdataSection()
4117 eventEndPP = &parser->m_eventEndPtr; in doCdataSection()
4119 eventPP = &(parser->m_openInternalEntities->internalEventPtr); in doCdataSection()
4120 eventEndPP = &(parser->m_openInternalEntities->internalEventEndPtr); in doCdataSection()
4129 if (! accountingDiffTolerated(parser, tok, s, next, __LINE__, account)) { in doCdataSection()
4130 accountingOnAbort(parser); in doCdataSection()
4139 if (parser->m_endCdataSectionHandler) in doCdataSection()
4140 parser->m_endCdataSectionHandler(parser->m_handlerArg); in doCdataSection()
4143 else if ((0) && parser->m_characterDataHandler) in doCdataSection()
4144 parser->m_characterDataHandler(parser->m_handlerArg, parser->m_dataBuf, in doCdataSection()
4147 else if (parser->m_defaultHandler) in doCdataSection()
4148 reportDefault(parser, enc, s, next); in doCdataSection()
4151 if (parser->m_parsingStatus.parsing == XML_FINISHED) in doCdataSection()
4156 if (parser->m_characterDataHandler) { in doCdataSection()
4158 parser->m_characterDataHandler(parser->m_handlerArg, &c, 1); in doCdataSection()
4159 } else if (parser->m_defaultHandler) in doCdataSection()
4160 reportDefault(parser, enc, s, next); in doCdataSection()
4163 XML_CharacterDataHandler charDataHandler = parser->m_characterDataHandler; in doCdataSection()
4167 ICHAR *dataPtr = (ICHAR *)parser->m_dataBuf; in doCdataSection()
4169 enc, &s, next, &dataPtr, (ICHAR *)parser->m_dataBufEnd); in doCdataSection()
4171 charDataHandler(parser->m_handlerArg, parser->m_dataBuf, in doCdataSection()
4172 (int)(dataPtr - (ICHAR *)parser->m_dataBuf)); in doCdataSection()
4179 charDataHandler(parser->m_handlerArg, (const XML_Char *)s, in doCdataSection()
4181 } else if (parser->m_defaultHandler) in doCdataSection()
4182 reportDefault(parser, enc, s, next); in doCdataSection()
4214 switch (parser->m_parsingStatus.parsing) { in doCdataSection()
4232 ignoreSectionProcessor(XML_Parser parser, const char *start, const char *end, in ignoreSectionProcessor() argument
4235 = doIgnoreSection(parser, parser->m_encoding, &start, end, endPtr, in ignoreSectionProcessor()
4236 (XML_Bool)! parser->m_parsingStatus.finalBuffer); in ignoreSectionProcessor()
4240 parser->m_processor = prologProcessor; in ignoreSectionProcessor()
4241 return prologProcessor(parser, start, end, endPtr); in ignoreSectionProcessor()
4250 doIgnoreSection(XML_Parser parser, const ENCODING *enc, const char **startPtr, in doIgnoreSection() argument
4257 if (enc == parser->m_encoding) { in doIgnoreSection()
4258 eventPP = &parser->m_eventPtr; in doIgnoreSection()
4260 eventEndPP = &parser->m_eventEndPtr; in doIgnoreSection()
4273 eventPP = &(parser->m_openInternalEntities->internalEventPtr); in doIgnoreSection()
4274 eventEndPP = &(parser->m_openInternalEntities->internalEventEndPtr); in doIgnoreSection()
4281 if (! accountingDiffTolerated(parser, tok, s, next, __LINE__, in doIgnoreSection()
4283 accountingOnAbort(parser); in doIgnoreSection()
4290 if (parser->m_defaultHandler) in doIgnoreSection()
4291 reportDefault(parser, enc, s, next); in doIgnoreSection()
4294 if (parser->m_parsingStatus.parsing == XML_FINISHED) in doIgnoreSection()
4332 initializeEncoding(XML_Parser parser) { in initializeEncoding() argument
4337 if (! parser->m_protocolEncodingName) in initializeEncoding()
4341 for (i = 0; parser->m_protocolEncodingName[i]; i++) { in initializeEncoding()
4343 || (parser->m_protocolEncodingName[i] & ~0x7f) != 0) { in initializeEncoding()
4347 encodingBuf[i] = (char)parser->m_protocolEncodingName[i]; in initializeEncoding()
4353 s = parser->m_protocolEncodingName; in initializeEncoding()
4355 if ((parser->m_ns ? XmlInitEncodingNS : XmlInitEncoding)( in initializeEncoding()
4356 &parser->m_initEncoding, &parser->m_encoding, s)) in initializeEncoding()
4358 return handleUnknownEncoding(parser, parser->m_protocolEncodingName); in initializeEncoding()
4362 processXmlDecl(XML_Parser parser, int isGeneralTextEntity, const char *s, in processXmlDecl() argument
4373 if (! accountingDiffTolerated(parser, XML_TOK_XML_DECL, s, next, __LINE__, in processXmlDecl()
4375 accountingOnAbort(parser); in processXmlDecl()
4380 if (! (parser->m_ns ? XmlParseXmlDeclNS : XmlParseXmlDecl)( in processXmlDecl()
4381 isGeneralTextEntity, parser->m_encoding, s, next, &parser->m_eventPtr, in processXmlDecl()
4389 parser->m_dtd->standalone = XML_TRUE; in processXmlDecl()
4391 if (parser->m_paramEntityParsing in processXmlDecl()
4393 parser->m_paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; in processXmlDecl()
4396 if (parser->m_xmlDeclHandler) { in processXmlDecl()
4399 &parser->m_temp2Pool, parser->m_encoding, encodingName, in processXmlDecl()
4400 encodingName + XmlNameLength(parser->m_encoding, encodingName)); in processXmlDecl()
4403 poolFinish(&parser->m_temp2Pool); in processXmlDecl()
4407 = poolStoreString(&parser->m_temp2Pool, parser->m_encoding, version, in processXmlDecl()
4408 versionend - parser->m_encoding->minBytesPerChar); in processXmlDecl()
4412 parser->m_xmlDeclHandler(parser->m_handlerArg, storedversion, storedEncName, in processXmlDecl()
4414 } else if (parser->m_defaultHandler) in processXmlDecl()
4415 reportDefault(parser, parser->m_encoding, s, next); in processXmlDecl()
4416 if (parser->m_protocolEncodingName == NULL) { in processXmlDecl()
4419 * the parser has already deduced. Do we have the same number in processXmlDecl()
4423 if (newEncoding->minBytesPerChar != parser->m_encoding->minBytesPerChar in processXmlDecl()
4425 && newEncoding != parser->m_encoding)) { in processXmlDecl()
4426 parser->m_eventPtr = encodingName; in processXmlDecl()
4429 parser->m_encoding = newEncoding; in processXmlDecl()
4434 &parser->m_temp2Pool, parser->m_encoding, encodingName, in processXmlDecl()
4435 encodingName + XmlNameLength(parser->m_encoding, encodingName)); in processXmlDecl()
4439 result = handleUnknownEncoding(parser, storedEncName); in processXmlDecl()
4440 poolClear(&parser->m_temp2Pool); in processXmlDecl()
4442 parser->m_eventPtr = encodingName; in processXmlDecl()
4448 poolClear(&parser->m_temp2Pool); in processXmlDecl()
4454 handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName) { in handleUnknownEncoding() argument
4455 if (parser->m_unknownEncodingHandler) { in handleUnknownEncoding()
4463 if (parser->m_unknownEncodingHandler(parser->m_unknownEncodingHandlerData, in handleUnknownEncoding()
4466 parser->m_unknownEncodingMem = MALLOC(parser, XmlSizeOfUnknownEncoding()); in handleUnknownEncoding()
4467 if (! parser->m_unknownEncodingMem) { in handleUnknownEncoding()
4472 enc = (parser->m_ns ? XmlInitUnknownEncodingNS : XmlInitUnknownEncoding)( in handleUnknownEncoding()
4473 parser->m_unknownEncodingMem, info.map, info.convert, info.data); in handleUnknownEncoding()
4475 parser->m_unknownEncodingData = info.data; in handleUnknownEncoding()
4476 parser->m_unknownEncodingRelease = info.release; in handleUnknownEncoding()
4477 parser->m_encoding = enc; in handleUnknownEncoding()
4488 prologInitProcessor(XML_Parser parser, const char *s, const char *end, in prologInitProcessor() argument
4490 enum XML_Error result = initializeEncoding(parser); in prologInitProcessor()
4493 parser->m_processor = prologProcessor; in prologInitProcessor()
4494 return prologProcessor(parser, s, end, nextPtr); in prologInitProcessor()
4500 externalParEntInitProcessor(XML_Parser parser, const char *s, const char *end, in externalParEntInitProcessor() argument
4502 enum XML_Error result = initializeEncoding(parser); in externalParEntInitProcessor()
4508 parser->m_dtd->paramEntityRead = XML_TRUE; in externalParEntInitProcessor()
4510 if (parser->m_prologState.inEntityValue) { in externalParEntInitProcessor()
4511 parser->m_processor = entityValueInitProcessor; in externalParEntInitProcessor()
4512 return entityValueInitProcessor(parser, s, end, nextPtr); in externalParEntInitProcessor()
4514 parser->m_processor = externalParEntProcessor; in externalParEntInitProcessor()
4515 return externalParEntProcessor(parser, s, end, nextPtr); in externalParEntInitProcessor()
4520 entityValueInitProcessor(XML_Parser parser, const char *s, const char *end, in entityValueInitProcessor() argument
4525 parser->m_eventPtr = start; in entityValueInitProcessor()
4528 tok = XmlPrologTok(parser->m_encoding, start, end, &next); in entityValueInitProcessor()
4533 parser->m_eventEndPtr = next; in entityValueInitProcessor()
4535 if (! parser->m_parsingStatus.finalBuffer && tok != XML_TOK_INVALID) { in entityValueInitProcessor()
4551 return storeEntityValue(parser, parser->m_encoding, s, end, in entityValueInitProcessor()
4555 result = processXmlDecl(parser, 0, start, next); in entityValueInitProcessor()
4560 * to suspend the parser, which fails and raises an error. The parser can in entityValueInitProcessor()
4563 if (parser->m_parsingStatus.parsing == XML_FINISHED) in entityValueInitProcessor()
4567 parser->m_processor = entityValueProcessor; in entityValueInitProcessor()
4568 return entityValueProcessor(parser, next, end, nextPtr); in entityValueInitProcessor()
4580 if (! accountingDiffTolerated(parser, tok, s, next, __LINE__, in entityValueInitProcessor()
4582 accountingOnAbort(parser); in entityValueInitProcessor()
4599 parser->m_eventPtr = start; in entityValueInitProcessor()
4604 externalParEntProcessor(XML_Parser parser, const char *s, const char *end, in externalParEntProcessor() argument
4609 tok = XmlPrologTok(parser->m_encoding, s, end, &next); in externalParEntProcessor()
4611 if (! parser->m_parsingStatus.finalBuffer && tok != XML_TOK_INVALID) { in externalParEntProcessor()
4633 if (! accountingDiffTolerated(parser, tok, s, next, __LINE__, in externalParEntProcessor()
4635 accountingOnAbort(parser); in externalParEntProcessor()
4640 tok = XmlPrologTok(parser->m_encoding, s, end, &next); in externalParEntProcessor()
4643 parser->m_processor = prologProcessor; in externalParEntProcessor()
4644 return doProlog(parser, parser->m_encoding, s, end, tok, next, nextPtr, in externalParEntProcessor()
4645 (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_TRUE, in externalParEntProcessor()
4650 entityValueProcessor(XML_Parser parser, const char *s, const char *end, in entityValueProcessor() argument
4654 const ENCODING *enc = parser->m_encoding; in entityValueProcessor()
4663 if (! parser->m_parsingStatus.finalBuffer && tok != XML_TOK_INVALID) { in entityValueProcessor()
4679 return storeEntityValue(parser, enc, s, end, XML_ACCOUNT_DIRECT); in entityValueProcessor()
4688 prologProcessor(XML_Parser parser, const char *s, const char *end, in prologProcessor() argument
4691 int tok = XmlPrologTok(parser->m_encoding, s, end, &next); in prologProcessor()
4692 return doProlog(parser, parser->m_encoding, s, end, tok, next, nextPtr, in prologProcessor()
4693 (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_TRUE, in prologProcessor()
4698 doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end, in doProlog() argument
4732 DTD *const dtd = parser->m_dtd; in doProlog()
4738 if (enc == parser->m_encoding) { in doProlog()
4739 eventPP = &parser->m_eventPtr; in doProlog()
4740 eventEndPP = &parser->m_eventEndPtr; in doProlog()
4742 eventPP = &(parser->m_openInternalEntities->internalEventPtr); in doProlog()
4743 eventEndPP = &(parser->m_openInternalEntities->internalEventEndPtr); in doProlog()
4770 if (enc != parser->m_encoding in doProlog()
4771 && ! parser->m_openInternalEntities->betweenDecl) { in doProlog()
4779 if (parser->m_isParamEntity || enc != parser->m_encoding) { in doProlog()
4780 if (XmlTokenRole(&parser->m_prologState, XML_TOK_NONE, end, end, enc) in doProlog()
4794 role = XmlTokenRole(&parser->m_prologState, tok, s, next, enc); in doProlog()
4804 if (! accountingDiffTolerated(parser, tok, s, next, __LINE__, account)) { in doProlog()
4805 accountingOnAbort(parser); in doProlog()
4812 enum XML_Error result = processXmlDecl(parser, 0, s, next); in doProlog()
4815 enc = parser->m_encoding; in doProlog()
4819 if (parser->m_startDoctypeDeclHandler) { in doProlog()
4820 parser->m_doctypeName in doProlog()
4821 = poolStoreString(&parser->m_tempPool, enc, s, next); in doProlog()
4822 if (! parser->m_doctypeName) in doProlog()
4824 poolFinish(&parser->m_tempPool); in doProlog()
4825 parser->m_doctypePubid = NULL; in doProlog()
4828 parser->m_doctypeSysid = NULL; /* always initialize to NULL */ in doProlog()
4831 if (parser->m_startDoctypeDeclHandler) { in doProlog()
4832 parser->m_startDoctypeDeclHandler( in doProlog()
4833 parser->m_handlerArg, parser->m_doctypeName, parser->m_doctypeSysid, in doProlog()
4834 parser->m_doctypePubid, 1); in doProlog()
4835 parser->m_doctypeName = NULL; in doProlog()
4836 poolClear(&parser->m_tempPool); in doProlog()
4842 enum XML_Error result = processXmlDecl(parser, 1, s, next); in doProlog()
4845 enc = parser->m_encoding; in doProlog()
4851 parser->m_useForeignDTD = XML_FALSE; in doProlog()
4852 parser->m_declEntity = (ENTITY *)lookup( in doProlog()
4853 parser, &dtd->paramEntities, externalSubsetName, sizeof(ENTITY)); in doProlog()
4854 if (! parser->m_declEntity) in doProlog()
4858 if (parser->m_startDoctypeDeclHandler) { in doProlog()
4862 pubId = poolStoreString(&parser->m_tempPool, enc, in doProlog()
4868 poolFinish(&parser->m_tempPool); in doProlog()
4869 parser->m_doctypePubid = pubId; in doProlog()
4878 if (dtd->keepProcessing && parser->m_declEntity) { in doProlog()
4885 parser->m_declEntity->publicId = tem; in doProlog()
4890 if (parser->m_entityDeclHandler && role == XML_ROLE_ENTITY_PUBLIC_ID) in doProlog()
4900 if (parser->m_doctypeName) { in doProlog()
4901 parser->m_startDoctypeDeclHandler( in doProlog()
4902 parser->m_handlerArg, parser->m_doctypeName, parser->m_doctypeSysid, in doProlog()
4903 parser->m_doctypePubid, 0); in doProlog()
4904 poolClear(&parser->m_tempPool); in doProlog()
4907 /* parser->m_doctypeSysid will be non-NULL in the case of a previous in doProlog()
4908 XML_ROLE_DOCTYPE_SYSTEM_ID, even if parser->m_startDoctypeDeclHandler in doProlog()
4912 if (parser->m_doctypeSysid || parser->m_useForeignDTD) { in doProlog()
4915 if (parser->m_paramEntityParsing in doProlog()
4916 && parser->m_externalEntityRefHandler) { in doProlog()
4917 ENTITY *entity = (ENTITY *)lookup(parser, &dtd->paramEntities, in doProlog()
4927 if (parser->m_useForeignDTD) in doProlog()
4928 entity->base = parser->m_curBase; in doProlog()
4930 if (! parser->m_externalEntityRefHandler( in doProlog()
4931 parser->m_externalEntityRefHandlerArg, 0, entity->base, in doProlog()
4935 if (! dtd->standalone && parser->m_notStandaloneHandler in doProlog()
4936 && ! parser->m_notStandaloneHandler(parser->m_handlerArg)) in doProlog()
4942 else if (! parser->m_doctypeSysid) in doProlog()
4946 parser->m_useForeignDTD = XML_FALSE; in doProlog()
4949 if (parser->m_endDoctypeDeclHandler) { in doProlog()
4950 parser->m_endDoctypeDeclHandler(parser->m_handlerArg); in doProlog()
4959 if (parser->m_useForeignDTD) { in doProlog()
4962 if (parser->m_paramEntityParsing in doProlog()
4963 && parser->m_externalEntityRefHandler) { in doProlog()
4964 ENTITY *entity = (ENTITY *)lookup(parser, &dtd->paramEntities, in doProlog()
4968 entity->base = parser->m_curBase; in doProlog()
4970 if (! parser->m_externalEntityRefHandler( in doProlog()
4971 parser->m_externalEntityRefHandlerArg, 0, entity->base, in doProlog()
4975 if (! dtd->standalone && parser->m_notStandaloneHandler in doProlog()
4976 && ! parser->m_notStandaloneHandler(parser->m_handlerArg)) in doProlog()
4988 parser->m_processor = contentProcessor; in doProlog()
4989 return contentProcessor(parser, s, end, nextPtr); in doProlog()
4991 parser->m_declElementType = getElementType(parser, enc, s, next); in doProlog()
4992 if (! parser->m_declElementType) in doProlog()
4996 parser->m_declAttributeId = getAttributeId(parser, enc, s, next); in doProlog()
4997 if (! parser->m_declAttributeId) in doProlog()
4999 parser->m_declAttributeIsCdata = XML_FALSE; in doProlog()
5000 parser->m_declAttributeType = NULL; in doProlog()
5001 parser->m_declAttributeIsId = XML_FALSE; in doProlog()
5004 parser->m_declAttributeIsCdata = XML_TRUE; in doProlog()
5005 parser->m_declAttributeType = atypeCDATA; in doProlog()
5008 parser->m_declAttributeIsId = XML_TRUE; in doProlog()
5009 parser->m_declAttributeType = atypeID; in doProlog()
5012 parser->m_declAttributeType = atypeIDREF; in doProlog()
5015 parser->m_declAttributeType = atypeIDREFS; in doProlog()
5018 parser->m_declAttributeType = atypeENTITY; in doProlog()
5021 parser->m_declAttributeType = atypeENTITIES; in doProlog()
5024 parser->m_declAttributeType = atypeNMTOKEN; in doProlog()
5027 parser->m_declAttributeType = atypeNMTOKENS; in doProlog()
5029 if (dtd->keepProcessing && parser->m_attlistDeclHandler) in doProlog()
5034 if (dtd->keepProcessing && parser->m_attlistDeclHandler) { in doProlog()
5036 if (parser->m_declAttributeType) { in doProlog()
5042 if (! poolAppendString(&parser->m_tempPool, prefix)) in doProlog()
5044 if (! poolAppend(&parser->m_tempPool, enc, s, next)) in doProlog()
5046 parser->m_declAttributeType = parser->m_tempPool.start; in doProlog()
5053 if (! defineAttribute(parser->m_declElementType, in doProlog()
5054 parser->m_declAttributeId, in doProlog()
5055 parser->m_declAttributeIsCdata, in doProlog()
5056 parser->m_declAttributeIsId, 0, parser)) in doProlog()
5058 if (parser->m_attlistDeclHandler && parser->m_declAttributeType) { in doProlog()
5059 if (*parser->m_declAttributeType == XML_T(ASCII_LPAREN) in doProlog()
5060 || (*parser->m_declAttributeType == XML_T(ASCII_N) in doProlog()
5061 && parser->m_declAttributeType[1] == XML_T(ASCII_O))) { in doProlog()
5063 if (! poolAppendChar(&parser->m_tempPool, XML_T(ASCII_RPAREN)) in doProlog()
5064 || ! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) in doProlog()
5066 parser->m_declAttributeType = parser->m_tempPool.start; in doProlog()
5067 poolFinish(&parser->m_tempPool); in doProlog()
5070 parser->m_attlistDeclHandler( in doProlog()
5071 parser->m_handlerArg, parser->m_declElementType->name, in doProlog()
5072 parser->m_declAttributeId->name, parser->m_declAttributeType, 0, in doProlog()
5077 poolClear(&parser->m_tempPool); in doProlog()
5084 parser, enc, parser->m_declAttributeIsCdata, in doProlog()
5093 parser->m_declElementType, parser->m_declAttributeId, in doProlog()
5094 parser->m_declAttributeIsCdata, XML_FALSE, attVal, parser)) in doProlog()
5096 if (parser->m_attlistDeclHandler && parser->m_declAttributeType) { in doProlog()
5097 if (*parser->m_declAttributeType == XML_T(ASCII_LPAREN) in doProlog()
5098 || (*parser->m_declAttributeType == XML_T(ASCII_N) in doProlog()
5099 && parser->m_declAttributeType[1] == XML_T(ASCII_O))) { in doProlog()
5101 if (! poolAppendChar(&parser->m_tempPool, XML_T(ASCII_RPAREN)) in doProlog()
5102 || ! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) in doProlog()
5104 parser->m_declAttributeType = parser->m_tempPool.start; in doProlog()
5105 poolFinish(&parser->m_tempPool); in doProlog()
5108 parser->m_attlistDeclHandler( in doProlog()
5109 parser->m_handlerArg, parser->m_declElementType->name, in doProlog()
5110 parser->m_declAttributeId->name, parser->m_declAttributeType, in doProlog()
5112 poolClear(&parser->m_tempPool); in doProlog()
5121 // parser->m_declEntity->textPtr. in doProlog()
5123 = storeEntityValue(parser, enc, s + enc->minBytesPerChar, in doProlog()
5125 if (parser->m_declEntity) { in doProlog()
5126 parser->m_declEntity->textPtr = poolStart(&dtd->entityValuePool); in doProlog()
5127 parser->m_declEntity->textLen in doProlog()
5130 if (parser->m_entityDeclHandler) { in doProlog()
5132 parser->m_entityDeclHandler( in doProlog()
5133 parser->m_handlerArg, parser->m_declEntity->name, in doProlog()
5134 parser->m_declEntity->is_param, parser->m_declEntity->textPtr, in doProlog()
5135 parser->m_declEntity->textLen, parser->m_curBase, 0, 0, 0); in doProlog()
5143 // This will store "&entity123;" in parser->m_declEntity->textPtr in doProlog()
5145 if (parser->m_declEntity != NULL) { in doProlog()
5147 = storeSelfEntityValue(parser, parser->m_declEntity); in doProlog()
5151 if (parser->m_entityDeclHandler) { in doProlog()
5153 parser->m_entityDeclHandler( in doProlog()
5154 parser->m_handlerArg, parser->m_declEntity->name, in doProlog()
5155 parser->m_declEntity->is_param, parser->m_declEntity->textPtr, in doProlog()
5156 parser->m_declEntity->textLen, parser->m_curBase, 0, 0, 0); in doProlog()
5165 parser->m_useForeignDTD = XML_FALSE; in doProlog()
5168 if (parser->m_startDoctypeDeclHandler) { in doProlog()
5169 parser->m_doctypeSysid = poolStoreString(&parser->m_tempPool, enc, in doProlog()
5172 if (parser->m_doctypeSysid == NULL) in doProlog()
5174 poolFinish(&parser->m_tempPool); in doProlog()
5179 /* use externalSubsetName to make parser->m_doctypeSysid non-NULL in doProlog()
5180 for the case where no parser->m_startDoctypeDeclHandler is set */ in doProlog()
5181 parser->m_doctypeSysid = externalSubsetName; in doProlog()
5185 && ! parser->m_paramEntityParsing in doProlog()
5187 && parser->m_notStandaloneHandler in doProlog()
5188 && ! parser->m_notStandaloneHandler(parser->m_handlerArg)) in doProlog()
5193 if (! parser->m_declEntity) { in doProlog()
5194 parser->m_declEntity = (ENTITY *)lookup( in doProlog()
5195 parser, &dtd->paramEntities, externalSubsetName, sizeof(ENTITY)); in doProlog()
5196 if (! parser->m_declEntity) in doProlog()
5198 parser->m_declEntity->publicId = NULL; in doProlog()
5203 if (dtd->keepProcessing && parser->m_declEntity) { in doProlog()
5204 parser->m_declEntity->systemId in doProlog()
5207 if (! parser->m_declEntity->systemId) in doProlog()
5209 parser->m_declEntity->base = parser->m_curBase; in doProlog()
5214 if (parser->m_entityDeclHandler && role == XML_ROLE_ENTITY_SYSTEM_ID) in doProlog()
5222 if (parser->m_declEntity != NULL) { in doProlog()
5224 = storeSelfEntityValue(parser, parser->m_declEntity); in doProlog()
5229 if (dtd->keepProcessing && parser->m_declEntity in doProlog()
5230 && parser->m_entityDeclHandler) { in doProlog()
5232 parser->m_entityDeclHandler( in doProlog()
5233 parser->m_handlerArg, parser->m_declEntity->name, in doProlog()
5234 parser->m_declEntity->is_param, 0, 0, parser->m_declEntity->base, in doProlog()
5235 parser->m_declEntity->systemId, parser->m_declEntity->publicId, 0); in doProlog()
5240 if (dtd->keepProcessing && parser->m_declEntity) { in doProlog()
5241 parser->m_declEntity->notation in doProlog()
5243 if (! parser->m_declEntity->notation) in doProlog()
5246 if (parser->m_unparsedEntityDeclHandler) { in doProlog()
5248 parser->m_unparsedEntityDeclHandler( in doProlog()
5249 parser->m_handlerArg, parser->m_declEntity->name, in doProlog()
5250 parser->m_declEntity->base, parser->m_declEntity->systemId, in doProlog()
5251 parser->m_declEntity->publicId, parser->m_declEntity->notation); in doProlog()
5253 } else if (parser->m_entityDeclHandler) { in doProlog()
5255 parser->m_entityDeclHandler( in doProlog()
5256 parser->m_handlerArg, parser->m_declEntity->name, 0, 0, 0, in doProlog()
5257 parser->m_declEntity->base, parser->m_declEntity->systemId, in doProlog()
5258 parser->m_declEntity->publicId, parser->m_declEntity->notation); in doProlog()
5265 parser->m_declEntity = NULL; in doProlog()
5272 parser->m_declEntity = (ENTITY *)lookup(parser, &dtd->generalEntities, in doProlog()
5274 if (! parser->m_declEntity) in doProlog()
5276 if (parser->m_declEntity->name != name) { in doProlog()
5278 parser->m_declEntity = NULL; in doProlog()
5281 parser->m_declEntity->publicId = NULL; in doProlog()
5282 parser->m_declEntity->is_param = XML_FALSE; in doProlog()
5283 /* if we have a parent parser or are reading an internal parameter in doProlog()
5286 parser->m_declEntity->is_internal in doProlog()
5287 = ! (parser->m_parentParser || parser->m_openInternalEntities); in doProlog()
5288 if (parser->m_entityDeclHandler) in doProlog()
5293 parser->m_declEntity = NULL; in doProlog()
5302 parser->m_declEntity = (ENTITY *)lookup(parser, &dtd->paramEntities, in doProlog()
5304 if (! parser->m_declEntity) in doProlog()
5306 if (parser->m_declEntity->name != name) { in doProlog()
5308 parser->m_declEntity = NULL; in doProlog()
5311 parser->m_declEntity->publicId = NULL; in doProlog()
5312 parser->m_declEntity->is_param = XML_TRUE; in doProlog()
5313 /* if we have a parent parser or are reading an internal parameter in doProlog()
5316 parser->m_declEntity->is_internal in doProlog()
5317 = ! (parser->m_parentParser || parser->m_openInternalEntities); in doProlog()
5318 if (parser->m_entityDeclHandler) in doProlog()
5323 parser->m_declEntity = NULL; in doProlog()
5326 parser->m_declEntity = NULL; in doProlog()
5330 parser->m_declNotationPublicId = NULL; in doProlog()
5331 parser->m_declNotationName = NULL; in doProlog()
5332 if (parser->m_notationDeclHandler) { in doProlog()
5333 parser->m_declNotationName in doProlog()
5334 = poolStoreString(&parser->m_tempPool, enc, s, next); in doProlog()
5335 if (! parser->m_declNotationName) in doProlog()
5337 poolFinish(&parser->m_tempPool); in doProlog()
5344 if (parser in doProlog()
5346 XML_Char *tem = poolStoreString(&parser->m_tempPool, enc, in doProlog()
5352 parser->m_declNotationPublicId = tem; in doProlog()
5353 poolFinish(&parser->m_tempPool); in doProlog()
5358 if (parser->m_declNotationName && parser->m_notationDeclHandler) { in doProlog()
5359 const XML_Char *systemId = poolStoreString(&parser->m_tempPool, enc, in doProlog()
5365 parser->m_notationDeclHandler( in doProlog()
5366 parser->m_handlerArg, parser->m_declNotationName, parser->m_curBase, in doProlog()
5367 systemId, parser->m_declNotationPublicId); in doProlog()
5370 poolClear(&parser->m_tempPool); in doProlog()
5373 if (parser->m_declNotationPublicId && parser->m_notationDeclHandler) { in doProlog()
5375 parser->m_notationDeclHandler( in doProlog()
5376 parser->m_handlerArg, parser->m_declNotationName, parser->m_curBase, in doProlog()
5377 0, parser->m_declNotationPublicId); in doProlog()
5380 poolClear(&parser->m_tempPool); in doProlog()
5396 if (parser->m_defaultHandler) in doProlog()
5397 reportDefault(parser, enc, s, next); in doProlog()
5399 result = doIgnoreSection(parser, enc, &next, end, nextPtr, haveMore); in doProlog()
5403 parser->m_processor = ignoreSectionProcessor; in doProlog()
5409 if (parser->m_prologState.level >= parser->m_groupSize) { in doProlog()
5410 if (parser->m_groupSize) { in doProlog()
5413 if (parser->m_groupSize > (unsigned int)(-1) / 2u) { in doProlog()
5418 parser, parser->m_groupConnector, parser->m_groupSize *= 2); in doProlog()
5420 parser->m_groupSize /= 2; in doProlog()
5423 parser->m_groupConnector = new_connector; in doProlog()
5432 if (parser->m_groupSize > (size_t)(-1) / sizeof(int)) { in doProlog()
5438 parser, dtd->scaffIndex, parser->m_groupSize * sizeof(int)); in doProlog()
5444 parser->m_groupConnector in doProlog()
5445 = (char *)MALLOC(parser, parser->m_groupSize = 32); in doProlog()
5446 if (! parser->m_groupConnector) { in doProlog()
5447 parser->m_groupSize = 0; in doProlog()
5452 parser->m_groupConnector[parser->m_prologState.level] = 0; in doProlog()
5454 int myindex = nextScaffoldPart(parser); in doProlog()
5461 if (parser->m_elementDeclHandler) in doProlog()
5466 if (parser->m_groupConnector[parser->m_prologState.level] == ASCII_PIPE) in doProlog()
5468 parser->m_groupConnector[parser->m_prologState.level] = ASCII_COMMA; in doProlog()
5469 if (dtd->in_eldecl && parser->m_elementDeclHandler) in doProlog()
5473 if (parser->m_groupConnector[parser->m_prologState.level] == ASCII_COMMA) in doProlog()
5476 && ! parser->m_groupConnector[parser->m_prologState.level] in doProlog()
5481 if (parser->m_elementDeclHandler) in doProlog()
5484 parser->m_groupConnector[parser->m_prologState.level] = ASCII_PIPE; in doProlog()
5490 if (! parser->m_paramEntityParsing) in doProlog()
5499 entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0); in doProlog()
5505 if (parser->m_prologState.documentEntity in doProlog()
5506 && (dtd->standalone ? ! parser->m_openInternalEntities in doProlog()
5537 && parser->m_skippedEntityHandler) { in doProlog()
5538 parser->m_skippedEntityHandler(parser->m_handlerArg, name, 1); in doProlog()
5549 result = processInternalEntity(parser, entity, betweenDecl); in doProlog()
5555 if (parser->m_externalEntityRefHandler) { in doProlog()
5558 entityTrackingOnOpen(parser, entity, __LINE__); in doProlog()
5559 if (! parser->m_externalEntityRefHandler( in doProlog()
5560 parser->m_externalEntityRefHandlerArg, 0, entity->base, in doProlog()
5562 entityTrackingOnClose(parser, entity, __LINE__); in doProlog()
5566 entityTrackingOnClose(parser, entity, __LINE__); in doProlog()
5579 if (! dtd->standalone && parser->m_notStandaloneHandler in doProlog()
5580 && ! parser->m_notStandaloneHandler(parser->m_handlerArg)) in doProlog()
5587 if (parser->m_elementDeclHandler) { in doProlog()
5588 parser->m_declElementType = getElementType(parser, enc, s, next); in doProlog()
5589 if (! parser->m_declElementType) in doProlog()
5601 if (parser->m_elementDeclHandler) { in doProlog()
5603 = (XML_Content *)MALLOC(parser, sizeof(XML_Content)); in doProlog()
5613 parser->m_elementDeclHandler( in doProlog()
5614 parser->m_handlerArg, parser->m_declElementType->name, content); in doProlog()
5625 if (parser->m_elementDeclHandler) in doProlog()
5648 int myindex = nextScaffoldPart(parser); in doProlog()
5653 el = getElementType(parser, enc, s, nxt); in doProlog()
5668 if (parser->m_elementDeclHandler) in doProlog()
5686 if (parser->m_elementDeclHandler) in doProlog()
5692 XML_Content *model = build_model(parser); in doProlog()
5696 parser->m_elementDeclHandler( in doProlog()
5697 parser->m_handlerArg, parser->m_declElementType->name, model); in doProlog()
5707 if (! reportProcessingInstruction(parser, enc, s, next)) in doProlog()
5712 if (! reportComment(parser, enc, s, next)) in doProlog()
5724 if (parser->m_startDoctypeDeclHandler) in doProlog()
5728 if (dtd->keepProcessing && parser->m_entityDeclHandler) in doProlog()
5732 if (parser->m_notationDeclHandler) in doProlog()
5736 if (dtd->keepProcessing && parser->m_attlistDeclHandler) in doProlog()
5740 if (parser->m_elementDeclHandler) in doProlog()
5745 if (handleDefault && parser->m_defaultHandler) in doProlog()
5746 reportDefault(parser, enc, s, next); in doProlog()
5748 switch (parser->m_parsingStatus.parsing) { in doProlog()
5763 epilogProcessor(XML_Parser parser, const char *s, const char *end, in epilogProcessor() argument
5765 parser->m_processor = epilogProcessor; in epilogProcessor()
5766 parser->m_eventPtr = s; in epilogProcessor()
5769 int tok = XmlPrologTok(parser->m_encoding, s, end, &next); in epilogProcessor()
5771 if (! accountingDiffTolerated(parser, tok, s, next, __LINE__, in epilogProcessor()
5773 accountingOnAbort(parser); in epilogProcessor()
5777 parser->m_eventEndPtr = next; in epilogProcessor()
5781 if (parser->m_defaultHandler) { in epilogProcessor()
5782 reportDefault(parser, parser->m_encoding, s, next); in epilogProcessor()
5783 if (parser->m_parsingStatus.parsing == XML_FINISHED) in epilogProcessor()
5792 if (parser->m_defaultHandler) in epilogProcessor()
5793 reportDefault(parser, parser->m_encoding, s, next); in epilogProcessor()
5796 if (! reportProcessingInstruction(parser, parser->m_encoding, s, next)) in epilogProcessor()
5800 if (! reportComment(parser, parser->m_encoding, s, next)) in epilogProcessor()
5804 parser->m_eventPtr = next; in epilogProcessor()
5807 if (! parser->m_parsingStatus.finalBuffer) { in epilogProcessor()
5813 if (! parser->m_parsingStatus.finalBuffer) { in epilogProcessor()
5821 parser->m_eventPtr = s = next; in epilogProcessor()
5822 switch (parser->m_parsingStatus.parsing) { in epilogProcessor()
5834 processInternalEntity(XML_Parser parser, ENTITY *entity, XML_Bool betweenDecl) { in processInternalEntity() argument
5840 if (parser->m_freeInternalEntities) { in processInternalEntity()
5841 openEntity = parser->m_freeInternalEntities; in processInternalEntity()
5842 parser->m_freeInternalEntities = openEntity->next; in processInternalEntity()
5845 = (OPEN_INTERNAL_ENTITY *)MALLOC(parser, sizeof(OPEN_INTERNAL_ENTITY)); in processInternalEntity()
5851 entityTrackingOnOpen(parser, entity, __LINE__); in processInternalEntity()
5854 openEntity->next = parser->m_openInternalEntities; in processInternalEntity()
5855 parser->m_openInternalEntities = openEntity; in processInternalEntity()
5857 openEntity->startTagLevel = parser->m_tagLevel; in processInternalEntity()
5868 = XmlPrologTok(parser->m_internalEncoding, textStart, textEnd, &next); in processInternalEntity()
5869 result = doProlog(parser, parser->m_internalEncoding, textStart, textEnd, in processInternalEntity()
5873 result = doContent(parser, parser->m_tagLevel, parser->m_internalEncoding, in processInternalEntity()
5879 if (textEnd != next && parser->m_parsingStatus.parsing == XML_SUSPENDED) { in processInternalEntity()
5881 parser->m_processor = internalEntityProcessor; in processInternalEntity()
5882 } else if (parser->m_openInternalEntities->entity == entity) { in processInternalEntity()
5884 entityTrackingOnClose(parser, entity, __LINE__); in processInternalEntity()
5887 parser->m_openInternalEntities = openEntity->next; in processInternalEntity()
5889 openEntity->next = parser->m_freeInternalEntities; in processInternalEntity()
5890 parser->m_freeInternalEntities = openEntity; in processInternalEntity()
5897 internalEntityProcessor(XML_Parser parser, const char *s, const char *end, in internalEntityProcessor() argument
5903 OPEN_INTERNAL_ENTITY *openEntity = parser->m_openInternalEntities; in internalEntityProcessor()
5915 = XmlPrologTok(parser->m_internalEncoding, textStart, textEnd, &next); in internalEntityProcessor()
5916 result = doProlog(parser, parser->m_internalEncoding, textStart, textEnd, in internalEntityProcessor()
5920 result = doContent(parser, openEntity->startTagLevel, in internalEntityProcessor()
5921 parser->m_internalEncoding, textStart, textEnd, &next, in internalEntityProcessor()
5928 if (textEnd != next && parser->m_parsingStatus.parsing == XML_SUSPENDED) { in internalEntityProcessor()
5934 entityTrackingOnClose(parser, entity, __LINE__); in internalEntityProcessor()
5937 parser->m_openInternalEntities = openEntity->next; in internalEntityProcessor()
5939 openEntity->next = parser->m_freeInternalEntities; in internalEntityProcessor()
5940 parser->m_freeInternalEntities = openEntity; in internalEntityProcessor()
5945 if (parser->m_openInternalEntities != NULL in internalEntityProcessor()
5946 && parser->m_parsingStatus.parsing == XML_SUSPENDED) { in internalEntityProcessor()
5952 parser->m_processor = prologProcessor; in internalEntityProcessor()
5953 tok = XmlPrologTok(parser->m_encoding, s, end, &next); in internalEntityProcessor()
5954 return doProlog(parser, parser->m_encoding, s, end, tok, next, nextPtr, in internalEntityProcessor()
5955 (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_TRUE, in internalEntityProcessor()
5958 parser->m_processor = contentProcessor; in internalEntityProcessor()
5960 result = doContent(parser, parser->m_parentParser ? 1 : 0, in internalEntityProcessor()
5961 parser->m_encoding, s, end, nextPtr, in internalEntityProcessor()
5962 (XML_Bool)! parser->m_parsingStatus.finalBuffer, in internalEntityProcessor()
5965 if (! storeRawNames(parser)) in internalEntityProcessor()
5973 errorProcessor(XML_Parser parser, const char *s, const char *end, in errorProcessor() argument
5978 return parser->m_errorCode; in errorProcessor()
5982 storeAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, in storeAttributeValue() argument
5986 = appendAttributeValue(parser, enc, isCdata, ptr, end, pool, account); in storeAttributeValue()
5997 appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, in appendAttributeValue() argument
6000 DTD *const dtd = parser->m_dtd; /* save one level of indirection */ in appendAttributeValue()
6010 if (! accountingDiffTolerated(parser, tok, ptr, next, __LINE__, account)) { in appendAttributeValue()
6011 accountingOnAbort(parser); in appendAttributeValue()
6019 if (enc == parser->m_encoding) in appendAttributeValue()
6020 parser->m_eventPtr = next; in appendAttributeValue()
6023 if (enc == parser->m_encoding) in appendAttributeValue()
6024 parser->m_eventPtr = ptr; in appendAttributeValue()
6031 if (enc == parser->m_encoding) in appendAttributeValue()
6032 parser->m_eventPtr = ptr; in appendAttributeValue()
6078 accountingDiffTolerated(parser, tok, (char *)&ch, in appendAttributeValue()
6086 name = poolStoreString(&parser->m_temp2Pool, enc, in appendAttributeValue()
6091 entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0); in appendAttributeValue()
6092 poolDiscard(&parser->m_temp2Pool); in appendAttributeValue()
6099 parser->m_prologState.documentEntity && in appendAttributeValue()
6101 (dtd->standalone ? ! parser->m_openInternalEntities in appendAttributeValue()
6103 else /* if (pool == &parser->m_tempPool): we are called from content */ in appendAttributeValue()
6112 parser->m_skippedEntityHandler. in appendAttributeValue()
6113 if (parser->m_skippedEntityHandler) in appendAttributeValue()
6114 parser->m_skippedEntityHandler(parser->m_handlerArg, name, 0); in appendAttributeValue()
6118 if ((pool == &parser->m_tempPool) && parser->m_defaultHandler) in appendAttributeValue()
6119 reportDefault(parser, enc, ptr, next); in appendAttributeValue()
6124 if (enc == parser->m_encoding) { in appendAttributeValue()
6132 * sets the local encoding ("enc") to the parser's in appendAttributeValue()
6142 parser->m_eventPtr = ptr; /* LCOV_EXCL_LINE */ in appendAttributeValue()
6147 if (enc == parser->m_encoding) in appendAttributeValue()
6148 parser->m_eventPtr = ptr; in appendAttributeValue()
6152 if (enc == parser->m_encoding) in appendAttributeValue()
6153 parser->m_eventPtr = ptr; in appendAttributeValue()
6160 entityTrackingOnOpen(parser, entity, __LINE__); in appendAttributeValue()
6162 result = appendAttributeValue(parser, parser->m_internalEncoding, in appendAttributeValue()
6167 entityTrackingOnClose(parser, entity, __LINE__); in appendAttributeValue()
6186 if (enc == parser->m_encoding) in appendAttributeValue()
6187 parser->m_eventPtr = ptr; in appendAttributeValue()
6198 storeEntityValue(XML_Parser parser, const ENCODING *enc, in storeEntityValue() argument
6201 DTD *const dtd = parser->m_dtd; /* save one level of indirection */ in storeEntityValue()
6205 int oldInEntityValue = parser->m_prologState.inEntityValue; in storeEntityValue()
6206 parser->m_prologState.inEntityValue = 1; in storeEntityValue()
6223 if (! accountingDiffTolerated(parser, tok, entityTextPtr, next, __LINE__, in storeEntityValue()
6225 accountingOnAbort(parser); in storeEntityValue()
6233 if (parser->m_isParamEntity || enc != parser->m_encoding) { in storeEntityValue()
6236 name = poolStoreString(&parser->m_tempPool, enc, in storeEntityValue()
6243 entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0); in storeEntityValue()
6244 poolDiscard(&parser->m_tempPool); in storeEntityValue()
6248 parser->m_skippedEntityHandler in storeEntityValue()
6249 if (parser->m_skippedEntityHandler) in storeEntityValue()
6250 parser->m_skippedEntityHandler(parser->m_handlerArg, name, 0); in storeEntityValue()
6255 if (entity->open || (entity == parser->m_declEntity)) { in storeEntityValue()
6256 if (enc == parser->m_encoding) in storeEntityValue()
6257 parser->m_eventPtr = entityTextPtr; in storeEntityValue()
6262 if (parser->m_externalEntityRefHandler) { in storeEntityValue()
6265 entityTrackingOnOpen(parser, entity, __LINE__); in storeEntityValue()
6266 if (! parser->m_externalEntityRefHandler( in storeEntityValue()
6267 parser->m_externalEntityRefHandlerArg, 0, entity->base, in storeEntityValue()
6269 entityTrackingOnClose(parser, entity, __LINE__); in storeEntityValue()
6274 entityTrackingOnClose(parser, entity, __LINE__); in storeEntityValue()
6282 entityTrackingOnOpen(parser, entity, __LINE__); in storeEntityValue()
6284 parser, parser->m_internalEncoding, (const char *)entity->textPtr, in storeEntityValue()
6287 entityTrackingOnClose(parser, entity, __LINE__); in storeEntityValue()
6297 parser->m_eventPtr = entityTextPtr; in storeEntityValue()
6325 if (enc == parser->m_encoding) in storeEntityValue()
6326 parser->m_eventPtr = entityTextPtr; in storeEntityValue()
6349 if (enc == parser->m_encoding) in storeEntityValue()
6350 parser->m_eventPtr = entityTextPtr; in storeEntityValue()
6354 if (enc == parser->m_encoding) in storeEntityValue()
6355 parser->m_eventPtr = next; in storeEntityValue()
6366 if (enc == parser->m_encoding) in storeEntityValue()
6367 parser->m_eventPtr = entityTextPtr; in storeEntityValue()
6376 parser->m_prologState.inEntityValue = oldInEntityValue; in storeEntityValue()
6384 storeSelfEntityValue(XML_Parser parser, ENTITY *entity) { in storeSelfEntityValue() argument
6390 STRING_POOL *const pool = &(parser->m_dtd->entityValuePool); in storeSelfEntityValue()
6429 reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, in reportProcessingInstruction() argument
6434 if (! parser->m_processingInstructionHandler) { in reportProcessingInstruction()
6435 if (parser->m_defaultHandler) in reportProcessingInstruction()
6436 reportDefault(parser, enc, start, end); in reportProcessingInstruction()
6441 target = poolStoreString(&parser->m_tempPool, enc, start, tem); in reportProcessingInstruction()
6444 poolFinish(&parser->m_tempPool); in reportProcessingInstruction()
6445 data = poolStoreString(&parser->m_tempPool, enc, XmlSkipS(enc, tem), in reportProcessingInstruction()
6450 parser->m_processingInstructionHandler(parser->m_handlerArg, target, data); in reportProcessingInstruction()
6451 poolClear(&parser->m_tempPool); in reportProcessingInstruction()
6456 reportComment(XML_Parser parser, const ENCODING *enc, const char *start, in reportComment() argument
6459 if (! parser->m_commentHandler) { in reportComment()
6460 if (parser->m_defaultHandler) in reportComment()
6461 reportDefault(parser, enc, start, end); in reportComment()
6464 data = poolStoreString(&parser->m_tempPool, enc, in reportComment()
6470 parser->m_commentHandler(parser->m_handlerArg, data); in reportComment()
6471 poolClear(&parser->m_tempPool); in reportComment()
6476 reportDefault(XML_Parser parser, const ENCODING *enc, const char *s, in reportDefault() argument
6482 if (enc == parser->m_encoding) { in reportDefault()
6483 eventPP = &parser->m_eventPtr; in reportDefault()
6484 eventEndPP = &parser->m_eventEndPtr; in reportDefault()
6486 /* To get here, two things must be true; the parser must be in reportDefault()
6491 * in is not the same as the parser's encoding are when it is in reportDefault()
6502 eventPP = &(parser->m_openInternalEntities->internalEventPtr); in reportDefault()
6503 eventEndPP = &(parser->m_openInternalEntities->internalEventEndPtr); in reportDefault()
6507 ICHAR *dataPtr = (ICHAR *)parser->m_dataBuf; in reportDefault()
6509 = XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)parser->m_dataBufEnd); in reportDefault()
6511 parser->m_defaultHandler(parser->m_handlerArg, parser->m_dataBuf, in reportDefault()
6512 (int)(dataPtr - (ICHAR *)parser->m_dataBuf)); in reportDefault()
6517 parser->m_defaultHandler( in reportDefault()
6518 parser->m_handlerArg, (const XML_Char *)s, in reportDefault()
6524 XML_Bool isId, const XML_Char *value, XML_Parser parser) { in defineAttribute() argument
6540 parser, type->allocDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); in defineAttribute()
6565 temp = (DEFAULT_ATTRIBUTE *)REALLOC(parser, type->defaultAtts, in defineAttribute()
6584 setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType) { in setElementTypePrefix() argument
6585 DTD *const dtd = parser->m_dtd; /* save one level of indirection */ in setElementTypePrefix()
6597 prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&dtd->pool), in setElementTypePrefix()
6613 getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start, in getAttributeId() argument
6615 DTD *const dtd = parser->m_dtd; /* save one level of indirection */ in getAttributeId()
6625 id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, name, in getAttributeId()
6633 if (! parser->m_ns) in getAttributeId()
6642 id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, name + 6, in getAttributeId()
6657 id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, in getAttributeId()
6676 getContext(XML_Parser parser) { in getContext() argument
6677 DTD *const dtd = parser->m_dtd; /* save one level of indirection */ in getContext()
6684 if (! poolAppendChar(&parser->m_tempPool, XML_T(ASCII_EQUALS))) in getContext()
6687 if (parser->m_namespaceSeparator) in getContext()
6690 if (! poolAppendChar(&parser->m_tempPool, in getContext()
6696 * URI into the parser's temporary string pool. Previously, in getContext()
6734 if (needSep && ! poolAppendChar(&parser->m_tempPool, CONTEXT_SEP)) in getContext()
6737 if (! poolAppendChar(&parser->m_tempPool, *s)) in getContext()
6739 if (! poolAppendChar(&parser->m_tempPool, XML_T(ASCII_EQUALS))) in getContext()
6742 if (parser->m_namespaceSeparator) in getContext()
6745 if (! poolAppendChar(&parser->m_tempPool, prefix->binding->uri[i])) in getContext()
6758 if (needSep && ! poolAppendChar(&parser->m_tempPool, CONTEXT_SEP)) in getContext()
6761 if (! poolAppendChar(&parser->m_tempPool, *s)) in getContext()
6766 if (! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) in getContext()
6768 return parser->m_tempPool.start; in getContext()
6772 setContext(XML_Parser parser, const XML_Char *context) { in setContext() argument
6777 DTD *const dtd = parser->m_dtd; /* save one level of indirection */ in setContext()
6783 if (! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) in setContext()
6785 e = (ENTITY *)lookup(parser, &dtd->generalEntities, in setContext()
6786 poolStart(&parser->m_tempPool), 0); in setContext()
6792 poolDiscard(&parser->m_tempPool); in setContext()
6795 if (poolLength(&parser->m_tempPool) == 0) in setContext()
6798 if (! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) in setContext()
6801 = (PREFIX *)lookup(parser, &dtd->prefixes, in setContext()
6802 poolStart(&parser->m_tempPool), sizeof(PREFIX)); in setContext()
6805 if (prefix->name == poolStart(&parser->m_tempPool)) { in setContext()
6810 poolDiscard(&parser->m_tempPool); in setContext()
6814 if (! poolAppendChar(&parser->m_tempPool, *context)) in setContext()
6816 if (! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) in setContext()
6818 if (addBinding(parser, prefix, NULL, poolStart(&parser->m_tempPool), in setContext()
6819 &parser->m_inheritedBindings) in setContext()
6822 poolDiscard(&parser->m_tempPool); in setContext()
6827 if (! poolAppendChar(&parser->m_tempPool, *s)) in setContext()
7177 copy_salt_to_sipkey(XML_Parser parser, struct sipkey *key) { in copy_salt_to_sipkey() argument
7179 key->k[1] = get_hash_secret_salt(parser); in copy_salt_to_sipkey()
7183 hash(XML_Parser parser, KEY s) { in hash() argument
7187 copy_salt_to_sipkey(parser, &key); in hash()
7194 lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) { in lookup() argument
7210 i = hash(parser, name) & ((unsigned long)table->size - 1); in lookup()
7212 unsigned long h = hash(parser, name); in lookup()
7250 unsigned long newHash = hash(parser, table->v[i]->name); in lookup()
7577 nextScaffoldPart(XML_Parser parser) { in nextScaffoldPart() argument
7578 DTD *const dtd = parser->m_dtd; /* save one level of indirection */ in nextScaffoldPart()
7588 if (parser->m_groupSize > ((size_t)(-1) / sizeof(int))) { in nextScaffoldPart()
7592 dtd->scaffIndex = (int *)MALLOC(parser, parser->m_groupSize * sizeof(int)); in nextScaffoldPart()
7616 parser, dtd->scaffold, dtd->scaffSize * 2 * sizeof(CONTENT_SCAFFOLD)); in nextScaffoldPart()
7621 temp = (CONTENT_SCAFFOLD *)MALLOC(parser, INIT_SCAFFOLD_ELEMENTS in nextScaffoldPart()
7647 build_model(XML_Parser parser) { in build_model() argument
7648 /* Function build_model transforms the existing parser->m_dtd->scaffold in build_model()
7652 DTD *const dtd = parser->m_dtd; /* save one level of indirection */ in build_model()
7676 ret = (XML_Content *)MALLOC(parser, allocsize); in build_model()
7774 getElementType(XML_Parser parser, const ENCODING *enc, const char *ptr, in getElementType() argument
7776 DTD *const dtd = parser->m_dtd; /* save one level of indirection */ in getElementType()
7782 ret = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, name, in getElementType()
7790 if (! setElementTypePrefix(parser, ret)) in getElementType()
7954 testingAccountingGetCountBytesDirect(XML_Parser parser) { in testingAccountingGetCountBytesDirect() argument
7955 if (! parser) in testingAccountingGetCountBytesDirect()
7957 return parser->m_accounting.countBytesDirect; in testingAccountingGetCountBytesDirect()
7961 testingAccountingGetCountBytesIndirect(XML_Parser parser) { in testingAccountingGetCountBytesIndirect() argument
7962 if (! parser) in testingAccountingGetCountBytesIndirect()
7964 return parser->m_accounting.countBytesIndirect; in testingAccountingGetCountBytesIndirect()
8016 getRootParserOf(XML_Parser parser, unsigned int *outLevelDiff) { in getRootParserOf() argument
8017 XML_Parser rootParser = parser; in getRootParserOf()