Comments (7)
This will be released in 0.3.2.
from dxml.
@jmdavis [0x3c,0x3f]
still crashes!
from dxml.
@jmdavis [0x3c,0x3f] still crashes!
Drat. I read through the issue too quickly and missed that there were two failing test cases. I'll fix it during the hackathon then.
from dxml.
Okay. That second case should also be fixed now.
from dxml.
That second case should also be fixed now.
Starting the fuzzer again! ;-)
from dxml.
New crash:
[0x3c,0x4d,0x3e,0x9,0x3b,0x3c,0x2f]
from dxml.
Fuzz target that should work with 1.8.0
// RUN: ~/ldc/ldc2-1.8.0-osx-x86_64/bin/ldc2 -g -fsanitize=fuzzer fuzz_dxml.d dxml/*.d
import std.typecons : Flag, Yes;
mixin template DefineTestOneInput(alias FuzzTarget, Flag!"initializeDRuntime" initializeDRuntime = Yes.initializeDRuntime)
if (is(typeof(&FuzzTarget) == int function(in ubyte[])))
{
static if (initializeDRuntime)
{
// Do druntime initialization and de-initialization through module ctor/dtor.
// Choose a low priority = 10, to hopefully init before (de-init after) standard D module ctors (dtors).
__gshared static bool runtimeInitialized = false;
pragma(crt_constructor, 10)
void initDRuntime()
{
import core.runtime : rt_init;
rt_init();
runtimeInitialized = true;
}
pragma(crt_destructor, 10)
void terminateDRuntime()
{
import core.runtime : rt_term;
if (runtimeInitialized)
runtimeInitialized = !rt_term();
}
}
// libFuzzer's user entry point
pragma(mangle, "LLVMFuzzerTestOneInput") // Work around https://issues.dlang.org/show_bug.cgi?id=12575
extern (C) int LLVMFuzzerTestOneInput(const(ubyte*) data, size_t size)
{
try
{
// Call the user's function
return FuzzTarget(data[0 .. size]);
}
catch (Throwable t)
{
_d_print_throwable(t);
}
// We only reach here when an exception was caught.
assert(0);
}
pragma(mangle, "_d_print_throwable") // Work around https://issues.dlang.org/show_bug.cgi?id=12575
extern (C) void _d_print_throwable(Throwable t);
}
mixin DefineTestOneInput!fuzzMe;
int fuzzMe(in ubyte[] data)
{
import dxml.parser;
try
{
int sum;
auto range = parseXML(cast(char[])data);
foreach (elem; range) {
// Do something unpredictable to actually test the parser
sum += cast(int) elem.type;
}
return sum > 1;
}
catch (XMLParsingException)
{
return 0;
}
}
from dxml.
Related Issues (20)
- Utilize Phobos skipOver HOT 1
- Can't build => can't use HOT 7
- Convienience methods suggestions for DOM parser HOT 4
- dom: Entities consisting of whitespace do not capture their contents HOT 2
- Assert descriptions HOT 2
- Parsing xml without loading the whole file into RAM HOT 5
- parser.d(1925): [1:1]: Expected < HOT 2
- How to get position of end tag? HOT 1
- Can't get skipToPath work on real data HOT 1
- stripIndent removes text
- stripIndent removes any run of the "right" number of whitespaces HOT 2
- need a shorter way to reach attributes of Entities. HOT 1
- decodeXML does not compile when given a range of type char[] HOT 2
- parser.d(2726): [1:1273]: There can only be whitespace between an end tag's name and the > HOT 4
- Parser fails to operate on UTF8 Files containing a BOM HOT 1
- Compiling with GDC-10.3.0, invalid UTF characters
- Characters legal in XML 1.1 are not accepted
- Change writer.output to finish() HOT 3
- namespace support HOT 10
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dxml.