Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-developers-owner AT sourceware DOT cygnus DOT com Delivered-To: mailing list cygwin-developers AT sourceware DOT cygnus DOT com Message-ID: <779F20BCCE5AD31186A50008C75D99791716CE@SILLDN_MAIL1> From: "Fifer, Eric" To: cygwin-developers AT sourceware DOT cygnus DOT com Subject: fopen looking past end of mode string Date: Mon, 31 Jan 2000 15:43:49 -0000 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2448.0) Content-Type: text/plain; charset="iso-8859-1" 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