Under SanityManager/debug control, pre-fill DDMWriter buffers with garbage to 
expose memory corruption errors
-------------------------------------------------------------------------------------------------------------

         Key: DERBY-865
         URL: http://issues.apache.org/jira/browse/DERBY-865
     Project: Derby
        Type: Improvement
  Components: Network Server  
    Versions: 10.1.1.0, 10.2.0.0    
    Reporter: Bryan Pendleton
    Priority: Minor


DDMWriter uses a byte array to manage a memory buffer of formatted, but not yet 
sent, network messsages.

The behavior of this byte array is that it automatically expands to accomodate 
the requests that are given to it, but does not shrink. When the byte array is 
first expanded to a certain size, Java provides 0x00 byte values for the new 
bytes automatically, but when the buffer is later re-used, the bytes have 
whatever value they previously had.

When a bug should exist in the code, such as the off-by-one bug described in 
DERBY-125, the bytes in the byte array may be used without being set. Analysis 
of DERBY-125 was complicated because the already-existing value in the buffer 
turned out to be 0x00, which is a very common value in DSS message buffers, and 
hence the bug was hidden for a long time because the value turned out to be 
correct, accidentally.

Exposing and diagnosing such bugs would be much easier if the buffer's contents 
were automatically set to some non-zero, unusual value, which would be less 
likely to be accidentally correct.

This should be as easy as just dropping a few lines of code into 
DDMWriter.ensureLength(), however, since this could have a significant 
performance impact, the code should be written carefully so that the 
performance is reasonable. One way to do this would be to make the code 
conditional, and only perform the memory pre-setting if the source tree has 
been specially built with the SanityManager enabled, or if debug flags are set 
to true, or some such configuration.


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to