Code Monkey home page Code Monkey logo

libexpat / libexpat Goto Github PK

View Code? Open in Web Editor NEW
1.0K 45.0 429.0 15.59 MB

:herb: Fast streaming XML parser written in C99 with >90% test coverage; moved from SourceForge to GitHub

Home Page: https://libexpat.github.io/

License: MIT License

CMake 3.71% Makefile 1.17% C 76.71% Shell 2.82% M4 3.43% HTML 6.54% CSS 0.12% C++ 4.37% Inno Setup 0.38% Python 0.48% Ruby 0.01% Batchfile 0.25%
xml xml-parser xml-parsing xml-parser-library library c streaming-parser expat expat-xml-parser c99

libexpat's Introduction

Run Linux CI tasks AppVeyor Build Status Packaging status Downloads SourceForge Downloads GitHub

Expat, Release 2.6.2

This is Expat, a C99 library for parsing XML 1.0 Fourth Edition, started by James Clark in 1997. Expat is a stream-oriented XML parser. This means that you register handlers with the parser before starting the parse. These handlers are called when the parser discovers the associated structures in the document being parsed. A start tag is an example of the kind of structures for which you may register handlers.

Expat supports the following compilers:

  • GNU GCC >=4.5
  • LLVM Clang >=3.5
  • Microsoft Visual Studio >=16.0/2019 (rolling ${today} minus 5 years)

Windows users can use the expat-win32bin-*.*.*.{exe,zip} download, which includes both pre-compiled libraries and executables, and source code for developers.

Expat is free software. You may copy, distribute, and modify it under the terms of the License contained in the file COPYING distributed with this package. This license is the same as the MIT/X Consortium license.

Using libexpat in your CMake-Based Project

There are two ways of using libexpat with CMake:

a) Module Mode

This approach leverages CMake's own module FindEXPAT.

Notice the uppercase EXPAT in the following example:

cmake_minimum_required(VERSION 3.0)  # or 3.10, see below

project(hello VERSION 1.0.0)

find_package(EXPAT 2.2.8 MODULE REQUIRED)

add_executable(hello
    hello.c
)

# a) for CMake >=3.10 (see CMake's FindEXPAT docs)
target_link_libraries(hello PUBLIC EXPAT::EXPAT)

# b) for CMake >=3.0
target_include_directories(hello PRIVATE ${EXPAT_INCLUDE_DIRS})
target_link_libraries(hello PUBLIC ${EXPAT_LIBRARIES})

b) Config Mode

This approach requires files from…

  • libexpat >=2.2.8 where packaging uses the CMake build system or
  • libexpat >=2.3.0 where packaging uses the GNU Autotools build system on Linux or
  • libexpat >=2.4.0 where packaging uses the GNU Autotools build system on macOS or MinGW.

Notice the lowercase expat in the following example:

cmake_minimum_required(VERSION 3.0)

project(hello VERSION 1.0.0)

find_package(expat 2.2.8 CONFIG REQUIRED char dtd ns)

add_executable(hello
    hello.c
)

target_link_libraries(hello PUBLIC expat::expat)

Building from a Git Clone

If you are building Expat from a check-out from the Git repository, you need to run a script that generates the configure script using the GNU autoconf and libtool tools. To do this, you need to have autoconf 2.58 or newer. Run the script like this:

./buildconf.sh

Once this has been done, follow the same instructions as for building from a source distribution.

Building from a Source Distribution

a) Building with the configure script (i.e. GNU Autotools)

To build Expat from a source distribution, you first run the configuration shell script in the top level distribution directory:

./configure

There are many options which you may provide to configure (which you can discover by running configure with the --help option). But the one of most interest is the one that sets the installation directory. By default, the configure script will set things up to install libexpat into /usr/local/lib, expat.h into /usr/local/include, and xmlwf into /usr/local/bin. If, for example, you'd prefer to install into /home/me/mystuff/lib, /home/me/mystuff/include, and /home/me/mystuff/bin, you can tell configure about that with:

./configure --prefix=/home/me/mystuff

Another interesting option is to enable 64-bit integer support for line and column numbers and the over-all byte index:

./configure CPPFLAGS=-DXML_LARGE_SIZE

However, such a modification would be a breaking change to the ABI and is therefore not recommended for general use — e.g. as part of a Linux distribution — but rather for builds with special requirements.

After running the configure script, the make command will build things and make install will install things into their proper location. Have a look at the Makefile to learn about additional make options. Note that you need to have write permission into the directories into which things will be installed.

If you are interested in building Expat to provide document information in UTF-16 encoding rather than the default UTF-8, follow these instructions (after having run make distclean). Please note that we configure with --without-xmlwf as xmlwf does not support this mode of compilation (yet):

  1. Mass-patch Makefile.am files to use libexpatw.la for a library name:
    find . -name Makefile.am -exec sed -e 's,libexpat\.la,libexpatw.la,' -e 's,libexpat_la,libexpatw_la,' -i.bak {} +

  2. Run automake to re-write Makefile.in files:
    automake

  3. For UTF-16 output as unsigned short (and version/error strings as char), run:
    ./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf
    For UTF-16 output as wchar_t (incl. version/error strings), run:
    ./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T --without-xmlwf
    Note: The latter requires libc compiled with -fshort-wchar, as well.

  4. Run make (which excludes xmlwf).

  5. Run make install (again, excludes xmlwf).

Using DESTDIR is supported. It works as follows:

make install DESTDIR=/path/to/image

overrides the in-makefile set DESTDIR, because variable-setting priority is

  1. commandline
  2. in-makefile
  3. environment

Note: This only applies to the Expat library itself, building UTF-16 versions of xmlwf and the tests is currently not supported.

When using Expat with a project using autoconf for configuration, you can use the probing macro in conftools/expat.m4 to determine how to include Expat. See the comments at the top of that file for more information.

A reference manual is available in the file doc/reference.html in this distribution.

b) Building with CMake

The CMake build system is still experimental and may replace the primary build system based on GNU Autotools at some point when it is ready.

Available Options

For an idea of the available (non-advanced) options for building with CMake:

# rm -f CMakeCache.txt ; cmake -D_EXPAT_HELP=ON -LH . | grep -B1 ':.*=' | sed 's,^--$,,'
// Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ...
CMAKE_BUILD_TYPE:STRING=

// Install path prefix, prepended onto install directories.
CMAKE_INSTALL_PREFIX:PATH=/usr/local

// Path to a program.
DOCBOOK_TO_MAN:FILEPATH=/usr/bin/docbook2x-man

// Build man page for xmlwf
EXPAT_BUILD_DOCS:BOOL=ON

// Build the examples for expat library
EXPAT_BUILD_EXAMPLES:BOOL=ON

// Build fuzzers for the expat library
EXPAT_BUILD_FUZZERS:BOOL=OFF

// Build pkg-config file
EXPAT_BUILD_PKGCONFIG:BOOL=ON

// Build the tests for expat library
EXPAT_BUILD_TESTS:BOOL=ON

// Build the xmlwf tool for expat library
EXPAT_BUILD_TOOLS:BOOL=ON

// Character type to use (char|ushort|wchar_t) [default=char]
EXPAT_CHAR_TYPE:STRING=char

// Install expat files in cmake install target
EXPAT_ENABLE_INSTALL:BOOL=ON

// Use /MT flag (static CRT) when compiling in MSVC
EXPAT_MSVC_STATIC_CRT:BOOL=OFF

// Build fuzzers via ossfuzz for the expat library
EXPAT_OSSFUZZ_BUILD:BOOL=OFF

// Build a shared expat library
EXPAT_SHARED_LIBS:BOOL=ON

// Treat all compiler warnings as errors
EXPAT_WARNINGS_AS_ERRORS:BOOL=OFF

// Make use of getrandom function (ON|OFF|AUTO) [default=AUTO]
EXPAT_WITH_GETRANDOM:STRING=AUTO

// Utilize libbsd (for arc4random_buf)
EXPAT_WITH_LIBBSD:BOOL=OFF

// Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO]
EXPAT_WITH_SYS_GETRANDOM:STRING=AUTO

libexpat's People

Contributors

bshastry avatar catenacyber avatar dag-erling avatar david-loffredo avatar dependabot[bot] avatar derdakon avatar ferivoz avatar freddrake avatar hannob avatar hartwork avatar jclark avatar joycebrum avatar kkkunche avatar kwaclaw avatar luzpaz avatar mathstuf avatar mohammedkhajapasha avatar neheb avatar noloader avatar notroj avatar orbitcowboy avatar pascal-cuoq avatar pepone avatar rmj10 avatar seanm avatar snild-sony avatar ssolie avatar tbeu avatar tieske avatar vanklompf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

libexpat's Issues

Release archives missing watcomconfig.h

I'm trying to build expat's library using the Open Watcom compiler, but the release archives (2.2.0 and 2.1.1 at least) do not appear to contain 'lib/watcomconfig.h', which is being included by a number of files. The file does seem to exist in the GitHub repo, so I'm not sure how its being left out.

Reducing number of build systems

Hi!

Before I go on suggesting removal of certain things myself: Of the current build systems below, what do you think ..

  • can be dropped, or
  • should be kept and why?

Thanks for your participation!

Build Systems

Autoconf

  • expat/buildconf.sh
  • expat/configure.ac
  • expat/conftools/*
  • expat/doc/Makefile
  • expat/expat.pc.in
  • expat/Makefile.in

CMake

  • expat/CMake.README
  • expat/CMakeLists.txt
  • expat/ConfigureChecks.cmake
  • expat/doc/Makefile
  • expat/expat_config.h.cmake
  • expat/expat.pc.in

AmigaOS build system (and wrapping code?!)

  • expat/amiga/*

Borland

  • expat/bcb5/elements.bpr
  • expat/bcb5/elements.mak
  • expat/bcb5/expat.bpr
  • expat/bcb5/expat.mak
  • expat/bcb5/expat_static.bpr
  • expat/bcb5/expat_static.mak
  • expat/bcb5/expatw.bpr
  • expat/bcb5/expatw.mak
  • expat/bcb5/expatw_static.bpr
  • expat/bcb5/expatw_static.mak
  • expat/bcb5/outline.bpr
  • expat/bcb5/outline.mak
  • expat/bcb5/xmlwf.bpr
  • expat/bcb5/xmlwf.mak

Visual Studio 6.0

  • expat/examples/elements.dsp
  • expat/examples/outline.dsp
  • expat/expat.dsw
  • expat/gennmtab/gennmtab.dsp
  • expat/lib/expat.dsp
  • expat/lib/expat_static.dsp
  • expat/lib/expatw.dsp
  • expat/lib/expatw_static.dsp
  • expat/tests/benchmark/benchmark.dsp
  • expat/tests/runtests.dsp
  • expat/xmlwf/xmlwf.dsp

Visual Studio 2013 (auto-upgradable to 2015)

  • expat/examples/elements.vcxproj
  • expat/examples/outline.vcxproj
  • expat/expat.sln
  • expat/lib/expat_static.vcxproj
  • expat/lib/expat.vcxproj
  • expat/lib/expatw_static.vcxproj
  • expat/lib/expatw.vcxproj
  • expat/tests/benchmark/benchmark.vcxproj
  • expat/tests/runtests.vcxproj
  • expat/xmlwf/xmlwf.vcxproj

OpenVMS build system

  • expat/vms/

Open Watcom OS2/DOS/Win32 build system

  • expat/watcom/

Packaging

Inno Setup installer

  • expat/win32/expat.iss

RPM packaging

  • expat/expat.spec

CMake unconditionally adds -fno-strict-aliasing

This flag only really makes sense on GCC or GCC-like compilers. Its use should be shadowed behind a compiler check. I see that an issue was raised which caused its addition, though I suspect that the core issue should be fixed rather than relying on compiler flags to not make optimizations (e.g., MSVC, Intel, etc. all are still free to make the troublesome assumptions).

Get bundled copies of pre-2.2.1 Expat updated / removed

This ticket is a great example of why not to bundle dependencies...

There are >11.000 copies of Expat on GitHub alone. While that's too many to care about, high-profile users of Expat (on GitHub or not) that come with their own copy should not remain without an update for too long. Among them:

So the task is to

  • identify relevant users with a bundled or packaged copy of pre-2.2.1 Expat
  • Initiate / help their process to update

If either sounds like fun to you, please get in touch.

Best, Sebastian

Current template I use:

SUBJECT: Bundles vulnerable copy of Expat - please update to 2.2.1

Hi!

This repository bundles an outdated vulnerable copy of Expat VERSIONVERSION. Please update your copy to version 2.2.1 with the latest security fixes. A change log with details is available at https://github.com/libexpat/libexpat/blob/master/expat/Changes. If you happen to run into compile errors, please check the post-2.2.1 commits in Git as well. Thank you!

Best

 
NAMENAME

Find strategy on getting 16 bytes of entropy and existing API (XML_SetHashSalt) together

Since version 2.1.0 Expat has a function

int XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt)

to provide sizeof(unsigned long) custom entropy bytes to Expat.
Now SipHash introduced with #39 can leverage up to 16 bytes of entropy and the new high quality sources of entropy from #30 can be made to serve 16 bytes to us.

Open questions are:

  • If we start extracting more than 16 bytes of entropy without user salt given, what should happen when users pass fewer tha 16 bytes by calling XML_SetHashSalt? (Ignore, error out, use and pad, use and mix, ...)
  • Do we need a new API function to set a callback function writing 16 bytes of entropy to us?

Website: Remake https://libexpat.github.io/ website once more

The current https://libexpat.github.io/ website is rendered from Markdown using Pelican. The current (default) theme doesn't work well on mobile devices and Pelican may not be the best generator, either. Hence, if you want to help remake the site once more, we need to

  • find a better static site generator and/or
  • find a better Pelican theme and
  • get a demo ready for review.

For a generator, the requirements are:

  • Written in Python or C
  • First class support for Markdown or AsciiDoc for pages/articles
  • Not mess with scrolling speed (MkDocs does; can be disabled?)
  • Software libre with Linux support of course

Generator non-candidates to me so far:

  • Acrylamid
  • Hyde
  • (Pelican)

If this sounds like fun to you, please get in touch.

Best, Sebastian

Resolve macros hiding "parser->" membership

This ticket serves as a reminder only. Making these changes while we have unmerge commits pending review this may cause more trouble than later. So the only question is WHEN.

Transform (add parser as a parameter):

#define MALLOC(s) (parser->m_mem.malloc_fcn((s)))
#define REALLOC(p,s) (parser->m_mem.realloc_fcn((p),(s)))
#define FREE(p) (parser->m_mem.free_fcn((p)))

Resolve altogether:

#define userData (parser->m_userData)
#define handlerArg (parser->m_handlerArg)
#define startElementHandler (parser->m_startElementHandler)
#define endElementHandler (parser->m_endElementHandler)
#define characterDataHandler (parser->m_characterDataHandler)
#define processingInstructionHandler \
        (parser->m_processingInstructionHandler)
#define commentHandler (parser->m_commentHandler)
#define startCdataSectionHandler \
        (parser->m_startCdataSectionHandler)
#define endCdataSectionHandler (parser->m_endCdataSectionHandler)
#define defaultHandler (parser->m_defaultHandler)
#define startDoctypeDeclHandler (parser->m_startDoctypeDeclHandler)
#define endDoctypeDeclHandler (parser->m_endDoctypeDeclHandler)
#define unparsedEntityDeclHandler \
        (parser->m_unparsedEntityDeclHandler)
#define notationDeclHandler (parser->m_notationDeclHandler)
#define startNamespaceDeclHandler \
        (parser->m_startNamespaceDeclHandler)
#define endNamespaceDeclHandler (parser->m_endNamespaceDeclHandler)
#define notStandaloneHandler (parser->m_notStandaloneHandler)
#define externalEntityRefHandler \
        (parser->m_externalEntityRefHandler)
#define externalEntityRefHandlerArg \
        (parser->m_externalEntityRefHandlerArg)
#define internalEntityRefHandler \
        (parser->m_internalEntityRefHandler)
#define skippedEntityHandler (parser->m_skippedEntityHandler)
#define unknownEncodingHandler (parser->m_unknownEncodingHandler)
#define elementDeclHandler (parser->m_elementDeclHandler)
#define attlistDeclHandler (parser->m_attlistDeclHandler)
#define entityDeclHandler (parser->m_entityDeclHandler)
#define xmlDeclHandler (parser->m_xmlDeclHandler)
#define encoding (parser->m_encoding)
#define initEncoding (parser->m_initEncoding)
#define internalEncoding (parser->m_internalEncoding)
#define unknownEncodingMem (parser->m_unknownEncodingMem)
#define unknownEncodingData (parser->m_unknownEncodingData)
#define unknownEncodingHandlerData \
  (parser->m_unknownEncodingHandlerData)
#define unknownEncodingRelease (parser->m_unknownEncodingRelease)
#define protocolEncodingName (parser->m_protocolEncodingName)
#define ns (parser->m_ns)
#define ns_triplets (parser->m_ns_triplets)
#define prologState (parser->m_prologState)
#define processor (parser->m_processor)
#define errorCode (parser->m_errorCode)
#define eventPtr (parser->m_eventPtr)
#define eventEndPtr (parser->m_eventEndPtr)
#define positionPtr (parser->m_positionPtr)
#define position (parser->m_position)
#define openInternalEntities (parser->m_openInternalEntities)
#define freeInternalEntities (parser->m_freeInternalEntities)
#define defaultExpandInternalEntities \
        (parser->m_defaultExpandInternalEntities)
#define tagLevel (parser->m_tagLevel)
#define buffer (parser->m_buffer)
#define bufferPtr (parser->m_bufferPtr)
#define bufferEnd (parser->m_bufferEnd)
#define parseEndByteIndex (parser->m_parseEndByteIndex)
#define parseEndPtr (parser->m_parseEndPtr)
#define bufferLim (parser->m_bufferLim)
#define dataBuf (parser->m_dataBuf)
#define dataBufEnd (parser->m_dataBufEnd)
#define _dtd (parser->m_dtd)
#define curBase (parser->m_curBase)
#define declEntity (parser->m_declEntity)
#define doctypeName (parser->m_doctypeName)
#define doctypeSysid (parser->m_doctypeSysid)
#define doctypePubid (parser->m_doctypePubid)
#define declAttributeType (parser->m_declAttributeType)
#define declNotationName (parser->m_declNotationName)
#define declNotationPublicId (parser->m_declNotationPublicId)
#define declElementType (parser->m_declElementType)
#define declAttributeId (parser->m_declAttributeId)
#define declAttributeIsCdata (parser->m_declAttributeIsCdata)
#define declAttributeIsId (parser->m_declAttributeIsId)
#define freeTagList (parser->m_freeTagList)
#define freeBindingList (parser->m_freeBindingList)
#define inheritedBindings (parser->m_inheritedBindings)
#define tagStack (parser->m_tagStack)
#define atts (parser->m_atts)
#define attsSize (parser->m_attsSize)
#define nSpecifiedAtts (parser->m_nSpecifiedAtts)
#define idAttIndex (parser->m_idAttIndex)
#define nsAtts (parser->m_nsAtts)
#define nsAttsVersion (parser->m_nsAttsVersion)
#define nsAttsPower (parser->m_nsAttsPower)
#define attInfo (parser->m_attInfo)
#define tempPool (parser->m_tempPool)
#define temp2Pool (parser->m_temp2Pool)
#define groupConnector (parser->m_groupConnector)
#define groupSize (parser->m_groupSize)
#define namespaceSeparator (parser->m_namespaceSeparator)
#define parentParser (parser->m_parentParser)
#define ps_parsing (parser->m_parsingStatus.parsing)
#define ps_finalBuffer (parser->m_parsingStatus.finalBuffer)
#ifdef XML_DTD
#define isParamEntity (parser->m_isParamEntity)
#define useForeignDTD (parser->m_useForeignDTD)
#define paramEntityParsing (parser->m_paramEntityParsing)
#endif /* XML_DTD */
#define hash_secret_salt (parser->m_hash_secret_salt)

Duplicate line in siphash.h

Is siphash.h, the sentence by Jean-Philippe Aumasson and Daniel J. Berstein. , at the beginning of the file, seems a wrong copy and paste of the previous line.

Release Expat 2.2.1

General releases:

Releases with security fixes:

  • Mail security contacts

Specific to 2.2.1:

Get xmlwf and "make check" to support XML_UNICODE and XML_UNICODE_WCHAR_T with MinGW

What we know:

  • XML_UNICODE_WCHAR_T with sizeof(wchar_t) == 4 is broken as you found; so it's trouble on Linux and more or less cosmetic on Windows
  • XML_UNICODE with 2-byte units works to some extent, at least even on Linux (see demo patch attached)
  • XML_UNICODE_WCHAR_T with sizeof(wchar_t) == 2 has been in use on Windows (see Visual Studio project files)
  • GCC has -fshort-wchar to turn wchar_t into unsigned short under the hood, but it requires libc to be built with that flag, else functions like wprintf are expecting 4-byte units while they are passed 2-byte ones.
# gcc -dM -E - < /dev/null | fgrep -i wchar
#define __WCHAR_MAX__ 2147483647
#define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1)
#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2
#define __WCHAR_TYPE__ int
#define __SIZEOF_WCHAR_T__ 4

# gcc -fshort-wchar -dM -E - < /dev/null | fgrep -i wchar
#define __WCHAR_MAX__ 65535
#define __WCHAR_MIN__ 0
#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2
#define __WCHAR_TYPE__ short unsigned int
#define __SIZEOF_WCHAR_T__ 2
  • If an application works with 2-byte units for most of its string processing, converting back-and-forth to/from 1-byte units means waste in space and runtime
  • xmlwf does not (run or even) compile with XML_UNICODE, at least not on Linux
  • If XML_UNICODE support is kept, we want that code to be covered.

What I think we should do:

  • Keep XML_UNICODE support (because it's used and removal would be hard to justify with regard to waste of hardware resources)
  • Throw compile errors for __SIZEOF_WCHAR_T__ != 2 where detectable
  • Make the test suite work with XML_UNICODE and without XML_UNICODE_WCHAR_T by using L"..." literals and converting them to unsigned-short based strings and back on the fly. So we can print them and cover XML_UNICODE even on Linux. I consider the need to store and free strings the most annoying aspect, personally.
  • Make xmlwf work for XML_UNICODE everywhere with MinGW for a start.

storeAtts doesn't recover from reallocation failure

If the call to REALLOC() at xmlparse.c line 2796 fails, attsSize is left at the new desired size. Unfortunately this is not a local variable but a field of parser hidden under macros. Even more unfortunately it not touched by XML_ParserReset(), which tends to leave allocated memory in place to avoid future parses having to repeat the allocation. This means that if re-used, the failed parser believes it has more memory allocated for attributes than is actually the case, with potentially disastrous consequences.

If XML_ATTR_INFO is defined, the reallocation of attInfo a few lines later has exactly the same problem.

test_alloc_realloc_many_attributes() introduced in RMJ10/libexpat commit ddd4c67 demonstrates the problem, most easily seen by breakpoint debugging storeAtts().

RMJ10/libexpat commit 4e1a5d6 has a candidate fix: restoring attsSize to the stashed value in oldAttsSize before returning XML_ERROR_NO_MEMORY. This could leave the parser with more memory for attributes than it believes it has if the second call to REALLOC() (for attribute info) fails; that might be an issue if a very large amount of memory is left fallow.

"make run-xmltest" order instability

$ make run-xmltest
tests/xmltest.sh 2>&1 | tee tests/xmltest.log
[..]
diff -u tests/xmltest.log.expected tests/xmltest.log
--- tests/xmltest.log.expected  2017-03-13 15:25:29.656794287 +0000
+++ tests/xmltest.log   2017-03-13 15:30:36.507373655 +0000
@@ -16,11 +16,11 @@
 Output differs: xmltest/valid/sa/076.xml
 Output differs: xmltest/valid/sa/090.xml
 Output differs: xmltest/valid/sa/091.xml
-Output differs: sun/valid/notation01.xml
 Output differs: sun/valid/not-sa01.xml
 Output differs: sun/valid/not-sa02.xml
 Output differs: sun/valid/not-sa03.xml
 Output differs: sun/valid/not-sa04.xml
+Output differs: sun/valid/notation01.xml
 Output differs: sun/valid/sa02.xml
 Output differs: sun/valid/sa03.xml
 Output differs: sun/valid/sa04.xml
[..]

This is why:

Debian Bash 4.3:

# cd "$(mktemp -d)"
# touch not-sa01.xml notation01.xml
# ls -1 n*.xml
not-sa01.xml
notation01.xml

# ls -1 n*.xml | sort
not-sa01.xml
notation01.xml

# ls -1 n*.xml | sort -d
notation01.xml
not-sa01.xml

# echo $BASH_VERSION
4.3.46(1)-release

Gentoo Bash 4.4:

# cd "$(mktemp -d)"
# touch not-sa01.xml notation01.xml
# ls -1 n*.xml
notation01.xml
not-sa01.xml

# ls -1 n*.xml | sort
notation01.xml
not-sa01.xml

# ls -1 n*.xml | sort -d
notation01.xml
not-sa01.xml

# echo $BASH_VERSION
4.4.12(1)-release

Wrongly suppressed default handler

In doProlog() at line 3981 of xmlparse.c, the code tests if there is an entity declaration handler and, if so, prevents the default handler from being run. This is fine and good for the XML_ROLE_ENTITY_PUBLIC_ID role, as the entity declaration handler will have been run at some point.

Unfortunately that case has a fall-through from the XML_ROLE_DOCTYPE_PUBLIC_ID role, which has an entirely different handler and will have already suppressed the default handler if necessary. The upshot of this is that if you have an entity declaration handler but no start-of-doctype declaration handler, the default handler will not be run for a public doctype declaration when you would expect it to be run.

Theoretical integer overflow opportunity in poolGrow

The string pool code for allocating a bigger pool, poolGrow(), has a potential issue when attempting to reallocate memory. The function starts off well enough (xmlparse.c lines 6325-6330):

    BLOCK *temp;
    int blockSize = (int)((unsigned)(pool->end - pool->start)*2U);

    if (blockSize < 0)
      return XML_FALSE;

This avoids any issue with signed integer overflow when doubling the current size of the string pool and bails out if ludicrous amounts of memory are needed. Unfortunately this isn't the whole story (line 6331-6337):

    temp = (BLOCK *)
      pool->mem->realloc_fcn(pool->blocks,
                             (offsetof(BLOCK, s)
                              + blockSize * sizeof(XML_Char)));
    if (temp == NULL)
      return XML_FALSE;

sizeof(XML_Char) will be 1 for most builds, but if XML_UNICODE is defined it will be 2, since characters will be held as UTF-16 internally. So we could be doubling the allocation request and adding a bit more for good measure, which obviously has the potential to overflow.

(In reality I would expect the allocator to have failed long before this code would get called. It does require us to have allocated and run out of an enormous amount of memory first. However the moment anyone says it's impossible, someone will manage to do it :-)

Theoretical issue in unknown_toUtf8()

(migrating this from SourceForge)

Hi,

I ran the clang static analyzer on expat 2.2.0 and it reported this potential issue:

Logic error: Assigned value is garbage or undefined (expat/expat/lib/xmltok.c:1414)
expat/expat/lib/xmltok.c

  1400          int c = uenc->convert(uenc->userData, *fromP);
  1401          n = XmlUtf8Encode(c, buf);
  1402          if (n > toLim - *toP)
  1403            return XML_CONVERT_OUTPUT_EXHAUSTED;
  1404          utf8 = buf;
  1405          *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP]
  1406                     - (BT_LEAD2 - 2));
  1407        }
  1408        else {
  1409          if (n > toLim - *toP)
  1410            return XML_CONVERT_OUTPUT_EXHAUSTED;
  1411          (*fromP)++;
  1412        }
  1413        do {
  1414          *(*toP)++ = *utf8++;
                          ^ Logic error: Assigned value is garbage or undefined
  1415        } while (--n != 0);
  1416      }
  1417    }
  1418    
  1419    static enum XML_Convert_Result PTRCALL
  1420    unknown_toUtf16(const ENCODING *enc,
  1421                    const char **fromP, const char *fromLim,
  1422                    unsigned short **toP, const unsigned short *toLim)
  1423    {
  1424      const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
  1425      while (*fromP < fromLim && *toP < toLim) {
  1426        unsigned short c = uenc->utf16[(unsigned char)**fromP];
  1427        if (c == 0) {
  1428          c = (unsigned short)

Entering loop body
expat/expat/lib/xmltok.c

  1389    {
  1390      const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
  1391      char buf[XML_UTF8_ENCODE_MAX];
  1392      for (;;) {
            ^ Entering loop body
  1393        const char *utf8;
  1394        int n;
  1395        if (*fromP == fromLim)

Assuming 'n' is equal to 0
expat/expat/lib/xmltok.c

  1396          return XML_CONVERT_COMPLETED;
  1397        utf8 = uenc->utf8[(unsigned char)**fromP];
  1398        n = *utf8++;
  1399        if (n == 0) {
                  ^ Assuming 'n' is equal to 0
  1400          int c = uenc->convert(uenc->userData, *fromP);
  1401          n = XmlUtf8Encode(c, buf);
  1402          if (n > toLim - *toP)

Assigned value is garbage or undefined
expat/expat/lib/xmltok.c

  1411          (*fromP)++;
  1412        }
  1413        do {
  1414          *(*toP)++ = *utf8++;
                          ^ Assigned value is garbage or undefined
  1415        } while (--n != 0);
  1416      }
  1417    }

The reason for the "garbage or undefined" is not completely clear to me, but I think it's saying that if n ends up being zero, then the do/while loop would behave very badly. Adding an "if (n > 0)" check around the do/while makes clang happy, but I'm not sure that's the best way to address it.

Thanks,
Benbuck

[2.2.1] lib/xmlparse.c compilation error (getentropy) on macOS

I'm getting a compilation error with expat version 2.2.1 on macOS (both with clang and gcc)

Clang error:

/bin/sh ./libtool --verbose --mode=compile clang -I./lib -I. -g -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes -fexceptions -fno-strict-aliasing  -DHAVE_EXPAT_CONFIG_H -o lib/xmlparse.lo -c lib/xmlparse.c
libtool: compile:  clang -I./lib -I. -g -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes -fexceptions -fno-strict-aliasing -DHAVE_EXPAT_CONFIG_H -c lib/xmlparse.c  -fno-common -DPIC -o lib/.libs/xmlparse.o
In file included from lib/xmlparse.c:702:
/usr/include/sys/random.h:37:22: error: expected ')'
int getentropy(void* buffer, size_t size);
                     ^
lib/xmlparse.c:626:23: note: expanded from macro 'buffer'
#define buffer (parser->m_buffer)
                      ^
/usr/include/sys/random.h:37:22: note: to match this '('
lib/xmlparse.c:626:16: note: expanded from macro 'buffer'
#define buffer (parser->m_buffer)
               ^
lib/xmlparse.c:721:9: warning: implicit declaration of function 'getrandom' is invalid in C99 [-Wimplicit-function-declaration]
        getrandom(currentTarget, bytesToWrite, getrandomFlags);
        ^
1 warning and 1 error generated.
make: *** [Makefile:208: lib/xmlparse.lo] Error 1

Gists are available:
Clang: https://gist.github.com/AmirIHz/d39cf383fcd3c3d5dcd63c57007d874e
GCC: https://gist.github.com/AmirIHz/3e3b7fb14a782dcdd0aa8aee71db7584

Compiling and installing libbsd didn't help.

2.2.0 compiles w/o any problems (which makes sense, given the 2.2.1 Changelog)

Building 2.2.1 with CMake somehow finishes successfully, however, the resulting dylib (dynamic library) has a different compatibility version than the one built using configure/make, which causes problems with binaries that depend on expat. Another issue?

Make ExternalEntityParser share hash salt rather than using a snapshot?

In discussions with @RMJ10 and @hannob in light of #18 the idea came up to have child parser create by XML_ExternalEntityParserCreate referencing their parent's hash salt rather than a snapshot copy of that (that relies on call order). Introducing an internal getter/setter abstraction checking for a parent parser seems like one candidate for a good approach to implement right now.
As a consequence to shared salt, calling XML_SetHashSalt on the child parser would have to

  • a) do nothing and be silent about it
  • b) do nothing and return an error
  • c) set the parent parser's salt (and implicitly its own, too)

Are there any strong concerns about any of these, especially with respect to backwards compatibility?

Many memory leaks during make check

runtests.c seems to not free the parser in many cases.

Reproduce:

./configure CFLAGS="-fsanitize=address -g" CXXFLAGS="-fsanitize=address -g" LDFLAGS="-fsanitize=address"  CC=clang CXX=clang++
make
make check

Output:

Direct leak of 936 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c71437 in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:785:7
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51740c in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1016:17
    #4 0x7fd645c846e5 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4078:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x5105e8 in test_set_foreign_dtd /mnt/ram/plain/libexpat/expat/tests/runtests.c:1604:9
    #10 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #11 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #12 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Direct leak of 936 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c71437 in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:785:7
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51867e in external_entity_param_checker /mnt/ram/plain/libexpat/expat/tests/runtests.c:1986:18
    #4 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x5117ed in test_user_parameters /mnt/ram/plain/libexpat/expat/tests/runtests.c:2021:9
    #10 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #11 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #12 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Direct leak of 936 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c71437 in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:785:7
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51740c in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1016:17
    #4 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x50e19e in test_wfc_undeclared_entity_with_external_subset /mnt/ram/plain/libexpat/expat/tests/runtests.c:1061:9
    #10 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #11 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #12 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Direct leak of 936 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c71437 in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:785:7
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51842e in external_entity_suspender /mnt/ram/plain/libexpat/expat/tests/runtests.c:1877:18
    #4 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x5114ab in test_subordinate_suspend /mnt/ram/plain/libexpat/expat/tests/runtests.c:1899:9
    #10 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #11 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #12 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Direct leak of 936 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c71437 in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:785:7
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51740c in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1016:17
    #4 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x50e3c5 in test_not_standalone_handler_reject /mnt/ram/plain/libexpat/expat/tests/runtests.c:1086:9
    #10 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #11 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #12 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Direct leak of 936 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c71437 in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:785:7
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51808f in external_entity_resetter /mnt/ram/plain/libexpat/expat/tests/runtests.c:1802:18
    #4 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x5113db in test_subordinate_reset /mnt/ram/plain/libexpat/expat/tests/runtests.c:1844:9
    #10 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #11 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #12 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Direct leak of 936 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c71437 in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:785:7
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51740c in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1016:17
    #4 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x516238 in _expect_failure /mnt/ram/plain/libexpat/expat/tests/runtests.c:106:9
    #10 0x50e7f7 in test_wfc_undeclared_entity_with_external_subset_standalone /mnt/ram/plain/libexpat/expat/tests/runtests.c:1041:5
    #11 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #12 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #13 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Direct leak of 936 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c71437 in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:785:7
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51740c in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1016:17
    #4 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x50e5f5 in test_not_standalone_handler_accept /mnt/ram/plain/libexpat/expat/tests/runtests.c:1111:9
    #10 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #11 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #12 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Direct leak of 104 byte(s) in 2 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c99991 in build_model /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:6464:24
    #2 0x7fd645c8e74b in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4742:34
    #3 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #4 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #5 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #6 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #7 0x5102d6 in test_dtd_elements /mnt/ram/plain/libexpat/expat/tests/runtests.c:1568:9
    #8 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #9 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #10 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Direct leak of 96 byte(s) in 3 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x5196a0 in duff_allocator /mnt/ram/plain/libexpat/expat/tests/runtests.c:2688:12
    #2 0x7fd645c8d794 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4659:51
    #3 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #4 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #5 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #6 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #7 0x515a01 in test_alloc_dtd_default_handling /mnt/ram/plain/libexpat/expat/tests/runtests.c:3300:13
    #8 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #9 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #10 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Direct leak of 48 byte(s) in 1 object(s) allocated from:
    #0 0x4d1b50 in calloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1b50)
    #1 0x51ae11 in tcase_create /mnt/ram/plain/libexpat/expat/tests/minicheck.c:29:27
    #2 0x50ab82 in make_suite /mnt/ram/plain/libexpat/expat/tests/runtests.c:3358:23
    #3 0x50a961 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3481:16
    #4 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Direct leak of 32 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c8d794 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4659:51
    #2 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #3 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #4 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #5 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #6 0x516427 in _run_character_check /mnt/ram/plain/libexpat/expat/tests/runtests.c:295:9
    #7 0x50ea92 in test_dtd_default_handling /mnt/ram/plain/libexpat/expat/tests/runtests.c:1154:5
    #8 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #9 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #10 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 2048 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7d129 in XML_GetBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1788:24
    #2 0x7fd645c7c601 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1662:18
    #3 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #4 0x517473 in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1019:11
    #5 0x7fd645c846e5 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4078:16
    #6 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #7 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #8 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #9 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #10 0x5105e8 in test_set_foreign_dtd /mnt/ram/plain/libexpat/expat/tests/runtests.c:1604:9
    #11 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #12 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #13 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 2048 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7d129 in XML_GetBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1788:24
    #2 0x7fd645c7c601 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1662:18
    #3 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #4 0x517473 in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1019:11
    #5 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #6 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #7 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #8 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #9 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #10 0x50e3c5 in test_not_standalone_handler_reject /mnt/ram/plain/libexpat/expat/tests/runtests.c:1086:9
    #11 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #12 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #13 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 2048 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7d129 in XML_GetBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1788:24
    #2 0x7fd645c7c601 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1662:18
    #3 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #4 0x517473 in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1019:11
    #5 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #6 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #7 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #8 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #9 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #10 0x50e5f5 in test_not_standalone_handler_accept /mnt/ram/plain/libexpat/expat/tests/runtests.c:1111:9
    #11 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #12 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #13 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 2048 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7d129 in XML_GetBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1788:24
    #2 0x7fd645c7c601 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1662:18
    #3 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #4 0x51818c in external_entity_resetter /mnt/ram/plain/libexpat/expat/tests/runtests.c:1810:9
    #5 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #6 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #7 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #8 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #9 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #10 0x5113db in test_subordinate_reset /mnt/ram/plain/libexpat/expat/tests/runtests.c:1844:9
    #11 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #12 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #13 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 2048 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7d129 in XML_GetBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1788:24
    #2 0x7fd645c7c601 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1662:18
    #3 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #4 0x5175c1 in external_entity_loader_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:946:11
    #5 0x7fd645c9c203 in doContent /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2434:16
    #6 0x7fd645c91a90 in contentProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2170:27
    #7 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #8 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #9 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #10 0x516427 in _run_character_check /mnt/ram/plain/libexpat/expat/tests/runtests.c:295:9
    #11 0x50e92c in test_ext_entity_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:964:5
    #12 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #13 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #14 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 2048 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7d129 in XML_GetBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1788:24
    #2 0x7fd645c7c601 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1662:18
    #3 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #4 0x5186f1 in external_entity_param_checker /mnt/ram/plain/libexpat/expat/tests/runtests.c:1990:9
    #5 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #6 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #7 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #8 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #9 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #10 0x5117ed in test_user_parameters /mnt/ram/plain/libexpat/expat/tests/runtests.c:2021:9
    #11 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #12 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #13 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 2048 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7d129 in XML_GetBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1788:24
    #2 0x7fd645c7c601 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1662:18
    #3 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #4 0x5184b5 in external_entity_suspender /mnt/ram/plain/libexpat/expat/tests/runtests.c:1882:9
    #5 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #6 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #7 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #8 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #9 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #10 0x5114ab in test_subordinate_suspend /mnt/ram/plain/libexpat/expat/tests/runtests.c:1899:9
    #11 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #12 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #13 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 2048 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7d129 in XML_GetBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1788:24
    #2 0x7fd645c7c601 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1662:18
    #3 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #4 0x517473 in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1019:11
    #5 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #6 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #7 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #8 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #9 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #10 0x516238 in _expect_failure /mnt/ram/plain/libexpat/expat/tests/runtests.c:106:9
    #11 0x50e7f7 in test_wfc_undeclared_entity_with_external_subset_standalone /mnt/ram/plain/libexpat/expat/tests/runtests.c:1041:5
    #12 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #13 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #14 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 2048 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7d129 in XML_GetBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1788:24
    #2 0x7fd645c7c601 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1662:18
    #3 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #4 0x517473 in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1019:11
    #5 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #6 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #7 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #8 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #9 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #10 0x50e19e in test_wfc_undeclared_entity_with_external_subset /mnt/ram/plain/libexpat/expat/tests/runtests.c:1061:9
    #11 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #12 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #13 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 1036 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c94d35 in poolGrow /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:6351:20
    #2 0x7fd645c93085 in poolAppend /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:6234:22
    #3 0x7fd645c902fc in poolStoreString /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:6287:8
    #4 0x7fd645c9a135 in reportComment /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:5399:10
    #5 0x7fd645c8eaab in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4761:12
    #6 0x7fd645cb17ee in externalParEntProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3773:10
    #7 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #8 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #9 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #10 0x5186f1 in external_entity_param_checker /mnt/ram/plain/libexpat/expat/tests/runtests.c:1990:9
    #11 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #12 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #13 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #14 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #15 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #16 0x5117ed in test_user_parameters /mnt/ram/plain/libexpat/expat/tests/runtests.c:2021:9
    #17 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #18 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #19 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 1036 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c94d35 in poolGrow /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:6351:20
    #2 0x7fd645c79224 in setContext /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:5701:12
    #3 0x7fd645c76309 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1143:11
    #4 0x51751e in external_entity_loader_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:941:17
    #5 0x7fd645c9c203 in doContent /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2434:16
    #6 0x7fd645c91a90 in contentProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2170:27
    #7 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #8 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #9 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #10 0x516427 in _run_character_check /mnt/ram/plain/libexpat/expat/tests/runtests.c:295:9
    #11 0x50e92c in test_ext_entity_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:964:5
    #12 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #13 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #14 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 1036 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c94d35 in poolGrow /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:6351:20
    #2 0x7fd645c749f9 in poolCopyString /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:6250:10
    #3 0x7fd645c76d8c in dtdCopy /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:5901:12
    #4 0x7fd645c762ed in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1142:10
    #5 0x51751e in external_entity_loader_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:941:17
    #6 0x7fd645c9c203 in doContent /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2434:16
    #7 0x7fd645c91a90 in contentProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2170:27
    #8 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #9 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #10 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #11 0x516427 in _run_character_check /mnt/ram/plain/libexpat/expat/tests/runtests.c:295:9
    #12 0x50e92c in test_ext_entity_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:964:5
    #13 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #14 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #15 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 1024 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7194e in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:824:25
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51867e in external_entity_param_checker /mnt/ram/plain/libexpat/expat/tests/runtests.c:1986:18
    #4 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x5117ed in test_user_parameters /mnt/ram/plain/libexpat/expat/tests/runtests.c:2021:9
    #10 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #11 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #12 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 1024 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7194e in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:824:25
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51842e in external_entity_suspender /mnt/ram/plain/libexpat/expat/tests/runtests.c:1877:18
    #4 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x5114ab in test_subordinate_suspend /mnt/ram/plain/libexpat/expat/tests/runtests.c:1899:9
    #10 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #11 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #12 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 1024 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7194e in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:824:25
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51808f in external_entity_resetter /mnt/ram/plain/libexpat/expat/tests/runtests.c:1802:18
    #4 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x5113db in test_subordinate_reset /mnt/ram/plain/libexpat/expat/tests/runtests.c:1844:9
    #10 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #11 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #12 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 1024 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7194e in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:824:25
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51740c in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1016:17
    #4 0x7fd645c846e5 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4078:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x5105e8 in test_set_foreign_dtd /mnt/ram/plain/libexpat/expat/tests/runtests.c:1604:9
    #10 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #11 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #12 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 1024 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7194e in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:824:25
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51751e in external_entity_loader_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:941:17
    #4 0x7fd645c9c203 in doContent /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2434:16
    #5 0x7fd645c91a90 in contentProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2170:27
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x516427 in _run_character_check /mnt/ram/plain/libexpat/expat/tests/runtests.c:295:9
    #10 0x50e92c in test_ext_entity_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:964:5
    #11 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #12 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #13 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 1024 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7194e in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:824:25
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51740c in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1016:17
    #4 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x516238 in _expect_failure /mnt/ram/plain/libexpat/expat/tests/runtests.c:106:9
    #10 0x50e7f7 in test_wfc_undeclared_entity_with_external_subset_standalone /mnt/ram/plain/libexpat/expat/tests/runtests.c:1041:5
    #11 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #12 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #13 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 1024 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7194e in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:824:25
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51740c in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1016:17
    #4 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x50e5f5 in test_not_standalone_handler_accept /mnt/ram/plain/libexpat/expat/tests/runtests.c:1111:9
    #10 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #11 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #12 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 1024 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7194e in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:824:25
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51740c in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1016:17
    #4 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x50e3c5 in test_not_standalone_handler_reject /mnt/ram/plain/libexpat/expat/tests/runtests.c:1086:9
    #10 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #11 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #12 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 1024 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7194e in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:824:25
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51740c in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1016:17
    #4 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x50e19e in test_wfc_undeclared_entity_with_external_subset /mnt/ram/plain/libexpat/expat/tests/runtests.c:1061:9
    #10 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #11 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #12 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 936 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c71437 in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:785:7
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51751e in external_entity_loader_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:941:17
    #4 0x7fd645c9c203 in doContent /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2434:16
    #5 0x7fd645c91a90 in contentProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2170:27
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x516427 in _run_character_check /mnt/ram/plain/libexpat/expat/tests/runtests.c:295:9
    #10 0x50e92c in test_ext_entity_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:964:5
    #11 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #12 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #13 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 800 byte(s) in 1 object(s) allocated from:
    #0 0x4d1d70 in realloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1d70)
    #1 0x51b273 in tcase_add_test /mnt/ram/plain/libexpat/expat/tests/minicheck.c:64:42
    #2 0x50b0c0 in make_suite /mnt/ram/plain/libexpat/expat/tests/runtests.c:3435:5
    #3 0x50a961 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3481:16
    #4 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 800 byte(s) in 1 object(s) allocated from:
    #0 0x4d1d70 in realloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1d70)
    #1 0x51b273 in tcase_add_test /mnt/ram/plain/libexpat/expat/tests/minicheck.c:64:42
    #2 0x50abc3 in make_suite /mnt/ram/plain/libexpat/expat/tests/runtests.c:3362:5
    #3 0x50a961 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3481:16
    #4 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 800 byte(s) in 1 object(s) allocated from:
    #0 0x4d1d70 in realloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1d70)
    #1 0x51b273 in tcase_add_test /mnt/ram/plain/libexpat/expat/tests/minicheck.c:64:42
    #2 0x50b2b0 in make_suite /mnt/ram/plain/libexpat/expat/tests/runtests.c:3463:5
    #3 0x50a961 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3481:16
    #4 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 800 byte(s) in 1 object(s) allocated from:
    #0 0x4d1d70 in realloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1d70)
    #1 0x51b273 in tcase_add_test /mnt/ram/plain/libexpat/expat/tests/minicheck.c:64:42
    #2 0x50b1ee in make_suite /mnt/ram/plain/libexpat/expat/tests/runtests.c:3452:5
    #3 0x50a961 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3481:16
    #4 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 512 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7182f in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:811:23
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51867e in external_entity_param_checker /mnt/ram/plain/libexpat/expat/tests/runtests.c:1986:18
    #4 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x5117ed in test_user_parameters /mnt/ram/plain/libexpat/expat/tests/runtests.c:2021:9
    #10 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #11 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #12 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 512 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7182f in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:811:23
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51842e in external_entity_suspender /mnt/ram/plain/libexpat/expat/tests/runtests.c:1877:18
    #4 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x5114ab in test_subordinate_suspend /mnt/ram/plain/libexpat/expat/tests/runtests.c:1899:9
    #10 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #11 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #12 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 512 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7182f in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:811:23
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51808f in external_entity_resetter /mnt/ram/plain/libexpat/expat/tests/runtests.c:1802:18
    #4 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x5113db in test_subordinate_reset /mnt/ram/plain/libexpat/expat/tests/runtests.c:1844:9
    #10 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #11 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #12 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 512 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7182f in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:811:23
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51740c in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1016:17
    #4 0x7fd645c846e5 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4078:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x5105e8 in test_set_foreign_dtd /mnt/ram/plain/libexpat/expat/tests/runtests.c:1604:9
    #10 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #11 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #12 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 512 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c9061c in lookup /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:6067:26
    #2 0x7fd645cb21e1 in copyEntityTable /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:5989:22
    #3 0x7fd645c779c4 in dtdCopy /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:5938:8
    #4 0x7fd645c762ed in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1142:10
    #5 0x51751e in external_entity_loader_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:941:17
    #6 0x7fd645c9c203 in doContent /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2434:16
    #7 0x7fd645c91a90 in contentProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2170:27
    #8 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #9 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #10 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #11 0x516427 in _run_character_check /mnt/ram/plain/libexpat/expat/tests/runtests.c:295:9
    #12 0x50e92c in test_ext_entity_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:964:5
    #13 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #14 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #15 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 512 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c9061c in lookup /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:6067:26
    #2 0x7fd645c76de6 in dtdCopy /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:5904:28
    #3 0x7fd645c762ed in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1142:10
    #4 0x51751e in external_entity_loader_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:941:17
    #5 0x7fd645c9c203 in doContent /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2434:16
    #6 0x7fd645c91a90 in contentProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2170:27
    #7 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #8 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #9 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #10 0x516427 in _run_character_check /mnt/ram/plain/libexpat/expat/tests/runtests.c:295:9
    #11 0x50e92c in test_ext_entity_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:964:5
    #12 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #13 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #14 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 512 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7182f in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:811:23
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51751e in external_entity_loader_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:941:17
    #4 0x7fd645c9c203 in doContent /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2434:16
    #5 0x7fd645c91a90 in contentProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2170:27
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x516427 in _run_character_check /mnt/ram/plain/libexpat/expat/tests/runtests.c:295:9
    #10 0x50e92c in test_ext_entity_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:964:5
    #11 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #12 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #13 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 512 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7182f in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:811:23
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51740c in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1016:17
    #4 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x516238 in _expect_failure /mnt/ram/plain/libexpat/expat/tests/runtests.c:106:9
    #10 0x50e7f7 in test_wfc_undeclared_entity_with_external_subset_standalone /mnt/ram/plain/libexpat/expat/tests/runtests.c:1041:5
    #11 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #12 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #13 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 512 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7182f in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:811:23
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51740c in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1016:17
    #4 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x50e5f5 in test_not_standalone_handler_accept /mnt/ram/plain/libexpat/expat/tests/runtests.c:1111:9
    #10 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #11 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #12 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 512 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7182f in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:811:23
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51740c in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1016:17
    #4 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x50e3c5 in test_not_standalone_handler_reject /mnt/ram/plain/libexpat/expat/tests/runtests.c:1086:9
    #10 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #11 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #12 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 512 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c7182f in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:811:23
    #2 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #3 0x51740c in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1016:17
    #4 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #5 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #6 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #7 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #8 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #9 0x50e19e in test_wfc_undeclared_entity_with_external_subset /mnt/ram/plain/libexpat/expat/tests/runtests.c:1061:9
    #10 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #11 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #12 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 360 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c80710 in dtdCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:5734:19
    #2 0x7fd645c71ba9 in parserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:838:12
    #3 0x7fd645c757a5 in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1099:14
    #4 0x51751e in external_entity_loader_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:941:17
    #5 0x7fd645c9c203 in doContent /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2434:16
    #6 0x7fd645c91a90 in contentProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2170:27
    #7 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #8 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #9 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #10 0x516427 in _run_character_check /mnt/ram/plain/libexpat/expat/tests/runtests.c:295:9
    #11 0x50e92c in test_ext_entity_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:964:5
    #12 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #13 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #14 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 64 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c9134a in lookup /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:6125:26
    #2 0x7fd645cb21e1 in copyEntityTable /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:5989:22
    #3 0x7fd645c779c4 in dtdCopy /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:5938:8
    #4 0x7fd645c762ed in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1142:10
    #5 0x51751e in external_entity_loader_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:941:17
    #6 0x7fd645c9c203 in doContent /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2434:16
    #7 0x7fd645c91a90 in contentProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2170:27
    #8 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #9 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #10 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #11 0x516427 in _run_character_check /mnt/ram/plain/libexpat/expat/tests/runtests.c:295:9
    #12 0x50e92c in test_ext_entity_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:964:5
    #13 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #14 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #15 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 48 byte(s) in 1 object(s) allocated from:
    #0 0x4d1b50 in calloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1b50)
    #1 0x51ae11 in tcase_create /mnt/ram/plain/libexpat/expat/tests/minicheck.c:29:27
    #2 0x50ab6f in make_suite /mnt/ram/plain/libexpat/expat/tests/runtests.c:3357:22
    #3 0x50a961 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3481:16
    #4 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 48 byte(s) in 1 object(s) allocated from:
    #0 0x4d1b50 in calloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1b50)
    #1 0x51ae11 in tcase_create /mnt/ram/plain/libexpat/expat/tests/minicheck.c:29:27
    #2 0x50ab5c in make_suite /mnt/ram/plain/libexpat/expat/tests/runtests.c:3356:27
    #3 0x50a961 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3481:16
    #4 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 48 byte(s) in 1 object(s) allocated from:
    #0 0x4d1b50 in calloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1b50)
    #1 0x51ae11 in tcase_create /mnt/ram/plain/libexpat/expat/tests/minicheck.c:29:27
    #2 0x50ab49 in make_suite /mnt/ram/plain/libexpat/expat/tests/runtests.c:3355:23
    #3 0x50a961 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3481:16
    #4 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 40 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c9134a in lookup /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:6125:26
    #2 0x7fd645c76de6 in dtdCopy /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:5904:28
    #3 0x7fd645c762ed in XML_ExternalEntityParserCreate /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1142:10
    #4 0x51751e in external_entity_loader_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:941:17
    #5 0x7fd645c9c203 in doContent /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2434:16
    #6 0x7fd645c91a90 in contentProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:2170:27
    #7 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #8 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #9 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #10 0x516427 in _run_character_check /mnt/ram/plain/libexpat/expat/tests/runtests.c:295:9
    #11 0x50e92c in test_ext_entity_set_encoding /mnt/ram/plain/libexpat/expat/tests/runtests.c:964:5
    #12 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #13 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #14 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 32 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c8b45f in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4522:36
    #2 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #3 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #4 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #5 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #6 0x517473 in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1019:11
    #7 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #8 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #9 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #10 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #11 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #12 0x50e3c5 in test_not_standalone_handler_reject /mnt/ram/plain/libexpat/expat/tests/runtests.c:1086:9
    #13 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #14 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #15 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 32 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c8b45f in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4522:36
    #2 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #3 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #4 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #5 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #6 0x5186f1 in external_entity_param_checker /mnt/ram/plain/libexpat/expat/tests/runtests.c:1990:9
    #7 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #8 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #9 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #10 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #11 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #12 0x5117ed in test_user_parameters /mnt/ram/plain/libexpat/expat/tests/runtests.c:2021:9
    #13 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #14 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #15 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 32 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c8b45f in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4522:36
    #2 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #3 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #4 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #5 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #6 0x5184b5 in external_entity_suspender /mnt/ram/plain/libexpat/expat/tests/runtests.c:1882:9
    #7 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #8 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #9 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #10 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #11 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #12 0x5114ab in test_subordinate_suspend /mnt/ram/plain/libexpat/expat/tests/runtests.c:1899:9
    #13 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #14 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #15 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 32 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c8b45f in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4522:36
    #2 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #3 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #4 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #5 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #6 0x517473 in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1019:11
    #7 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #8 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #9 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #10 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #11 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #12 0x516238 in _expect_failure /mnt/ram/plain/libexpat/expat/tests/runtests.c:106:9
    #13 0x50e7f7 in test_wfc_undeclared_entity_with_external_subset_standalone /mnt/ram/plain/libexpat/expat/tests/runtests.c:1041:5
    #14 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #15 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #16 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 32 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c8b45f in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4522:36
    #2 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #3 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #4 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #5 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #6 0x51818c in external_entity_resetter /mnt/ram/plain/libexpat/expat/tests/runtests.c:1810:9
    #7 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #8 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #9 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #10 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #11 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #12 0x5113db in test_subordinate_reset /mnt/ram/plain/libexpat/expat/tests/runtests.c:1844:9
    #13 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #14 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #15 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 32 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c8b45f in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4522:36
    #2 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #3 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #4 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #5 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #6 0x517473 in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1019:11
    #7 0x7fd645c846e5 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4078:16
    #8 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #9 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #10 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #11 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #12 0x5105e8 in test_set_foreign_dtd /mnt/ram/plain/libexpat/expat/tests/runtests.c:1604:9
    #13 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #14 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #15 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 32 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c8b45f in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4522:36
    #2 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #3 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #4 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #5 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #6 0x517473 in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1019:11
    #7 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #8 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #9 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #10 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #11 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #12 0x50e5f5 in test_not_standalone_handler_accept /mnt/ram/plain/libexpat/expat/tests/runtests.c:1111:9
    #13 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #14 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #15 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Indirect leak of 32 byte(s) in 1 object(s) allocated from:
    #0 0x4d1958 in __interceptor_malloc (/mnt/ram/plain/libexpat/expat/tests/.libs/runtests+0x4d1958)
    #1 0x7fd645c8b45f in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4522:36
    #2 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #3 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #4 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #5 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #6 0x517473 in external_entity_loader /mnt/ram/plain/libexpat/expat/tests/runtests.c:1019:11
    #7 0x7fd645c83e85 in doProlog /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:4035:16
    #8 0x7fd645c813e8 in prologProcessor /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:3823:10
    #9 0x7fd645c7de0c in XML_ParseBuffer /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1701:15
    #10 0x7fd645c7c643 in XML_Parse /mnt/ram/plain/libexpat/expat/lib/xmlparse.c:1667:14
    #11 0x515f27 in _XML_Parse_SINGLE_BYTES /mnt/ram/plain/libexpat/expat/tests/runtests.c:92:15
    #12 0x50e19e in test_wfc_undeclared_entity_with_external_subset /mnt/ram/plain/libexpat/expat/tests/runtests.c:1061:9
    #13 0x51b8b1 in srunner_run_all /mnt/ram/plain/libexpat/expat/tests/minicheck.c:137:13
    #14 0x50aae1 in main /mnt/ram/plain/libexpat/expat/tests/runtests.c:3500:5
    #15 0x7fd644dba1e0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r1/work/glibc-2.24/csu/../csu/libc-start.c:289

Use XML_ParserFree to wipe parser->m_hash_secret_salt memory?

There is a note

When you have finished using the random number, free the RandomBuffer buffer by calling the SecureZeroMemory function.

that has been ignored for parser->m_hash_secret_salt so far. I'm unsure if a hash salt for DoS protection is worth the hassle. Feedback welcome!

Find artificial limits on entity expansion (nesting depth, size, ..)

First: If you are using Expat with "crazy nested entities" XML files please get in touch, so we don't break your scenario by mistake later. Thank you!

When we introduce protection against billion laugh attack (issue #34), that protection needs to be enabled by default to really protect users. Since we want to keep benign XML with nested/large entities working at the same time, we need to find the place to draw the line between benign and malicious.

Could help:

  • Check what limits do other XML parsers impose by default if any, e.g. have a closer look at XML_ERR_ENTITY_LOOP in libxml2
  • Play with existing defusedexpat code
  • Search the internet for benign crazy entity XML files
  • ...

If any of that sounds like fun to you, please get in touch.

Best, Sebastian

Allocation of default attributes fails to recover correctly

Line 5440 of xmlparse.c sets the allocDefaultAtts field of an ELEMENT_TYPE to 8 before allocating space for eight default attributes. If the allocation fails, allocDefaultAtts is not zeroed. This may be safe -- default attributes are cleared out by XML_ParserReset() -- but leaving the structure in an inconsistent state is worrying.

macOS: dylib compatibility/current version inconsistency between CMake and Autotools

compatibility version and current version of the Mach-O shared library libexpat.dylib built using the Autoconf build system are different from compatibility version and current version of the dylib built using the CMake build system (on macOS).

configure + make link the dylib with -compatibility_version 8 -current_version 8.3 (see gist)
After make install:

$ otool -L /usr/local/lib/libexpat.dylib
/usr/local/lib/libexpat.dylib:
	/usr/local/lib/libexpat.1.dylib (compatibility version 8.0.0, current version 8.3.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.60.2)

CMake + make link the dylib with -compatibility_version 1.0.0 -current_version 1.6.3 (see gist)
After make install:

$ otool -L /usr/local/lib/libexpat.dylib
/usr/local/lib/libexpat.dylib:
	libexpat.1.dylib (compatibility version 1.0.0, current version 1.6.3)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.50.2)

Version number 1.6.3 is part of the dylib filename in either case: libexpat.1.6.3.dylib (both libexpat.dylib and libexpat.1.dylib are symbolic links pointing to libexpat.1.6.3.dylib)

Any binary that depends on the expat library will fail (crash) if they were linked against the dylib that was built using the "configure way", e.g. tar (bsdtar), which I compiled myself:

dyld: Library not loaded: /usr/local/lib/libexpat.1.dylib
  Referenced from: /usr/local/bin/tar
  Reason: Incompatible library version: tar requires version 8.0.0 or later, but libexpat.1.dylib provides version 1.0.0
[1]    45316 abort      tar --version

In CMakeLists.txt:

set(LIBCURRENT 7)   # sync
set(LIBREVISION 3)  # with
set(LIBAGE 6)       # configure.ac!
math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}")

if(NOT WIN32)
    set_property(TARGET expat PROPERTY VERSION ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION})
    set_property(TARGET expat PROPERTY SOVERSION ${LIBCURRENT_MINUS_AGE})
    set_property(TARGET expat PROPERTY NO_SONAME ${NO_SONAME})
endif(NOT WIN32)

So... ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION})1.6.3

In configure.ac:

dnl
dnl Increment LIBREVISION if source code has changed at all
dnl
dnl If the API has changed, increment LIBCURRENT and set LIBREVISION to 0
dnl
dnl If the API changes compatibly (i.e. simply adding a new function
dnl without changing or removing earlier interfaces), then increment LIBAGE.
dnl 
dnl If the API changes incompatibly set LIBAGE back to 0
dnl

LIBCURRENT=7   # sync
LIBREVISION=3  # with
LIBAGE=6       # CMakeLists.txt!

Somewhere in the process this apparently ends up as 8.3.0?...

Incidentally, I used the tarball from downloads.sourceforge.net, so there was already a configure. Cloning this git repository and running buildconf.sh first didn't change anything to the end result.

storeAtts nsAtts hash table reallocation fails to recover

Another bug along the lines of issue #4

If the reallocation of the nsAtts hash table fails, nsAttsPower is left at the new desired table size. This is a field of parser obscured by macros, and is not touched by XML_ParserReset(). The parser therefore believes it has a larger table allocated than is really the case, and if reused may attempt to read or write to unallocated memory.

test_nsalloc_realloc_attributes() introduced in RMJ10/libexpat commit c7750a9 demonstrates this issue (and segmentation faults on my machine).

RMJ10/libexpat commit 49e61a4 has a candidate fix, stashing the previous value of nsAttsPower and restoring it if the reallocation fails.

CMake build system: Detect presence of high quality entropy functions

Pull request #30 introduced use of high quality entropy sources. While the Autotools build system has detection for the related functions and is the primary build system, the CMake build system could use similar detection as well. In detail:

  • getrandom / HAVE_GETRANDOM
  • syscall(SYS_getrandom, ...) / HAVE_SYSCALL_GETRANDOM
  • arc4random_buf (native or libbsd) / HAVE_LIBBSD, HAVE_ARC4RANDOM_BUF

Ways to enforce/deny should be included.

If you can help with a clean solution, please get in touch.

Best, Sebastian

https://cmake.org/Wiki/CMake:How_To_Write_Platform_Checks

__func__ warnings from GCC

I seem to have an odd case for use or suppression of warnings about func

I'm running Linux Mint 18 with GCC 5.4.0, and built libexpat with the standard ./buildconf.sh and vanilla ./configure. If I run expat's XML tests (make check), I am buried under warnings that ISO C 90 does not support func, which is fair enough since it doesn't appear until ISO C 99.

It appears that what is happening is that this version of GCC is taking a very strict interpretation of the C90 standard. Specifically, STDC_VERSION isn't in C90 and therefore isn't supplied by the compiler, so the checks in minicheck.h that would remove func are passed over. Presumably those checks come from configure.ac somehow; I'm afraid libtool is just fell sorcery to me!

I can patch around this easily enough for myself, and it doesn't happen on my other Linux Mint machine. It's not a priority as far as I'm concerned.

(Re)allocation of groupConnector fails to recover correctly

The reallocation of groupConnector at line 4492 of xmlparse.c doubles groupSize, but doesn't halve it again if the reallocation fails. Unfortunately groupSize is really parser->m_groupSize, so the parser is left believing it has more memory allocated than it actually has. The reallocation of dtd->scaffIndex a few lines later has the same problem.

The alternative code path allocating of groupConnector at line 4505 manages to achieve the same problem, setting groupSize as part of the call to MALLOC() but not unsetting it on failure. This would lead to future re-uses of the parser attempting to dereference a null pointer, which will not end well.

Double free of DTD element type

lib/xmlparse.c line 5887: if the allocation of an ElementType's default attribute fails, the element type itself will be freed. Unfortunately the earlier call to lookup() has already stored the new element type structure in the DTD. When dtdDestroy() is inevitably called on the DTD, the element type will be freed again.

test_alloc_dtd_copy_default_atts introduced in RMJ10/libexpat commit 4499b07 provokes the problem.

RMJ10/libexpat commit 5747669 has the obvious fix of removing the call to ms->free_fcn(). This does not appear to cause problems.

Get number of expected test failures down to zero / Test Suite Analysis

Expat uses the XML Test Suite downloaded from W3C as part of its validation and coverage tests. At present 33 of the tests are expected to fail for some reason. This issue is here to track what those failures are and what we intend to do about them, if anything.

There are four broad categories of failures:

  1. Error in Expected Output

    Test ibm/valid/PO2/ibm02v01.xml has two spurious newlines in its expected output file. I'm reluctant to recommend changing the diff to use '-b' as I think whitespace is significant in some tests. Can we lobby W3 to fix the expected output?

  2. Error raised by xmlwf

    Test ibm/invalid/P49/ibm49i02.xml references an external subset in a file "ibm49i02.dtd" that (intentionally) does not exist. Xmlwf exits with an error when it discovers this, which xmltest.sh interprets as failure. In fact rejecting an invalid input with a non-zero status code would be perfectly reasonable, and a note in the manual page for xmlwf does regard not doing so as a bug. Perhaps adding another variant RunXmlwfInvalid() function in xmltest.sh would be appropriate?

  3. Missing output from xmlwf (fixed by #106)

    A number of tests expect <!NOTATION> declarations (in an internal subset in a suitable <!DOCTYPE> of course) in their output. Xmlwf as currently written does not handle notations, as they aren't part of the canonical XML it produces by default. (XML also has a canonical XML standard which is probably the same thing).

    Fixing up xmlwf to output notations in the form desired is easy enough (the xmlwf-doctype-fix branch of RMJ10/libexpat has the code). Before I submit a pull request for that, I'd like opinions on whether this should be a command-line option, or whether we are giving up on canonicalization.

    In any case, fixing xmlwf this way eliminates most of the remaining failures.

  4. Missed Validation/Well-Formedness Checking

    The remaining six tests are call cases of the parser not detecting that the input is not valid or well-formed. This is not entirely unexpected; Expat is not a validating parser, and as some of the tests note, non-validating parsers can miss some of the issues.

    The tests are:

    1. ibm/not-wf/misc/432gewf.xml

      <!DOCTYPE student [
      <!ELEMENT student (#PCDATA)>
          <!ENTITY gewithElemnetDecl "<!ELEMENT bogus ANY>"> 
          <!ATTLIST student att1 CDATA #REQUIRED>
      ]>
      <!--* This test is to test the GE well-formedness 
            constraints in Section 4.3.2:
            An internal general parsed encith is well-formed if 
            its replacement text matches the production labeled
            "content" *--> 
      <?MyInstruct This is a test ?>
      <student att1="ibm">My Name is SnowMan. </student>
      

      The test is to spot that the definition of gewithElemnetDecl (sic) contains text that is not legal for a general entity. However Expat doesn't parse the "literal entity value" until it is substituted somewhere in the document. In this test, gewithElemnetDecl is never referenced in the document, so we never parse its contents and never notice it isn't well formed.

      If the entity is referenced, an error is returned. As a result this is not a failure worth losing sleep over.

    2. xmltest/not-wf/not-sa/005.xml

      <!DOCTYPE doc SYSTEM "005.ent">
      <doc></doc>
      

      In 005.ent:

      <!ELEMENT doc (#PCDATA)>
      %e;
      

      The test is that the DTD references parameter entity e which is not declared anywhere, thereby breaking the validity constraint in section 4.1 of the XML standard. The parser only enforces the well-formedness constraint in the same section, which is looser.

    3. sun/not-wf/uri01.xml

      <!DOCTYPE root [
      <!ELEMENT root EMPTY>
      <!-- URI fragments disallowed -->
      <!ENTITY foo SYSTEM "foo#bar">
      ]>
      <root/>
      

      From the definition in section 4.2.2 of the XML standard, the "system identifier [...] is meant to be converted to a URI [...]. It is an error for a fragment identifier (beginning with a # character) to be part of a system identifier." The use of the word "converted" make this definition a little woolly, but in any case Expat does not parse system identifiers and makes no attempt to enforce URI syntax. It is presumed that any code that cares about such things will do its own checking in a suitable handler. @hartwork noted that scanning the system ID for a # in xmlwf would be sufficient.

    4. oasis/p06fail1.xml

      <!--non-validating processors may pass this instance because they don't check the IDREFS attribute type-->
      <!DOCTYPE doc
      [
          <!ELEMENT doc (a|refs)*>
          <!ELEMENT a EMPTY>
          <!ELEMENT refs EMPTY>
          <!ATTLIST refs refs IDREFS #REQUIRED>
          <!ATTLIST a id ID #REQUIRED>
      ]>
      <doc>
      <a id="A1"/><a id="A2"/><a id="A3"/>
      <refs refs=""/>
      </doc>
      

      As the comment suggests, Expat does not raise an error for this because it doesn't check that the refs attribute of <refs> actually references an ID.

    5. oasis/p08fail1.xml

      <!--note: non-validating parsers may accept this document-->
      <!DOCTYPE doc
      [
          <!ELEMENT doc (A*)>
         <!ELEMENT A EMPTY>
         <!ATTLIST A att NMTOKENS #IMPLIED>
      ]>
      <doc>
      <A att=""/>
      </doc>
      

      Again, Expat does not parse the value of att and therefore cannot notice that the empty string is not a valid list of valid name tokens.

    6. oasis/p08fail2.xml

      <!--note: non-validating parsers may accept this document-->
      <!DOCTYPE doc
      [
          <!ELEMENT doc (A*)>
          <!ELEMENT A EMPTY>
          <!ATTLIST A att NMTOKENS #IMPLIED>
      ]>
      <doc>
      <A att="abc / def"/>
      </doc>
      

      Once again, Expat does not parse the value of att and therefore cannot notice that / is not a valid name token.

Memory Leak in Empty Element Handling

The following XML causes a memory leak when parsed: <D xmlns:L="D" l:a='' L:a=''/>

What happens is that the attribute parsing in storeAtts() creates a binding for the attribute xmlns:L and attaches it to the binding list pointer parameter. However l:a doesn't have a valid prefix, so the function aborts and returns an error. Normally this would leave the newly-minted binding attached to some field of the parser object, from where it will eventually be freed.

Unfortunately, for empty elements (cases XML_TOK_EMPTY_ELEMENT_NO_ATTS and XML_TOK_EMPTY_ELEMENT_WITH_ATTS), doContent() uses a local stack variable as the binding pointer passed to storeAtts() and fails to tidy it up if an error is returned.

The solution is to move any bindings onto the parser's free binding list, as is done at the end of the case:

rhodri@sto-helit ~/expat/base/libexpat $ git diff expat/lib/xmlparse.c
diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c
index bb8c9a7..09245a9 100644
--- a/expat/lib/xmlparse.c
+++ b/expat/lib/xmlparse.c
@@ -2527,8 +2527,18 @@ doContent(XML_Parser parser,
           return XML_ERROR_NO_MEMORY;
         poolFinish(&tempPool);
         result = storeAtts(parser, enc, s, &name, &bindings);
-        if (result)
+        if (result) {
+          while (bindings) {
+            BINDING *b = bindings;
+            if (endNamespaceDeclHandler)
+              endNamespaceDeclHandler(handlerArg, b->prefix->name);
+            bindings = bindings->nextTagBinding;
+            b->nextTagBinding = freeBindingList;
+            freeBindingList = b;
+            b->prefix->binding = b->prevPrefixBinding;
+          }
           return result;
+        }
         poolFinish(&tempPool);
         if (startElementHandler) {
           startElementHandler(handlerArg, name.str, (const XML_Char **)atts);

xmlwf gives bogus 'no element found' error

Valid XML is declared invalid by xmlwf when memory mapped:

$ xmlwf bigfile.xml
bigfile.xml:3633808:9687: no element found
$ xmlwf -r bigfile.xml
$ cat bigfile.xml | xmlwf
$

You can access bigfile.xml here.

Migrate Makefile.in and make-release.sh to GNU Automake?

Pros (of using GNU Automake):

  • make dist out of the box, no more need for hand-made make-release.sh
  • make distcheck out of the box
  • Automatic discovery of inter-source-file dependencies
  • Option for less verbose builds, e.g. CC lib/xmlparse.c rather than the full compile command line
  • Adding new source files becomes a bit easier

Cons:

  • ???

Side notes:

  • We have a few custom targets in Makefile.in that need to be copied/migrated, too

Feedback and pull requests welcome, ideally feedback first :)

Unnecessarily complex allocation

xmlparse.c lines 1630-1632 are unnecessarily complex if reallocation functions are required to match realloc()'s semantics (I couldn't find a definitive statement). realloc(NULL, size) should be equivalent to malloc(size), so there's no need to dance around checking that buffer is not NULL.

A low priority issue, I think.

Propagate errors from generate_hash_secret_salt up to XML_Parse/XML_ParseBuffer?

At the moment, generate_hash_secret_salt uses fallback code when high quality sources of entropy fail to serve entropy. For the future we could propagate errors upwards so that XML_Parse/XML_ParseBuffer fails with an error, instead. We may need a new error code and consider pros and cons of that approach.

The call tree is:

  1. XML_Parse/XML_ParseBuffer
  2. startParsing
  3. generate_hash_secret_salt

Apply and enforce consistent coding style using clang-format-7

Currently expat has no consistent coding style. See e.g. this piece of xmlparse.c:

static XML_Bool  /* only valid for root parser */
startParsing(XML_Parser parser)
{
    /* hash functions must be initialized before setContext() is called */
    if (hash_secret_salt == 0)
      hash_secret_salt = generate_hash_secret_salt(parser);
    if (ns) {
      /* implicit context only set for root parser, since child
         parsers (i.e. external entity parsers) will inherit it
      */
      return setContext(parser, implicitContext);
    }
    return XML_TRUE;
}

XML_Parser XMLCALL
XML_ParserCreate_MM(const XML_Char *encodingName,
                    const XML_Memory_Handling_Suite *memsuite,
                    const XML_Char *nameSep)
{
  return parserCreate(encodingName, memsuite, nameSep, NULL);
}

The first function indents with 4 spaces for the main function, but 2 spaces for the rest. The second function indents with 2 spaces. Similar examples can be found throughout the code.

I don't have any strong feelings about tabs vs. spaces or any other parts of coding style, but I think the style should be consistent within a project (or at least within a source file). To avoid too much unnecessary changes I'd recommend going for a coding style that's as close as possible to the already existing style.

Ideally the coding style should be documented in the form of a set of parameters for a common style checking tool (like clang-format or GNU indent) and there should be a possibility to check the whole code for compliance.

Travis: Use build matrix

Currently, the tests are composed of two modes: address and lib-coverage. We can use Travis' Build matrix feature to test both in a separate "container" and they'll run in a fresh start.

Out of memory error from "xmlwf filename" (but not "xmlwf < filename")

xmlwf fails with out of memory if run on a very large file. However, it suceeds if it takes the file from standard input instead of from the command line:

$ ls -l largefile.xml
-rw-r--r-- 1 tomcat tomcat 2602873036 May 20 08:59 largefile.xml

$ cat largefile.xml | xmlwf

$ xmlwf largefile.xml
largefile.xml:1:0: out of memory

$ uname -a
Linux v101.vulcan.ms 4.9.7-x86_64-linode80 #2 SMP Thu Feb 2 15:43:55 EST 2017 x86_64 x86_64 x86_64 GNU/Linux

$ rpm -qf `which xmlwf`
expat-2.1.0-20.1.x86_64

$ cat /etc/os-release 
NAME="openSUSE Leap"
VERSION="42.1"
VERSION_ID="42.1"
PRETTY_NAME="openSUSE Leap 42.1 (x86_64)"
ID=opensuse
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:opensuse:42.1"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://opensuse.org/"
ID_LIKE="suse"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.