What is the difference between Buffer Overflow and Buffer Overrun?
I would say that Buffer over flow is when you attempt to write beyond the end of a buffer, but you have a check which prevents it. buffer over run is when you actually write beyond the end of the buffer. The first is fail fast, the second is harder to detect.
You cannot overrun a buffer in java as it always has bounds checking and thus produces a BufferOverflowException.
What is the difference between Buffer Overrun and Stack Overflow?
They have nothing to do with one another.