This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: Buggy fmemopen
- From: Corinna Vinschen <corinna-cygwin at cygwin dot com>
- To: cygwin at cygwin dot com
- Date: Tue, 22 Feb 2011 17:07:27 +0100
- Subject: Re: Buggy fmemopen
- References: <30984430.post@talk.nabble.com>
- Reply-to: cygwin at cygwin dot com
On Feb 22 02:13, lumumba wrote:
>
> This function causes SIGSEGV when it's called with buf == NULL. Also it
> returns EINVAL with mode != "a".
> It appears it wasn't tested with buf == NULL at all:
> fmemopen.c:309
> if (!buf)
> {
> /* r+/w+/a+, and no buf: file starts empty. */
> c->buf = (char *) (c + 1);
> *(char *) buf = '\0'; // Should be c->buf?
> c->pos = c->eof = 0;
> c->append = (flags & __SAPP) != 0;
> }
> This condition looks strange:
> fmemopen.c:284
> if (!size || !(buf || flags & __SAPP)) // Why?
> {
> ptr->_errno = EINVAL;
> return NULL;
> }
This is a newlib issue in the first place, so the right mailing list
would have been newlib AT sourceware DOT org. However, I just applied a
patch which should fix the issue.
Thanks for the report,
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple