]> Savannah Git Hosting - gnulib.git/commitdiff
fflush: Fix a buffer overrun on 32-bit Android.
authorBruno Haible <bruno@clisp.org>
Tue, 17 Jan 2023 18:16:29 +0000 (19:16 +0100)
committerBruno Haible <bruno@clisp.org>
Fri, 20 Jan 2023 10:14:22 +0000 (11:14 +0100)
* 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'.

ChangeLog
lib/fflush.c
lib/stdio-impl.h

index 9c6ba69cdba355fb1335613b297023d05d3fb204..20d1170da4bade263f39528c9a86089dd52d3dfb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2023-01-17  Bruno Haible  <bruno@clisp.org>
+
+       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  <bruno@clisp.org>
 
        execute tests: Avoid test failure on Android.
index 69511cdeb6046aa4ab76162f7d7387d66c63035f..41a46882a1e0b83256122f99919b33d36caeb0e4 100644 (file)
@@ -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
index ed32e6981ac23b4047ce004862c697ebb450e181..928b851617255fdf10ff6d8ba7ce7e2015989b74 100644 (file)
@@ -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