xmllint.c


Log

Author Commit Date CI Message
Nick Wellnhofer 3ef66611 2024-07-22T14:58:16 build: Rework mmap checks Switch to AC_CHECK_DECLS/check_symbol_exists. Don't check for sys/mman.h separately. Don't check for munmap.
Nick Wellnhofer 8af55c8d 2024-07-06T22:14:21 parser: Rename new input API functions These weren't made public yet.
Nick Wellnhofer 37f72370 2024-07-01T15:31:58 xmllint: Fix unsigned integer overflow Short-lived regression.
Nick Wellnhofer 71eb7109 2024-06-26T04:29:11 xmllint: Switch to xmlCtxtSetErrorHandler
Nick Wellnhofer 5589c9ea 2024-06-22T21:01:38 xmllint: Set stdin/stdout to binary on Windows
Nick Wellnhofer 84a4f84c 2024-06-22T02:11:24 build: Don't check for required headers and functions Unless we are on Windows, the following POSIX headers are required. They're part of the earliest POSIX specs and it doesn't make sense to check for them. - fcntl.h - unistd.h - sys/stat.h - sys/time.h On Windows, io.h, fcntl.h and sys/stat.h are always available.
Nick Wellnhofer f23fc4fa 2024-06-22T02:10:54 xmllint: Simplify time handling Assume that gettimeofday is always available.
Rosen Penev 2def7b4b 2024-06-18T13:55:34 clang-tidy: move assignments out of if Found with bugprone-assignment-in-if-condition Signed-off-by: Rosen Penev <rosenp@gmail.com>
Nick Wellnhofer 1341deac 2024-06-16T17:57:12 xmllint: Move shell to xmllint Move source code for xmllint shell to shell.c and move it from the libxml2 library to the xmllint executable. Also allow shell to run without XPath and debug modules. Add stubs for old shell API functions in legacy build mode.
Nick Wellnhofer c9b06591 2024-06-16T17:36:05 xmllint: Fix resetting error in xmlHTMLPrintError Make sure that we don't change the error handler when fuzzing.
Nick Wellnhofer b0fc67aa 2024-06-15T22:53:55 build: Remove --with-tree configuration option This option would allow for a smaller, but mostly useless minimal build. But it complicates the symbol availability logic in an insane way and requires specialized tools like our custom C parser in doc/apibuild.py. See #717.
Nick Wellnhofer 0c97eaa7 2024-06-10T23:05:40 xmllint: Rewrite HTML error output
Nick Wellnhofer dba1ed85 2024-06-12T18:19:55 ftp: Remove FTP support Remove the built-in FTP client. If you configure --with-legacy, old symbols are retained for ABI compatibility.
Nick Wellnhofer 52384043 2024-06-11T19:10:41 parser: Pass resource type to resource loader
Nick Wellnhofer f96dca9c 2024-06-11T18:14:43 xmllint: Switch to resource loader
Nick Wellnhofer e2919516 2024-06-06T19:28:23 xmllint: Fix build --with-valid --without-html
Nick Wellnhofer caa8bb38 2024-05-19T19:31:54 fuzz: Move back to xmlSetExternalEntityLoader xmlParserInputBufferCreateFilenameDefault can't report malloc failures.
Nick Wellnhofer b3cb41be 2024-05-13T12:18:08 fuzz: Add xmllint fuzzer
Nick Wellnhofer 3dea98ef 2024-05-09T21:10:28 xmllint: Don't free DTD with --dropdtd Entity references point to entities in the DTD, so only unlink the DTD and don't destroy it.
Nick Wellnhofer 3ad7f816 2024-05-08T11:49:31 [CVE-2024-34459] Fix buffer overread with `xmllint --htmlout` Add a missing bounds check. Fixes #720.
Nick Wellnhofer c83147bf 2024-05-08T03:04:15 xmllint: Fix --pedantic option Regressed in 74c84a8c.
Nick Wellnhofer 3665d667 2024-05-07T16:53:43 xmllint: Clean up option handling Remove unnecessary globals and make some local. Remove unnecessary calls to xmlTextReaderSetParserProp. Remove unused "oldout" code. Fix skipArgs.
Nick Wellnhofer f8ff4d86 2024-05-07T15:23:03 xmllint: Rework parsing Merge a few code paths, making options like --valid or --htmlout work with some other options. Improve error handling.
Nick Wellnhofer 3afaff7e 2024-05-06T11:16:01 xmllint: Check for NULL input in xmlHTMLValidityError `ctxt->input` can be NULL after commit 61b4c42f.
Nick Wellnhofer ef6e6012 2024-05-06T01:13:49 xmllint: Fix parsing of maxmem option Fix corner cases like 'xmllint --encode --maxmem 123'. Also fixes --path without LIBXML_VALID_ENABLED.
Nick Wellnhofer 907a5a48 2024-05-06T02:34:01 xmllint: Fix memory leak in walkDoc
Nick Wellnhofer f4826c84 2024-05-06T00:33:19 xmllint: Add macro for error stream Prepare for fuzzing.
Nick Wellnhofer 826baf00 2024-05-06T00:29:07 xmllint: Fix --insert option Make sure that parent is an element when calling xmlValidGetValidElements.
Nick Wellnhofer 20a0de95 2024-05-06T00:08:54 xmllint: Fix --pushsmall option This is only a debugging aid but also useful when fuzzing.
Nick Wellnhofer a39e862b 2024-05-05T18:16:11 xmllint: Add explicit cast for -fsanitize=integer
Nick Wellnhofer 422ae462 2024-05-05T15:20:15 xmllint: Make some strings const
Nick Wellnhofer 1cdfece1 2024-04-28T18:33:40 memory: Remove memory debugging This is useless compared to sanitizers or valgrind and has a considerable performance impact if enabled accidentally.
Nick Wellnhofer 5e80f438 2024-04-28T17:33:19 tree: Deprecate xmlRegisterNodeDefault This rarely used feature should be phased out.
Nick Wellnhofer 88169bfd 2024-04-28T17:54:36 tree: Deprecate xmlSetCompressMode
Nick Wellnhofer 87bebd25 2024-02-12T16:45:16 xmllint: Return error code if XPath returns empty nodeset Return an error code as before but make it possible to distinguish from real errors. Fixes #690.
Nick Wellnhofer d7d300ba 2024-01-04T17:50:11 parser: Remove remnants of runtime debugging feature Apparently, this feature was remove long ago. Fixes #651.
Nick Wellnhofer 7e0bbbc1 2023-12-27T18:33:30 parser: New input API Provide a new set of functions to create xmlParserInputs. These can be used for the document entity or from external entity loaders. - Don't require xmlParserInputBuffer. - All functions take a base URI. - All functions take an encoding as string. - xmlNewInputURL also takes a public ID. - xmlNewInputMemory takes a size_t. - Optimization hints for memory buffers. Improve documentation. Only call xmlInitParser before allocating a new parser context. Call xmlCtxtUseOptions as early as possible.
Nick Wellnhofer 0a658c0f 2023-12-20T23:53:19 io: Don't use "-" to read from stdin To implement this feature on such a low level is a disaster waiting to happen. Remove these checks from the IO code and move them to xmllint. Note that the serialization API will still treat "-" as stdout.
Nick Wellnhofer f9f5c2d8 2023-12-18T21:44:06 xmllint: Don't use xmlGenericError
Nick Wellnhofer d6812f3a 2023-12-14T13:35:13 Fix compiler warnings with disabled modules
Nick Wellnhofer 699299ca 2023-09-20T18:54:39 globals: Stop including globals.h
Nick Wellnhofer 11a1839d 2023-09-20T17:54:48 globals: Move remaining globals back to correct header files This undoes a lot of damage.
Nick Wellnhofer 692a5c40 2023-09-20T13:51:26 xmllint: Don't set deprecated globals
Nick Wellnhofer bfd7d286 2023-08-29T21:16:34 xmllint: Fix more error messages
Nick Wellnhofer 373244bc 2023-08-29T21:05:32 xmllint: Fix error message when push parsing empty documents
Nick Wellnhofer ed3bd052 2023-08-20T20:48:10 parser: Allow to set maximum amplification factor
Nick Wellnhofer 305a75cc 2023-06-06T13:15:46 malloc-fail: Fix null-deref with xmllint --copy See #344. Fixes #552.
Nick Wellnhofer 886bf4e6 2023-04-30T15:35:47 Stop calling xmlMemoryDump This was used to check for memory leaks but could potentially create a .memdump file. These days, there are better ways to check for memory leaks.
Nick Wellnhofer db32b09d 2023-04-20T16:22:11 xmllint: Validate --maxmem integer option Fixes #520.
Nick Wellnhofer 64b76f81 2023-03-14T13:17:20 xmllint: Fix memory leak with --pattern --stream Fixes #499.
Nick Wellnhofer d7daf9fd 2023-03-14T13:02:36 xmllint: Fix use-after-free with --maxmem Fixes #498.
Nick Wellnhofer 60d457be 2022-12-08T03:45:37 libxml.h: Don't include stdio.h
Nick Wellnhofer dd3569ea 2022-12-08T02:43:17 Remove XMLDECL macro from .c files
Alex Richardson 4b959ee1 2022-12-01T13:23:09 Remove hacky heuristic from b2dc5675e94aa6b5557ba63f7d66b0f08dd17e4d Checking whether the context is close to the parent context by hardcoding 250 is not portable (I noticed tests were failing on Morello since the value is 288 there due to pointers being 128 bits). Instead we should ensure that the XML_VCTXT_USE_PCTXT flag is not set in cases where the user data is not actually a parser context (or ideally add a separate field but that would be an ABI break. From what I can see in the source, the XML_VCTXT_USE_PCTXT is only set if the userData field points to a valid context, and if this is not the case the flag should be cleared when changing userData rather than relying on the offset between the two. Looking at the history, I think d7cb33cf44aa688f24215c9cd398c1a26f0d25ff fixed most of the need for this workaround, but it looks like there are a few more locations that need updating; This commit changes two more places to set/clear/copy the XML_VCTXT_USE_PCTXT flag, so this heuristic should not be needed anymore. I've also drop two = NULL assignment in xmllint since this is not needed after a call to memset(). There was also an uninitialized vctxt.flags (and other fields) in `xmlShellValidate()`, which I've fixed by adding a memset() call.
Nick Wellnhofer 701beb4e 2022-11-22T15:37:49 xmllint: Include <io.h> on Windows
Nick Wellnhofer e85f9b98 2022-10-19T02:47:30 xmllint: Improve handling of empty XPath node sets Don't return an error if the result is an empty node set. Suppress the "XPath set is empty" message in quiet mode. Fixes #180.
Nick Wellnhofer 5bffa33a 2022-09-02T05:03:03 Stop including sys/types.h
Nick Wellnhofer 74c84a8c 2022-08-24T15:51:28 xmllint: Don't set deprecated globals Setting parser options should be enough.
Nick Wellnhofer ce93ee90 2022-08-24T05:24:13 xmllint: Stop calling xmlSAXDefaultVersion This should already be handled by setting XML_PARSE_SAX1.
Nick Wellnhofer 9a82b94a 2022-08-24T04:21:58 Introduce xmlNewSAXParserCtxt and htmlNewSAXParserCtxt Add API functions to create a parser context with a custom SAX handler without having to mess with ctxt->sax manually.
David Seifert 865520f0 2022-03-30T00:32:35 Respect `--sysconfdir` in source files * Prefix installations need to point to a non-root `etc` - Gentoo Prefix has been patching this for over 10 years: https://bugs.gentoo.org/317891 - MacPorts has to manually replace paths after patching: https://github.com/macports/macports-ports/blob/cc3bb736e906abe73b014da02a89ae2b70ef6295/textproc/libxml2/Portfile#L46
Nick Wellnhofer 776d15d3 2022-03-02T00:29:17 Don't check for standard C89 headers Don't check for - ctype.h - errno.h - float.h - limits.h - math.h - signal.h - stdarg.h - stdlib.h - string.h - time.h Stop including non-standard headers - malloc.h - strings.h
Nick Wellnhofer 551b558d 2022-03-01T17:15:12 Remove useless call to xmlRelaxNGCleanupTypes xmlRelaxNGCleanupTypes is called from xmlCleanupParser later.
Nick Wellnhofer 655cf3f4 2022-02-28T23:39:00 Always fopen files with "rb" We never want translation of newlines when reading files, so it should be safe to always specify "rb". On sane platforms, the "b" flag is simply ignored.
Nick Wellnhofer 3f8655db 2022-02-28T23:22:50 Remove __DJGPP__ checks Drop broken support for DJGPP.
Nick Wellnhofer 2489c1d0 2022-02-28T22:42:10 Remove useless __CYGWIN__ checks From what I can tell, some really early Cygwin versions from around 1998-2000 used to erroneously define _WIN32. This was eventually fixed, but these days, the `defined(_WIN32) && !defined(__CYGWIN__)` idiom is unnecessary. Now, we only check for __CYGWIN__ in xmlexports.h when deciding whether to use __declspec.
Nick Wellnhofer c41bc10d 2022-02-22T19:57:12 Fix unused variable warnings with disabled features
Nick Wellnhofer 10891111 2022-02-13T22:52:53 Redirect links to xmlsoft.org Documentation and releases are now available on gitlab.gnome.org.
Nick Wellnhofer 8be44aeb 2022-02-07T20:54:33 Fix "xmllint -" Short-lived regression from commit d12be00d.
Nick Wellnhofer d12be00d 2022-02-04T14:13:59 Don't ignore xmllint options after "-" There's no reason to ignore options after "-". This was probably confused with the "--" mechanism which xmllint doesn't implement. Fixes #290.
Nick Wellnhofer 247cfa27 2022-02-01T16:21:10 Fix parsing of xmllint --maxmem option Fixes #195.
Nick Wellnhofer 18d1f9d4 2022-02-01T15:56:21 Add more checks for malloc failures in xmllint.c Also fix a few of the existing checks. Fixes #197. Fixes #198.
Nick Wellnhofer eab86522 2022-01-31T14:45:09 Make xmllint return an error if arguments are missing Before, xmllint would only return an error code if the argument list was completely empty. Fixes #285.
Nick Wellnhofer 9f4cb84c 2022-01-16T18:39:51 Fix xmllint --maxmem xmlMemSetup must be called before initializing the parser, otherwise some data structures will be allocated with system malloc instead of our custom allocator. This throws off built-in memory debugging and sanitizers.
Nick Wellnhofer 72b3c067 2021-04-22T19:24:50 Fix dangling pointer with `xmllint --dropdtd` Reset doc->intSubset when dropping the DTD.
Nick Wellnhofer 1358d157 2021-04-21T13:23:27 Fix use-after-free with `xmllint --html --push` Call htmlCtxtUseOptions to make sure that names aren't stored in dictionaries. Note that this issue only affects xmllint using the HTML push parser. Fixes #230.
hhb 02bee4c4 2021-02-02T22:27:52 Add a flag to not output anything when xmllint succeeded
Nick Wellnhofer 2b4769a6 2020-08-16T22:02:04 Make "xmllint --push --recovery" work
Nick Wellnhofer 50f06b3e 2020-08-07T21:54:27 Fix out-of-bounds read with 'xmllint --htmlout' Make sure that truncated UTF-8 sequences don't cause an out-of-bounds array access. Thanks to @SuhwanSong and the Agency for Defense Development (ADD) for the report. Fixes #178.
Nick Wellnhofer 922bebcc 2020-07-15T14:20:42 Make 'xmllint --html --push -' read from stdin
Nick Wellnhofer 20c60886 2020-03-08T17:19:42 Fix typos Resolves #133.
Jared Yanovich 2a350ee9 2019-09-30T17:04:54 Large batch of typo fixes Closes #109.
Nick Wellnhofer f209e551 2019-06-25T11:45:16 Fix build without reader but with pattern Broken by commit dbc6b55b.
Nick Wellnhofer dbc6b55b 2019-05-16T21:06:56 Fix warnings when compiling without reader or push parser
Nick Wellnhofer c494a0ba 2019-03-12T14:45:04 Fix xmllint dump of XPath namespace nodes Starting with commit da35eeae, xmllint uses the xmlNodeDump API to dump XPath nodes. Make sure not to access node->doc which doesn't work with namespace nodes.
Nick Wellnhofer 19f0950d 2019-01-01T16:38:42 Fix -Wcast-function-type warnings (GCC 8) Use xmlGenericError instead of fprintf as error handler. It also prints to stderr by default.
Nick Wellnhofer da35eeae 2018-09-23T01:09:56 Add newlines to 'xmllint --xpath' output Separate nodes in a node-set with newlines and always add a terminating newline. This is a breaking change but the old behavior of dumping text nodes without separator was mostly useless. Also use buffered I/O when dumping node-sets.
Nick Wellnhofer cb5541c9 2017-11-13T17:08:38 Fix libz and liblzma detection If libz or liblzma are detected with pkg-config, AC_CHECK_HEADERS must not be run because the correct CPPFLAGS aren't set. It is actually not required have separate checks for LIBXML_ZLIB_ENABLED and HAVE_ZLIB_H. Only check for LIBXML_ZLIB_ENABLED and remove HAVE_ZLIB_H macro. Fixes bug 764657, bug 787041.
Nick Wellnhofer 86615e43 2017-11-09T17:47:47 Fix IO callback signatures
Nick Wellnhofer bee8f1e4 2017-10-09T00:19:06 Don't include winsock2.h in xmllint.c I'm not sure why xmllint.c did include winsock2.h at all. Stop including the header as both MinGW and MSVC builds don't seem to require it.
Nick Wellnhofer 45b0ebdc 2017-10-09T00:08:10 socklen_t is always int on Windows Define XML_SOCKLEN_T as `int` unconditionally in wsockcompat.h. Fixes compiler warnings and removes some duplicated code.
Nick Wellnhofer f435365b 2017-06-20T16:19:33 Send xmllint usage error to stderr Fixes bug 781459.
Nick Wellnhofer 030b1f7a 2017-06-06T15:53:42 Revert "Add an XML_PARSE_NOXXE flag to block all entities loading even local" This reverts commit 2304078555896cf1638c628f50326aeef6f0e0d0. The new flag doesn't work and the change even broke the XML_PARSE_NONET option.
Doran Moppert 23040785 2017-04-07T16:45:56 Add an XML_PARSE_NOXXE flag to block all entities loading even local For https://bugzilla.gnome.org/show_bug.cgi?id=772726 * include/libxml/parser.h: Add a new parser flag XML_PARSE_NOXXE * elfgcchack.h, xmlIO.h, xmlIO.c: associated loading routine * include/libxml/xmlerror.h: new error raised * xmllint.c: adds --noxxe flag to activate the option
David Kilzer 4472c3a5 2016-05-13T15:13:17 Fix some format string warnings with possible format string vulnerability For https://bugzilla.gnome.org/show_bug.cgi?id=761029 Decorate every method in libxml2 with the appropriate LIBXML_ATTR_FORMAT(fmt,args) macro and add some cleanups following the reports.
Hugh Davenport b8e0fa34 2016-05-04T10:55:49 Fix null pointer deref in docs with no root element From https://bugzilla.gnome.org/show_bug.cgi?id=758514
Patrick Monnerat 11e805d3 2015-04-17T17:02:59 xmllint: flush stdout before interactive shell input.
David Kilzer 783931fc 2016-03-02T12:48:51 Bug 721158: Missing ICU string when doing --version on xmllint <https://bugzilla.gnome.org/show_bug.cgi?id=721158> * xmllint.c: (showVersion): Add "ICU" to xmllint version string if libxml2 is built with ICU enabled.
Fabien Degomme b40c1940 2015-10-23T19:35:02 Fix a small error in xmllint --format description Obviously it operates on the output not the input
Sérgio Batista d9ea9132 2014-06-09T22:10:15 xmllint was not parsing the --c14n11 flag Cut and paste error, using the wrong variable