This behavior should be disabled, and if necessary, a protection byte after the extension should be used instead. The check can be modified to supply the program with less memory than in the buffer, so then the caller can check the guard byte (memory after what was provided to the user) so it would not be modified by the DLL and as such, not modify the memory.
This would look like:
char buf[bufSize+1];
buf[0] = 0;
buf[bufSize+1] = 0;
rvExtension(buf,bufSize,extFunction);
if (buf[bufSize+1]!=0)
// Buffer overflow detected