- Jun 15, 2017
-
-
Ivan Gagis authored
-
Ivan Gagis authored
-
Ivan Gagis authored
-
- Apr 04, 2017
-
-
Arseny Kapoulkine authored
Integer sanitizer is flagging unsigned integer overflow in several functions in pugixml; unsigned integer overflow is well defined but it may not necessarily be intended. Apart from hash functions, both string_to_integer and integer_to_string use unsigned overflow - string_to_integer uses it to perform two-complement negation so that the bulk of the operation can run using unsigned integers. This makes it possible to simplify overflow checking. Similarly integer_to_string negates the number before generating a decimal representation, but negating is impossible without unsigned overflow or special-casing certain integer limits. For now just silence the integer overflow using a special attribute; also move unsigned overflow into string_to_integer from get_value_* so that we have fewer functions marked with the attribute. Fixes #133.
-
Arseny Kapoulkine authored
Now the only thing fuzz_setup.sh does is installing new clang; if system clang supports -fsanitize-coverage then fuzz_setup.sh is not required.
-
Arseny Kapoulkine authored
The script only worked if clang folder was already created.
-
- Mar 22, 2017
-
-
Arseny Kapoulkine authored
-
Arseny Kapoulkine authored
This reverts commit 79109a85. This warning does not happen on gcc-4.8.4; the workaround introduces an unsigned integer overflow which results in a runtime error when compiled with integer sanitizer.
-
Arseny Kapoulkine authored
This triggers a runtime error under integer sanitizer
-
- Mar 21, 2017
-
-
Arseny Kapoulkine authored
This was triggering an buffer read overflow with asan.
-
Arseny Kapoulkine authored
-
- Mar 06, 2017
-
-
Arseny Kapoulkine authored
Silence g++ 7.0.1 -Wimplicit-fallthrough warnings
-
- Mar 05, 2017
-
-
Stephan Beyer authored
This is accomplished by putting a // fallthrough comment at the right place. This seems to be more portable than an attribute-based solution like [[fallthrough]] or __attribute__((fallthrough)).
-
- Mar 03, 2017
-
-
Arseny Kapoulkine authored
Instead of a separate implementation for find/insert, use just one that can do both. This reduces the code size and simplifies code coverage; the resulting code is close to what we had in terms of performance and since hash table is a fall back should not affect any real workloads.
-
- Feb 11, 2017
-
-
Arseny Kapoulkine authored
Improve fuzzing support
-
Arseny Kapoulkine authored
Make the file executable, fix Windows newlines and fix clang setup.
-
Arseny Kapoulkine authored
Hopefully this will allow for better fuzzing coverage
-
- Feb 09, 2017
-
-
Arseny Kapoulkine authored
Only fuzz the parser for now.
-
Arseny Kapoulkine authored
This downloads a clang build that has support for instrumentation, and also downloads and compiles libFuzzer.a.
-
Arseny Kapoulkine authored
This allows us to have faster fuzz cycles since the fuzzer is in-process.
-
Arseny Kapoulkine authored
This should make the test fail on a 32-bit target.
-
Arseny Kapoulkine authored
-
Arseny Kapoulkine authored
-
Arseny Kapoulkine authored
This will make sure we don't forget to implement offset_debug for new node types if they ever happen (really it's mostly for consistency).
-
- Feb 08, 2017
-
-
Arseny Kapoulkine authored
This should make the test fail on a 32-bit target.
-
Arseny Kapoulkine authored
-
Arseny Kapoulkine authored
-
Arseny Kapoulkine authored
This will make sure we don't forget to implement offset_debug for new node types if they ever happen (really it's mostly for consistency).
-
- Feb 07, 2017
-
-
Arseny Kapoulkine authored
Instead of a complicated partitioning scheme that tries to maintain the equal area in the middle, use a scheme where we keep the equal area in the left part of the array and then move it to the middle. Since generally sorted arrays don't contain many duplicates this extra copy is not too expensive, and it significantly simplifies the logic and maintains good complexity for sorting arrays with many equal elements nonetheless (unlike Hoare partitioning). Instead of a median of 9 just use a median of 3 - it performs pretty much identically on some internal performance tests, despite having a bit more comparisons in some cases. Finally, change the insertion sort threshold to 16 elements since that appears to have slightly better performance.
-
Arseny Kapoulkine authored
The previous implementation opted for doing two comparisons per element in the sorted case in order to remove one iterator bounds check per moved element when we actually need to copy. In our case however the comparator is pretty expensive (except for remove_duplicates which is fast as it is) so an extra object comparison hurts much more than an iterator comparison saves. This makes sorting by document order up to 3% faster for random sequences.
-
- Feb 06, 2017
-
-
Arseny Kapoulkine authored
Instead of delegating to a method that just forwards the call to xpath_query call the relevant method directly.
-
Arseny Kapoulkine authored
It adds one stack frame to string query evaluation and does not really simplify the code.
-
Arseny Kapoulkine authored
XPath: Remove exceptional control flow
-
Arseny Kapoulkine authored
Cover empty node case - no XPath query can result in that but it's possible to create a node set with empty nodes manually.
-
- Feb 04, 2017
-
-
Arseny Kapoulkine authored
Instead of having two checks for out-of-memory when exceptions are enabled, do just one and decide what to do based on whether we can throw.
-
- Feb 03, 2017
-
-
Arseny Kapoulkine authored
Instead of relying on a specific string in the parse result, use allocator error state to report the error and then convert it to a string if necessary. We currently have to manually trigger the OOM error in two places because we use global allocator in rare cases; we don't really need to do this so this will be cleaned up later.
-
- Feb 02, 2017
-
-
Arseny Kapoulkine authored
-
Arseny Kapoulkine authored
-
Arseny Kapoulkine authored
Add tests for PI erroring exactly at the buffer boundary with non-zero-terminated buffers (so we have to clear the last character which changes the parsing flow slightly) and a test that makes sure parse_embed_pcdata works properly with XML fragments where PCDATA can be at the root level but can't be embedded into the document node.
-
Arseny Kapoulkine authored
The code works fine regardless of the *j->name check, and omitting this makes the code more symmetric between the "count" and "write" stage; additionally this improves coverage - due to how strcpy_insitu works it's not really possible to get an empty non-NULL name in the node.
-