From: Bruno Haible Date: Tue, 17 Jan 2023 18:16:29 +0000 (+0100) Subject: fflush: Fix a buffer overrun on 32-bit Android. X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=ae9ad4662cf0c90c02ade71d802eaabc5b45c11b;p=gnulib.git fflush: Fix a buffer overrun on 32-bit Android. * lib/stdio-impl.h (fp_): On Android, change the type of _offset to 'long'. * lib/fflush.c (update_fpos_cache): On Android, update a 'long', not an 'fpos_t'. --- diff --git a/ChangeLog b/ChangeLog index bb9f495f47..d08d5b0227 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2023-01-17 Bruno Haible + + fflush: Fix a buffer overrun on 32-bit Android. + * lib/stdio-impl.h (fp_): On Android, change the type of _offset to + 'long'. + * lib/fflush.c (update_fpos_cache): On Android, update a 'long', not an + 'fpos_t'. + 2023-01-17 Bruno Haible execute tests: Avoid test failure on Android. diff --git a/lib/fflush.c b/lib/fflush.c index d38f5f00a3..f3689b3e81 100644 --- a/lib/fflush.c +++ b/lib/fflush.c @@ -99,7 +99,7 @@ update_fpos_cache (_GL_ATTRIBUTE_MAYBE_UNUSED FILE *fp, { # if defined __sferror || defined __DragonFly__ || defined __ANDROID__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ -# if defined __CYGWIN__ +# if defined __CYGWIN__ || defined __ANDROID__ /* fp_->_offset is typed as an integer. */ fp_->_offset = pos; # else diff --git a/lib/stdio-impl.h b/lib/stdio-impl.h index 81e7f83837..89056b0de5 100644 --- a/lib/stdio-impl.h +++ b/lib/stdio-impl.h @@ -96,7 +96,7 @@ unsigned char _nbuf[1]; \ struct { unsigned char *_base; size_t _size; } _lb; \ int _blksize; \ - fpos_t _offset; \ + long _offset; \ /* More fields, not relevant here. */ \ } *) fp) # else