1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2024-12-25 23:21:26 +03:00
Commit Graph

59 Commits

Author SHA1 Message Date
Nick Wellnhofer
4467b89143 Add missing argument checks for new API functions 2024-06-12 13:57:20 +02:00
Nick Wellnhofer
e75e878e02 doc: Update and fix documentation 2024-05-20 14:23:39 +02:00
Nick Wellnhofer
a846719b9c pattern: Fix memory leak xmlCompileStepPattern 2024-05-13 12:50:08 +02:00
Nick Wellnhofer
ecb4c9fb28 misc: Improve error handling
Remove calls to generic error handler or use stderr for

- legacy deprecation warnings
- nanohttp, nanoftp in standalone mode
- memory debug messages

Use xmlRaiseMemoryError.

Remove TODO macro.

Don't raise errors in xmlmodule.c.
2023-12-21 15:02:24 +01:00
Nick Wellnhofer
e1560990ec pattern: Report malloc failures
Fix places where malloc failures aren't reported.

Introduce a new API function xmlPatternCompileSafe that returns a
separate error code if a memory allocation fails.
2023-12-11 22:05:47 +01:00
Nick Wellnhofer
9b5cce7a71 include: Remove more unnecessary includes 2023-09-21 01:50:53 +02:00
Nick Wellnhofer
4e1c13ebfd debug: Remove debugging code
This is barely useful these days and only clutters the code base.
2023-09-19 17:35:09 +02:00
Nick Wellnhofer
7569328138 malloc-fail: Fix memory leak in xmlCompileAttributeTest
Found by OSS-Fuzz, see #344.
2023-07-21 14:50:30 +02:00
Nick Wellnhofer
a509694c17 pattern: Merge identical branches
Fixes #479.
2023-02-21 15:46:06 +01:00
Nick Wellnhofer
ad338ca737 Remove explicit integer casts
Remove explicit integer casts as final operation

- in assignments
- when passing arguments
- when returning values

Remove casts

- to the same type
- from certain range-bound values

The main motivation is that these explicit casts don't change the result
of operations and only render UBSan's implicit-conversion checks
useless. Removing these casts allows UBSan to detect cases where
truncation or sign-changes occur unexpectedly.

Document some explicit casts as truncating and add a few missing ones.
2022-09-01 02:33:57 +02:00
Nick Wellnhofer
4a8c71eb7c Remove DOCBparser
This code has been broken and deprecated since version 2.6.0, released
in 2003. Because of a bug in commit 961b535c, DOCBparser.c was never
compiled since 2012. I couldn't find a Debian package using any of its
symbols, so it seems safe to remove this module.
2022-03-04 22:56:21 +01:00
Nick Wellnhofer
346c3a930c Remove elfgcchack.h
The same optimization can be enabled with -fno-semantic-interposition
since GCC 5. clang has always used this option by default.
2022-02-20 21:49:04 +01:00
Jared Yanovich
2a350ee9b4 Large batch of typo fixes
Closes #109.
2019-09-30 18:04:38 +02:00
Nick Wellnhofer
346febc6ab Fix call stack overflow in xmlFreePattern
Since xmlFreePattern tried to free the next pattern recursively, its
behavior is identical to xmlFreePatternList. Make it call
xmlFreePatternList to avoid call stack overflows.

Found by OSS-Fuzz.
2019-04-25 11:37:37 +02:00
Nick Wellnhofer
1f131f1133 Fix memory leak in pattern error path
Found with libFuzzer and ASan.
2017-05-27 15:59:18 +02:00
Daniel Veillard
f8e3db0445 Big space and tab cleanup
Remove all space before tabs and space and tabs at end of lines.
2012-09-11 13:26:36 +08:00
Patrick R. Gansterer
204f1f144c undef ERROR if already defined 2012-05-10 20:24:00 +08:00
Nico Weber
cedf84d35a Fix -Wempty-body warning from clang
clang recently grew a warning on `for (...);`. This patch
fixes all two instances of this pattern in libxml. The changes
don't modify the code semantic.
2012-03-05 16:36:59 +08:00
William M. Brack
f8477005ab fix problem with xmlStreamPop when pattern includes a "." element (see
* pattern.c: fix problem with xmlStreamPop when pattern includes a "." element (see discussion on libxslt list)

svn path=/trunk/; revision=3752
2008-07-17 05:29:16 +00:00
Rob Richards
3108ba92b7 fix crash from double free of name for bug #501760
* pattern.c: fix crash from double free of name for bug #501760

svn path=/trunk/; revision=3667
2007-12-06 10:08:52 +00:00
Kasimier T. Buchcik
6ed2eb47fc Applied patch from Rob Richards, fixing a potential memory leak in
* xpath.c: Applied patch from Rob Richards, fixing a potential
  memory leak in xmlXPathTryStreamCompile(), when a list of
  namespaces was assigned to the XPath compilation context;
  here a new namespace list was created and passed to
  xmlPatterncompile(); but this list was not freed afterwards.
  Additionally we avoid now in xmlXPathTryStreamCompile() to
  compile the expression, if it has a colon - indicating
  prefixed name tests - and no namespace list was given. The
  streaming XPath mechanism needs a namespace list at
  compilation time (unlike normal XPath, where we can bind
  namespace names to prefixes at execution time).
* pattern.c: Enhanced to use a string dict for local-names,
  ns-prefixes and and namespace-names.
  Fixed xmlStreamPushInternal() not to use string-pointer
  comparison if a dict is available; this won't work, since
  one does not know it the given strings originate from the
  same dict - and they normally don't do, since e.g.
  namespaces are hold on xmlNs->href. I think this would be
  worth an investigation: if we can add a @doc field to xmlNs
  and put the @href in to a additionan namespace dict hold
  in xmlDoc. Daniel will surely not like this idea :-) But
  evaluation of tons of elements/attributes in namespaces
  with xmlStrEqual() isn't the way we should go forever.
2006-05-16 15:13:37 +00:00
Daniel Veillard
30e7607b7a a bunch of small cleanups based on coverity reports. Daniel
* HTMLparser.c parser.c parserInternals.c pattern.c uri.c: a bunch
  of small cleanups based on coverity reports.
Daniel
2006-03-09 14:13:55 +00:00
Daniel Veillard
6795260135 upated the news regenerated the docs, preparing for release of 2.6.23
* NEWS configure.in libxml.spec.in testapi.c doc/*: upated the news
  regenerated the docs, preparing for release of 2.6.23
* pattern.c xmlschemas.c: fixed some comments
Daniel
2006-01-05 15:29:44 +00:00
Kasimier T. Buchcik
bb80f544d4 Another fix to handle "foo//.": "foo" was not included in the resulting
* pattern.c: Another fix to handle "foo//.": "foo" was not
  included in the resulting node-set.
2006-01-05 14:44:45 +00:00
Kasimier T. Buchcik
97258713d3 Fixed bug #322928, reported by Erich Schubert: The bug was in pattern.c,
* pattern.c xpath.c include/libxml/pattern.h:
  Fixed bug #322928, reported by Erich Schubert: The bug was
  in pattern.c, which is used for a tiny subset of xpath
  expression which can be evaluated in an optimized way.
  The doc-node was never considered when evaluating "//"
  expressions. Additionally, we fixed resolution
  to nodes of any type in pattern.c; i.e. a "//." didn't work
  yet, as it did select only element-nodes. Due to this
  issue the pushing of nodes in xpath.c needed to be adjusted
  as well.
2006-01-05 12:30:43 +00:00
Kasimier T. Buchcik
940ab0c676 Fixed a potential memory leak in xmlSchemaCheckCSelectorXPath() when an
* xmlschemas.c: Fixed a potential memory leak in
  xmlSchemaCheckCSelectorXPath() when an internal error occurs.
  Fixed setting of ctxt->err to the given error code in
  the parsing error functions.
* pattern.c: Added internal xmlCompileIDCXPathPath() as a
  starting point for IDC XPath compilation; this and some other
  tiny changes fixes issues regarding whitespace in the
  expressions and IDC selector/field relevant restrictions of
  the subset of XPath. Fixed a missing blocking of attributes
  in xmlStreamPushInternal().
2005-10-19 17:00:53 +00:00
Kasimier T. Buchcik
65c2f1d78a Silenced intel compiler warnings (reported by Kjartan Maraas, bug
* tree.c pattern.c: Silenced intel compiler warnings (reported
  by Kjartan Maraas, bug #318517).
* xmlschemas.c: The above changes in pattern.c revealed an
  inconsistency wrt IDCs: we now _only_ pop XPath states, if
  we really pushed them beforehand; this was previously not
  checked for the case when we discover an element node to be
  invalid wrt the content model.
  Fixed segfault in xmlSchemaGetEffectiveValueConstraint().
2005-10-17 12:39:58 +00:00
Kasimier T. Buchcik
2782027083 Fixed some identity-constraint issues: Restructured IDC node-tables
* xmlschemas.c: Fixed some identity-constraint issues:
  Restructured IDC node-tables
  Allowed IDCs to resolve also to nodes of complex type with
  simple content.
  Added check for keyrefs with references to keyrefs.
  IDC target-nodes were interferring with IDC node-tables,
  since they used one list of entries only. I separated this
  one big list into 3 lists: 1 for IDC node-table entries,
  1 for _duplicates_ of IDC node-table entries and 1 for
  IDC target-nodes. More code, but cleaner and it works at last.
  Keyrefs will fail to resolve to duplicate key/unique entries.
  I thought this was already working this way, but it didn't.
  The wording of the definition for [node table] in the spec
  can lead to a scenario, where keyrefs resolve perfectly, even
  if the relevant key-sequences of the referenced key/unique have
  duplicates in the subtree. Currently only Saxon 8.5.1 is
  dissallowing resolution to duplicate entries correctly - we
  will follow Saxon here.
  Removed some intel compiler warnings (reported by
  Kjartan Maraas, bug #318517).
* pattern.c: Fixed an IDC-XPath problem when resolving to
  attributes.
2005-10-14 14:33:48 +00:00
Daniel Veillard
f03a8cdacd fixing yet another pattern induced XPath bug #314282 reverted back last
* pattern.c xpath.c include/libxml/pattern.h: fixing yet another
  pattern induced XPath bug #314282
* relaxng.c: reverted back last change it was seriously broken
Daniel
2005-09-04 12:01:57 +00:00
Daniel Veillard
f5812c3179 fixes a portability problem raised by C370 on Z/OS Daniel
* pattern.c: fixes a portability problem raised by C370 on Z/OS
Daniel
2005-09-03 13:43:20 +00:00
Daniel Veillard
ed6c54971f changed xmlPatterncompile signature to pass an int and not an enum since
* pattern.c include/libxml/pattern.h: changed xmlPatterncompile
  signature to pass an int and not an enum since it can generate
  ABI compat troubles.
* include/libxml/schematron.h schematron.c: adding the new
  schematron code, work in progress lots to be left and needing
  testing
* include/libxml/xmlversion.h.in include/libxml/xmlwin32version.h.in
  Makefile.am configure.in: integration of schematron into the
  build
* xpath.c include/libxml/xpath.h: adding flags to control compilation
  options right now just XML_XPATH_CHECKNS.
Daniel
2005-07-23 15:00:22 +00:00
Kasimier T. Buchcik
627e9a934b Changed xmlCompileStepPattern() and xmlCompileAttributeTest() to handle
* pattern.c: Changed xmlCompileStepPattern() and
  xmlCompileAttributeTest() to handle the "xml" prefix without
  caring if the XML namespace was supplied by the user.
2005-07-22 22:37:35 +00:00
Kasimier T. Buchcik
8798b735a6 Fixed evaluation of attributes. Actually only attribute at the first level
* pattern.c: Fixed evaluation of attributes. Actually only
  attribute at the first level were evaluated (e.g. "@attr");
  expression like "foo/@attr" always failed.
2005-07-08 19:58:37 +00:00
William M. Brack
537f1173c3 adjusted last change to xmlCompilePathPattern, fixed one compilation
* pattern.c: adjusted last change to xmlCompilePathPattern,
  fixed one compilation warning
2005-06-14 22:02:59 +00:00
Kasimier T. Buchcik
9ca11bfc3d Some changes/fixes to the streaming evaluation. A bit of support for
* pattern.c: Some changes/fixes to the streaming evaluation.
* xmlschemas.c: A bit of support for parsing the schema for
  schema. Fixed attribute derivation when the use is
  "prohibited" and was "optional". Fixed an attribute construction
  bug, a left-over from the time, where <complexContent>,
  <extension>, etc. where created as structs.
2005-06-14 19:24:47 +00:00
William M. Brack
ea152c05b3 Further enhancement for XPath streaming, consolidated with schemas usage
* pattern.c, xpath.c, include/libxml/pattern.h: Further
  enhancement for XPath streaming, consolidated with
  schemas usage of pattern.c.  Added a new enum
  xmlPatternFlags.
* doc/*, testapi.c, elfgcchack.h: updated to reflect new
  enum.
* test/XPath/tests/mixedpat, test/XPath/docs/mixed,
  result/XPath/mixedpat: added regression test for problems
  reported in bug306348
2005-06-09 18:12:28 +00:00
William M. Brack
fbb619f476 Enhanced xmlXPathRunStreamEval, fixed handling of depth/level for cases
* xpath.c, pattern.c: Enhanced xmlXPathRunStreamEval, fixed
  handling of depth/level for cases like union operator
  (bug #306348 reported by Bob Stayton).  Also enhanced
  several comments throughout pattern.c.
* doc/apibuild.py: fixed problem in handling of
  'signed' declaration.  Rebuilt the docs.
2005-06-06 13:49:18 +00:00
Kasimier T. Buchcik
22678566b8 Changed the XPath "." to resolve only on the first level for XML Schema
* pattern.c: Changed the XPath "." to resolve only on the first
  level for XML Schema IDCs. This should not affect pattern-like
  resolution on every level.
2005-05-09 16:01:05 +00:00
Daniel Veillard
5d4644ef6e revamped the elfgcchack.h format to cope with gcc4 change of aliasing
* doc/apibuild.py doc/elfgcchack.xsl: revamped the elfgcchack.h
  format to cope with gcc4 change of aliasing allowed scopes, had
  to add extra informations to doc/libxml2-api.xml to separate
  the header from the c module source.
* *.c: updated all c library files to add a #define bottom_xxx
  and reimport elfgcchack.h thereafter, and a bit of cleanups.
* doc//* testapi.c: regenerated when rebuilding the API
Daniel
2005-04-01 13:11:58 +00:00
Daniel Veillard
0e460da346 another patch from Brent Hendricks to add new handlers with the various
* python/generator.py python/libxml.py: another patch from Brent
  Hendricks to add new handlers with the various validity contexts
* python/tests/Makefile.am python/tests/validDTD.py
  python/tests/validRNG.py python/tests/validSchemas.py: also
  added the regression tests he provided
Daniel
2005-03-30 22:47:10 +00:00
Kasimier T. Buchcik
285ebabb07 Enabled IDC parsing and validation. Added xmlSchemaCopyValue to the API;
* xmlschemas.c: Enabled IDC parsing and validation.
* xmlschemastypes.c include/libxml/xmlschemastypes.h:
  Added xmlSchemaCopyValue to the API; this was done due to
  validation of default attributes against IDCs: since IDC keys
  consume the precomputed value, one needs a copy.
* pattern.c: Enabled IDC support; this is currently done
  via calling xmlPatterncompile with a flag arg of 1.
2005-03-04 18:04:59 +00:00
Daniel Veillard
fa1f77f2f0 fixed remaining known bugs in the XPath streaming, and switched XPath to
* pattern.c xpath.c: fixed remaining known bugs in the XPath streaming,
  and switched XPath to use it by default when possible
Daniel
2005-02-21 10:44:36 +00:00
Kasimier T. Buchcik
2a0fdd9101 Some experimental addition for parsing of expressions and streamable
* pattern.c pattern.h: Some experimental addition for parsing
  of expressions and streamable validation.
  Added xmlStreamPushAttr to the API.
2005-02-17 21:34:45 +00:00
Daniel Veillard
56de87ee0d fix the comment to describe the real return values lot of work on the
* encoding.c: fix the comment to describe the real return values
* pattern.c xpath.c include/libxml/pattern.h: lot of work on
  the patterns, pluggin in the XPath default evaluation, but
  disabled right now because it's not yet good enough for XSLT.
  pattern.h streaming API are likely to be changed to handle
  relative and absolute paths in the same expression.
Daniel
2005-02-16 00:22:29 +00:00
Daniel Veillard
2b2e02d6bb fixed implementation for | added a specific regression test Daniel
* pattern.c xmllint.c: fixed implementation for |
* test/pattern/conj.* result/pattern/conj: added a specific regression
  test
Daniel
2005-02-05 23:20:22 +00:00
Daniel Veillard
f1f08cf8dc first implementation for | support Daniel
* pattern.c: first implementation for | support
Daniel
2005-02-05 16:35:04 +00:00
Daniel Veillard
0996a162c9 fixed the namespaces support fixed xmlGetNodePath when namespaces are used
* pattern.c: fixed the namespaces support
* tree.c: fixed xmlGetNodePath when namespaces are used
* result/pattern/multiple result/pattern/namespaces
  test/pattern/multiple.* test/pattern/namespaces.*: added
  more regression tests
Daniel
2005-02-05 14:00:10 +00:00
Daniel Veillard
d4301aba26 use the walker to test the patterns instead of the normal reader bug fixes
* Makefile.am: use the walker to test the patterns instead of
  the normal reader
* pattern.c xmllint.c: bug fixes in the train including fixing the
  stupid build break.
Daniel
2005-02-03 22:24:10 +00:00
Daniel Veillard
364fbed5af Fixed debug in pattern.c, Daniel 2005-02-03 09:08:06 +00:00
Daniel Veillard
9740d1d425 more bug fixes for the XPath streaming code. Daniel
* pattern.c: more bug fixes for the XPath streaming code.
Daniel
2005-02-01 16:21:43 +00:00