--- sourceforge.net/trunk/rdesktop/channels.c 2003/08/01 17:01:58 438 +++ sourceforge.net/trunk/rdesktop/channels.c 2003/08/18 04:52:51 446 @@ -156,13 +156,13 @@ in->p = in->data; } - thislength = s->end - s->p; + thislength = MIN(s->end - s->p, in->data + in->size - in->p); memcpy(in->p, s->p, thislength); - s->p += thislength; - s->end += thislength; + in->p += thislength; if (flags & CHANNEL_FLAG_LAST) { + in->end = in->p; in->p = in->data; channel->process(in); }