]> 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:19:01 +0000 (11:19 +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 bb9f495f47fadc6c9422dfa712830bdbcc4d4222..d08d5b022789a3f2066f7e315bbbd9bc6deb9104 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