Craig A. Berry wrote:
At 11:21 PM -0500 12/14/05, John E. Malmberg wrote:

The bug seems to be in *mp_do_fileify_dirspec.

        while (*cp1 != ':') *(cp2++) = *(cp1++);

With this value of esa, the while statement just runs away, and
will  eventually cause *cp2 to write over something unless either *cp1
>> or *cp2 cause an access violation.

*VMS\mp_do_fileify_dirspec\%LINE 104099\esa: "[0-9][0-9][0-9][0-9"

I don't know for sure that this is what caused the stack corruption.
I was seeing accvios until change #26358.

I do not think that the utime() code is responsible.

The input specification is being treated as a rooted file specification by an RMS parse flag. That is the only way it could take this code path that I can see.

I do not know what the real cause is until I trace it down from the beginning of the routine.

My suspicion though is that this bug has been there a while, but because the stack based buffers were used, it would usually find a ":" and terminate the loop before noticeable damage was done.

Notice that the while loop was not terminating on a trailing NULL if a ":" was not found.

And the input data string was on the command line to the dbgminiperl line.

This is where the debugger stopped on the access violation.

-John
[EMAIL PROTECTED]
Personal Opinion Only

Reply via email to