[Issue 21116] New: onArrayCastError is horribly unsafe
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Wed Aug  5 02:10:31 UTC 2020
    
    
  
https://issues.dlang.org/show_bug.cgi?id=21116
          Issue ID: 21116
           Summary: onArrayCastError is horribly unsafe
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P1
         Component: druntime
          Assignee: nobody at puremagic.com
          Reporter: schveiguy at yahoo.com
If you cast an array incorrectly, you get a blank message, or an incomplete
message, or you may get junk.
That's because onArrayCastError (which is @trusted) uses a stack buffer for its
message, and then throws an assert error with the reference to that message!
Not only that, but it also incorrectly converts numbers into stack strings, and
then references those in an array after they are gone.
I think there are only 2 valid ways out -- 1: allocate the string in the static
data segment, or 2: allocate it on the C heap.
I'm not sure which one to do. Both have drawbacks. Obviously, we can't use the
GC as this is a core language feature. Using the C heap isn't great either, but
is a reasonable solution. Using a static data segment one has to do purity
acrobatics. And it may be really difficult to only allocate the segment if an
array cast occurs.
I'm leaning towards doing a C heap allocation.
--
    
    
More information about the Digitalmars-d-bugs
mailing list