Here is a memory leak/index crash.

in read_from_buffer() in comm.c there are the following statements using an
index into the inbuf array.

d->inbuf[i]

There are no checks to make sure that the reading does not go over the input
length (1024).

There are various for loops.. that do NOT check for looping outside the
limit.

In running the code under a memory debugger I discovered that certain
characters can cause the read_from_buffer to jump forward and I was
getting index values in the 25 thousand range.

By blocking the loops and preventing the index value from never going over
the input length, I have prevented any issues from this.

I will not post the read_from_buffer() that I have as it has things like
Ansi detection, MCCP, etc..

I leave it to you to make of this what you will.

Chris "Winston" Litchfield
Owner: The Mage's Lair Mud
www.mageslair.net


Reply via email to