From: Florian Weimer Date: Wed, 30 Nov 2016 13:59:27 +0000 (+0100) Subject: libio: Limit buffer size to 8192 bytes [BZ #4099] X-Git-Tag: glibc-2.25~252 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=705a79f82560ff6472cebed86aa5db04cdea3bce;p=thirdparty%2Fglibc.git libio: Limit buffer size to 8192 bytes [BZ #4099] This avoids overly large buffers with network file systems which report very large block sizes. --- diff --git a/ChangeLog b/ChangeLog index 40f460f7591..c2cb6080650 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2016-11-30 Florian Weimer + + [BZ #4099] + * libio/filedoalloc.c (_IO_file_doallocate): Limit buffer size to + _IO_BUFSIZ (8192). + 2016-11-30 Carlos O'Donell * PROJECTS: Remove file. diff --git a/NEWS b/NEWS index 9a45e730aff..b2a0b0f1f8f 100644 --- a/NEWS +++ b/NEWS @@ -80,6 +80,12 @@ Version 2.25 affect the ABI of other libraries that use this type in their interfaces, if they are compiled or used with those options. +* The buffer size for byte-oriented stdio streams is now limited to 8192 + bytes by default. Previously, on Linux, the default buffer size on most + file systems was 4096 bytes (and thus remains unchanged), except on + network file systems, where the buffer size was unpredictable and could be + as large as several megabytes. + * The header now includes the header. Support for the Linux quota interface which predates kernel version 2.4.22 has been removed. diff --git a/libio/filedoalloc.c b/libio/filedoalloc.c index 4f9d7389682..ded0725356e 100644 --- a/libio/filedoalloc.c +++ b/libio/filedoalloc.c @@ -94,7 +94,7 @@ _IO_file_doallocate (_IO_FILE *fp) fp->_flags |= _IO_LINE_BUF; } #if _IO_HAVE_ST_BLKSIZE - if (st.st_blksize > 0) + if (st.st_blksize > 0 && st.st_blksize < _IO_BUFSIZ) size = st.st_blksize; #endif }