xmllint.c


Log

Author Commit Date CI Message
Nick Wellnhofer 53a48468 2025-01-30T15:15:30 xmllint: Make --push report parse errors The push parser leaves documents in ctxt->myDoc even if they're invalid. Also fix documentation. Regressed with f8ff4d86.
Nick Wellnhofer 1082d813 2025-01-28T23:21:34 parser: Prepare to make decompression opt-in Add a new parser option XML_PARSE_UNZIP that enables decompression. xmlReadFile, xmlCtxtReadFile and xmlCreateURLParserCtxt always set this option currently, but downstream users should start to set the option if they really need it.
Nick Wellnhofer a78843be 2025-01-28T20:13:58 xmllint: Support compressed input from stdin Another regression related to reading from stdin. Making a "-" filename read from stdin was deeply baked into the core IO code but is inherently insecure. I really want to reenable this dangerous feature as sparingly as possible. This now enables compressed input when using the "Fd" API functions which wan't supported before. But XML_PARSE_NO_UNZIP will be inverted later. Allow compressed stdin in xmlReadFile to support xmlstarlet and older versions of xsltproc. So far, these are the only known command-line tools that rely on "-" meaning stdin.
Nick Wellnhofer e95c4b07 2025-01-22T10:06:39 fuzz: Also test xmllint --repeat option
Nick Wellnhofer dc6270d1 2025-01-22T09:38:43 xmllint: Fix UAF with --push --repeat Short-lived regression. Fixes #841.
Nick Wellnhofer 1c82bca6 2025-01-17T22:54:51 xmllint: Improve error reports from reader
Nick Wellnhofer 16286dea 2025-01-17T23:03:20 xmllint: Fix memory leak in parseAndPrintFile
Nick Wellnhofer 9cfc723c 2025-01-17T21:42:35 xmllint: Always reuse parser context Also move push parsing into parseXml which makes "--sax --push" work.
Nick Wellnhofer 255fd5f3 2025-01-17T16:52:06 xmllint: Store error stream in global state
Nick Wellnhofer e42ded42 2025-01-17T16:00:35 xmllint: Stop using global variables The only exception is "maxmem". The custom malloc functions don't support an extra context.
Nick Wellnhofer 00167cae 2025-01-17T18:50:55 xmllint: Report OOM errors to stderr For the validators, some work still has to be done, but for core features, xmllint should now report OOM errors reliably.
Nick Wellnhofer 67b738d9 2025-01-17T17:59:21 fuzz: Check whether xmllint reports malloc failures correctly This relies on xmllint's "maxmem" option.
Nick Wellnhofer bfe6af2e 2025-01-17T17:09:04 fuzz: Remove hacks to build lint fuzzer Don't include source file directly.
Nick Wellnhofer bf1d8b9c 2025-01-17T18:13:35 xmllint: Report malloc failures from parsing patterns
Nick Wellnhofer d39e5714 2025-01-17T13:12:36 xmllint: Fix memory leak in parseFile Short-lived regression.
Nick Wellnhofer 0f4d36e0 2025-01-17T13:04:35 xmllint: Fix memory leak in error case
Nick Wellnhofer 86401cc3 2025-01-07T19:01:57 xmllint: Make --shell ignore some other options When the shell should be launched with the --shell option, don't post-validate, stream or dump the document. Ignore the --repeat option.
Nick Wellnhofer c0c69cb8 2025-01-07T18:55:35 xmllint: Always reuse parser context Simplifies "repeat" logic.
Nick Wellnhofer a5be2cc3 2025-01-04T22:52:19 xmllint: Support --xpath --debug Dump compiled expression if --debug was supplied.
Nick Wellnhofer f22707f4 2024-12-30T23:21:56 xmllint: Use xmlXPathOrderDocElems for XPath queries
Nick Wellnhofer 169857ad 2024-12-13T15:12:18 xmllint: Check return value of htmlNewParserCtxt
Nick Wellnhofer 1dc5e50a 2024-11-21T23:22:40 catalog: Only use XML_SYSCONFDIR if catalogs are enabled
Nick Wellnhofer a5764b56 2024-11-21T22:18:36 build: Define XML_SYSCONFDIR in config.h Rename SYSCONFDIR macro to XML_SYSCONFDIR. Use AX_RECURSIVE_EVAL with Autotools. This is GPL v2 with Autoconf exception which shouldn't be a problem. Finally support meson.
Nick Wellnhofer a4c16a14 2024-09-27T23:49:02 xmllint: Improve --memory and --testIO options Support --memory and --testIO in SAX mode. Keep memory-mapped file across repetitions. Options `--sax --memory --noout --repeat` can now be used to benchmark the core parser without building a DOM tree or repeatedly reading files from disk.
Nick Wellnhofer 3ac214f0 2024-09-27T22:54:14 xmllint: Support --html --sax
Nick Wellnhofer d67833a3 2024-09-26T19:21:24 xmllint: Use proper type to store seconds since epoch Should avoid year 2038 problem. Fixes #801.
Nick Wellnhofer 8ad618d2 2024-08-28T22:03:30 doc: Document all xmllint options Remove --pushsmall. Fixes #785.
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.