On 14 May 2015 at 16:51, Jeff Law <l...@redhat.com> wrote: > On 05/14/2015 07:36 AM, Iain Buclaw wrote: >> >> On 14 May 2015 at 14:58, Jeff Law <l...@redhat.com> wrote: >>> >>> On 05/13/2015 02:51 AM, Iain Buclaw wrote: >>>> >>>> >>>> If a symbol that has so far been valid abruptly ends then we will want >>>> to fail the process rather than silently succeed. >>>> >>>> --- >>>> libiberty/ChangeLog >>>> >>>> 2015-05-13 Iain Buclaw <ibuc...@gdcproject.org> >>>> >>>> * d-demangle.c (dlang_call_convention): Return NULL if have >>>> reached >>>> the >>>> end of the symbol, but expected more. >>>> (dlang_attributes): Likewise. >>>> (dlang_function_type): Likewise. >>>> (dlang_type): Likewise. >>>> (dlang_identifier): Likewise. >>>> (dlang_value): Likewise. >>> >>> >>> I spot checked various callers of these functions that not return NULL >>> and >>> they looked reasonable. Though I was a bit concerned about the callers of >>> dlang_type, dlang_value and dlang_identifier. >>> >>> In those cases we'll often still do the string_append, string_setlength >>> and >>> other calls in the caller of dlang_{value,type,identifier}. I'm assuming >>> that's safe (the error still appears to be bubbling up properly). >>> >> >> The string routines should be safe for that (appending a string with a >> zero length does nothing, for instance). >> >>> If you can confirm that we're OK in those cases, then this is OK for the >>> trunk. >>> >> >> I can start fuzzing mangle strings to test that failures actually fail >> gracefully. There's already a fuzzer that exists for C++, I think the >> only change that would be required for D is exchanging "_Z" for "_D" >> and calling cplus_demangle with DMGL_DLANG. > > Your call whether to fuzz before or after committing the changes. > > jeff
Iant commited in the changes first time around. I don't have write after approval access in GCC just yet, probably should go about getting that sorted out if this is to become a regular thing. I dealt with copyright assignments back in September. Iain.