aboutsummaryrefslogtreecommitdiffstats
path: root/src/ChangeLog
diff options
context:
space:
mode:
authorPaul Eggert2011-09-02 22:23:17 -0700
committerPaul Eggert2011-09-02 22:23:17 -0700
commit728f8f0a00a22e544789952c76f9eac0c3f8b2c6 (patch)
tree15415449894cb74cc1f09c1fe5a7bc3869a17bf2 /src/ChangeLog
parent9af32a1a25d9619e17abfb8a21b2938017cf56b3 (diff)
downloademacs-728f8f0a00a22e544789952c76f9eac0c3f8b2c6.tar.gz
emacs-728f8f0a00a22e544789952c76f9eac0c3f8b2c6.zip
* fileio.c: Fix bugs with large file offsets.
The previous code assumed that file offsets (off_t values) fit in EMACS_INT variables, which is not true on typical 32-bit hosts. The code messed up by falsely reporting buffer overflow in cases such as (insert-file-contents "big" nil 1 2) into an empty buffer when "big" contains more than 2**29 bytes, even though this inserts just one byte and does not overflow the buffer. (Finsert_file_contents): Store file offsets as off_t values, not as EMACS_INT values. Check for overflow when converting between EMACS_INT and off_t. When checking for buffer overflow or for overlap, take the offsets into account. Don't use EMACS_INT for small values where int suffices. When checking for overlap, fix a typo: ZV was used where ZV_BYTE was intended. (Fwrite_region): Don't assume off_t fits into 'long'. * buffer.h (struct buffer.modtime_size): Now off_t, not EMACS_INT.
Diffstat (limited to 'src/ChangeLog')
-rw-r--r--src/ChangeLog19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 52ec796d6cf..c80a12c1c00 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,22 @@
12011-09-03 Paul Eggert <eggert@cs.ucla.edu>
2
3 * fileio.c: Fix bugs with large file offsets.
4 The previous code assumed that file offsets (off_t values) fit in
5 EMACS_INT variables, which is not true on typical 32-bit hosts.
6 The code messed up by falsely reporting buffer overflow in cases
7 such as (insert-file-contents "big" nil 1 2) into an empty buffer
8 when "big" contains more than 2**29 bytes, even though this
9 inserts just one byte and does not overflow the buffer.
10 (Finsert_file_contents): Store file offsets as off_t
11 values, not as EMACS_INT values. Check for overflow when
12 converting between EMACS_INT and off_t. When checking for
13 buffer overflow or for overlap, take the offsets into account.
14 Don't use EMACS_INT for small values where int suffices.
15 When checking for overlap, fix a typo: ZV was used where
16 ZV_BYTE was intended.
17 (Fwrite_region): Don't assume off_t fits into 'long'.
18 * buffer.h (struct buffer.modtime_size): Now off_t, not EMACS_INT.
19
12011-08-30 Chong Yidong <cyd@stupidchicken.com> 202011-08-30 Chong Yidong <cyd@stupidchicken.com>
2 21
3 * syntax.c (find_defun_start): Update all cache variables if 22 * syntax.c (find_defun_start): Update all cache variables if