]> 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>
Tue, 17 Jan 2023 18:16:29 +0000 (19:16 +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 42e60a9be7a1bb33b5eef57d63923d040f1d3d35..ad96022ef7caac501810ea2d354ba31edc778ebe 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 d38f5f00a3ca1d3b9ac39749cac02814d8462084..f3689b3e81a5a685f75b8389150e7a0221139efa 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 81e7f838372245ef38d6734d12bd944efb76e43c..89056b0de54ee826fea73bfb64773e44fda25d80 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