On 24/04/2009 Russ Allbery wrote:
> Jonas Meurer <jo...@freesources.org> writes:
> 
> > Unfortunately ron discovered a far worse issue. The way str[ln]cat()
> > is used in mimelib makes it very error-prone to buffer overflows:
> >
> > #define SEND_BUFFER_SIZE  1024
> > ...
> > mSendBuffer = new char[SEND_BUFFER_SIZE];
> > ...
> > strlcpy(mSendBuffer, "PASS ", SEND_BUFFER_SIZE);
> > strlcat(mSendBuffer, aPasswd, SEND_BUFFER_SIZE);
> > strlcat(mSendBuffer, "\r\n", SEND_BUFFER_SIZE);
> >
> > this without any santising code for aPasswd causes mSendBuffer to be
> > overflowable for at least strlen("PASS ") + strlen("\r\n").
> 
> That code is safe from a buffer overflow perspective using strlcpy and
> strlcat, but may not end the buffer with \r\n.

Indeed, you're correct. I didn't realize that up to now. strlcat here is
very different to strncat. strlcat uses something like
SEND_BUFFER_SIZE - strlen(mSendBuffer)
as limit, while strncat uses SEND_BUFFER_SIZE all the time, and that way
is error-prone to buffer-overflows.

That indeed is a good reason to revert all my changes from
strlcpy/strlcat to strncpy/strncat and instead use the strlcpy/strlcat
defines from kdecore/fakes.c.

But in that case I've a simple question: if I put both defines into a
seperate c source file strl___.c, how do I teach the autotools to use
this file when compiling nntp.cpp, pop.cpp and uuencode.cpp?

greetings,
 jonas


-- 
To UNSUBSCRIBE, email to debian-mentors-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to