This is the mail archive of the
cygwin-developers@sourceware.cygnus.com
mailing list for the Cygwin project.
RE: [jjohnstn@cygnus.com: Re: A patch from the net]
- To: 'Chris Faylor' <cgf at cygnus dot com>
- Subject: RE: [jjohnstn@cygnus.com: Re: A patch from the net]
- From: "Fifer, Eric" <EFifer at sanwaint dot com>
- Date: Fri, 25 Feb 2000 17:03:28 -0000
- Cc: "'jjohnstn at cygnus dot com'" <jjohnstn at cygnus dot com>, "'cygwin-developers at sourceware dot cygnus dot com'" <cygwin-developers at sourceware dot cygnus dot com>
Thanks for fowarding the stdout problem.
Also, the end of last month I sent in a different newlib problem,
but never got any kind of acknowledgement. I'll attach the old
email, just in case the issue fell through the cracks ...
Eric
--
Sent: Monday, January 31, 2000 3:44 PM
To: cygwin-developers@sourceware.cygnus.com
Subject: fopen looking past end of mode string
When fopen is checking its mode flags, it can look past
the end of the string. This patch checks that mode[1] is
not a terminator before looking ahead to mode[2].
Eric Fifer
--- newlib/libc/stdio/flags.c- Thu Oct 14 18:37:59 1999
+++ newlib/libc/stdio/flags.c Mon Jan 31 14:33:53 2000
@@ -61,19 +61,19 @@
ptr->_errno = EINVAL;
return (0);
}
- if (mode[1] == '+' || mode[2] == '+')
+ if (mode[1] && (mode[1] == '+' || mode[2] == '+'))
{
ret = __SRW;
m = O_RDWR;
}
- if (mode[1] == 'b' || mode[2] == 'b')
+ if (mode[1] && (mode[1] == 'b' || mode[2] == 'b'))
{
#ifdef O_BINARY
m |= O_BINARY;
#endif
}
#ifdef __CYGWIN__
- else if (mode[1] == 't' || mode[2] == 't')
+ else if (mode[1] && (mode[1] == 't' || mode[2] == 't'))
#else
else
#endif