From 05fa1b703d7c40dcdadb39aedb4454f897b5f6ac Mon Sep 17 00:00:00 2001 From: Nick Fitzgerald Date: Thu, 2 Feb 2017 07:55:15 -0800 Subject: [PATCH 1/3] Expand example code for Symbol --- src/lib.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 61a236b..79cba6b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -68,13 +68,29 @@ impl Symbol /// ``` /// use cpp_demangle::Symbol; /// + /// // First, something easy :) + /// /// let mangled = b"_ZN5space3fooEibc"; /// - /// let sym = Symbol::new(mangled) + /// let sym = Symbol::new(&mangled[..]) /// .expect("Could not parse mangled symbol!"); /// /// let demangled = format!("{}", sym); /// assert_eq!(demangled, "int space::foo(bool, char)"); + /// + /// // Now let's try something a little more complicated! + /// + /// let mangled = + /// b"__Z28JS_GetPropertyDescriptorByIdP9JSContextN2JS6HandleIP8JSObjectEENS2_I4jsidEENS1_13MutableHandleINS1_18PropertyDescriptorEEE"; + /// + /// let sym = Symbol::new(&mangled[..]) + /// .expect("Could not parse mangled symbol!"); + /// + /// let demangled = format!("{}", sym); + /// assert_eq!( + /// demangled, + /// "JSContext* JS_GetPropertyDescriptorById(JS::Handle, JS::Handle, JS::MutableHandle)" + /// ); /// ``` pub fn new(raw: T) -> Result> { let mut substitutions = subs::SubstitutionTable::new(); From 3656f44ed97f1fef34c627ca0bdd5a5b8f588d11 Mon Sep 17 00:00:00 2001 From: Nick Fitzgerald Date: Thu, 2 Feb 2017 07:55:45 -0800 Subject: [PATCH 2/3] Run rustfmt --- src/error.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/error.rs b/src/error.rs index 87b3954..272cad5 100644 --- a/src/error.rs +++ b/src/error.rs @@ -23,7 +23,8 @@ impl fmt::Display for Error { Error::UnexpectedEnd => write!(f, "mangled symbol ends abruptly"), Error::UnexpectedText => write!(f, "mangled symbol is not well-formed"), Error::BadBackReference => { - write!(f, "back reference that is out-of-bounds of the substitution table") + write!(f, + "back reference that is out-of-bounds of the substitution table") } } } From d6706be5802d75fa52db550ffc394f7176c3fb23 Mon Sep 17 00:00:00 2001 From: Nick Fitzgerald Date: Thu, 2 Feb 2017 08:21:25 -0800 Subject: [PATCH 3/3] Add some interesting seeds for AFL from `nm`ing a SpiderMonkey JS shell --- .gitignore | 1 + in/spidermonkey-symbol-103 | 1 + in/spidermonkey-symbol-196 | 1 + in/spidermonkey-symbol-236 | 1 + in/spidermonkey-symbol-251 | 1 + in/spidermonkey-symbol-340 | 1 + in/spidermonkey-symbol-357 | 1 + in/spidermonkey-symbol-378 | 1 + in/spidermonkey-symbol-411 | 1 + in/spidermonkey-symbol-469 | 1 + in/spidermonkey-symbol-496 | 1 + in/spidermonkey-symbol-672 | 1 + in/spidermonkey-symbol-90 | 1 + 13 files changed, 13 insertions(+) create mode 100644 in/spidermonkey-symbol-103 create mode 100644 in/spidermonkey-symbol-196 create mode 100644 in/spidermonkey-symbol-236 create mode 100644 in/spidermonkey-symbol-251 create mode 100644 in/spidermonkey-symbol-340 create mode 100644 in/spidermonkey-symbol-357 create mode 100644 in/spidermonkey-symbol-378 create mode 100644 in/spidermonkey-symbol-411 create mode 100644 in/spidermonkey-symbol-469 create mode 100644 in/spidermonkey-symbol-496 create mode 100644 in/spidermonkey-symbol-672 create mode 100644 in/spidermonkey-symbol-90 diff --git a/.gitignore b/.gitignore index 5057d9e..22f28fe 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ target Cargo.lock *.rs.bk +out diff --git a/in/spidermonkey-symbol-103 b/in/spidermonkey-symbol-103 new file mode 100644 index 0000000..a7a4841 --- /dev/null +++ b/in/spidermonkey-symbol-103 @@ -0,0 +1 @@ +__Z11CallObjFuncIN2js9MapObject12IteratorKindEEbPFbP9JSContextT_N2JS6HandleIP8JSObjectEENS6_13MutableHandleINS6_5ValueEEEES4_S5_SA_SD_ diff --git a/in/spidermonkey-symbol-196 b/in/spidermonkey-symbol-196 new file mode 100644 index 0000000..b49c2f7 --- /dev/null +++ b/in/spidermonkey-symbol-196 @@ -0,0 +1 @@ +__Z13ConvertToBaseIPN2js21DebugEnvironmentProxyEEPN13PtrBaseGCTypeIT_E4typeEPS4_ diff --git a/in/spidermonkey-symbol-236 b/in/spidermonkey-symbol-236 new file mode 100644 index 0000000..0487e14 --- /dev/null +++ b/in/spidermonkey-symbol-236 @@ -0,0 +1 @@ +__Z14EmitSimdBinaryIN2js3jit18MSimdBinaryBitwise9OperationEEbRN12_GLOBAL__N_116FunctionCompilerENS0_4wasm7ValTypeET_ diff --git a/in/spidermonkey-symbol-251 b/in/spidermonkey-symbol-251 new file mode 100644 index 0000000..b13f96d --- /dev/null +++ b/in/spidermonkey-symbol-251 @@ -0,0 +1 @@ +__Z14JS_SetPropertyP9JSContextN2JS6HandleIP8JSObjectEEPKcNS2_INS1_5ValueEEE diff --git a/in/spidermonkey-symbol-340 b/in/spidermonkey-symbol-340 new file mode 100644 index 0000000..cd23beb --- /dev/null +++ b/in/spidermonkey-symbol-340 @@ -0,0 +1 @@ +__Z16DispatchToTracerIPN2js3jit7JitCodeEEvP8JSTracerPT_PKc diff --git a/in/spidermonkey-symbol-357 b/in/spidermonkey-symbol-357 new file mode 100644 index 0000000..5338040 --- /dev/null +++ b/in/spidermonkey-symbol-357 @@ -0,0 +1 @@ +__Z16JS_ExecuteRegExpP9JSContextN2JS6HandleIP8JSObjectEES5_PDsmPmbNS1_13MutableHandleINS1_5ValueEEE diff --git a/in/spidermonkey-symbol-378 b/in/spidermonkey-symbol-378 new file mode 100644 index 0000000..351e53d --- /dev/null +++ b/in/spidermonkey-symbol-378 @@ -0,0 +1 @@ +__Z16JS_ReportWarningP9JSContextPKcz diff --git a/in/spidermonkey-symbol-411 b/in/spidermonkey-symbol-411 new file mode 100644 index 0000000..bc8408c --- /dev/null +++ b/in/spidermonkey-symbol-411 @@ -0,0 +1 @@ +__Z17JS_DefinePropertyP9JSContextN2JS6HandleIP8JSObjectEEPKcijPFbS0_jPNS1_5ValueEESB_ diff --git a/in/spidermonkey-symbol-469 b/in/spidermonkey-symbol-469 new file mode 100644 index 0000000..56e5dc6 --- /dev/null +++ b/in/spidermonkey-symbol-469 @@ -0,0 +1 @@ +__Z18JS_GetPropertyByIdP9JSContextN2JS6HandleIP8JSObjectEENS2_I4jsidEENS1_13MutableHandleINS1_5ValueEEE diff --git a/in/spidermonkey-symbol-496 b/in/spidermonkey-symbol-496 new file mode 100644 index 0000000..4cc3cc1 --- /dev/null +++ b/in/spidermonkey-symbol-496 @@ -0,0 +1 @@ +__Z18PR_GetOpenFileInfoP10PRFileDescP10PRFileInfo diff --git a/in/spidermonkey-symbol-672 b/in/spidermonkey-symbol-672 new file mode 100644 index 0000000..8bc39b0 --- /dev/null +++ b/in/spidermonkey-symbol-672 @@ -0,0 +1 @@ +__Z22GetNonexistentPropertyP9JSContextPN2js12NativeObjectE4jsidRN2JS5ValueE12IsNameLookupNS1_17FakeMutableHandleIS6_EE diff --git a/in/spidermonkey-symbol-90 b/in/spidermonkey-symbol-90 new file mode 100644 index 0000000..1993dc2 --- /dev/null +++ b/in/spidermonkey-symbol-90 @@ -0,0 +1 @@ +__Z10DoCallbackIP8JSScriptET_PN2JS14CallbackTracerEPS2_PKc