aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Eggert2011-07-28 18:00:29 -0700
committerPaul Eggert2011-07-28 18:00:29 -0700
commitc86960f076fd12d743da2b30768323efb9c22bbf (patch)
tree06bc9542c000a75b2114bd58460c68c04c652530 /src
parent37d0112bcfc0b2fb426821afc9d409236acab381 (diff)
downloademacs-c86960f076fd12d743da2b30768323efb9c22bbf.tar.gz
emacs-c86960f076fd12d743da2b30768323efb9c22bbf.zip
* macros.c: Integer and memory overflow fixes.
(Fstart_kbd_macro): Don't update size until alloc done. (store_kbd_macro_char): Reorder multiplicands to avoid overflow.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog4
-rw-r--r--src/macros.c4
2 files changed, 6 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 24d67e2463e..435d883e14f 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,9 @@
12011-07-29 Paul Eggert <eggert@cs.ucla.edu> 12011-07-29 Paul Eggert <eggert@cs.ucla.edu>
2 2
3 * macros.c: Integer and memory overflow fixes.
4 (Fstart_kbd_macro): Don't update size until alloc done.
5 (store_kbd_macro_char): Reorder multiplicands to avoid overflow.
6
3 * lread.c (read1, init_obarray): Don't update size until alloc done. 7 * lread.c (read1, init_obarray): Don't update size until alloc done.
4 8
5 * keymap.c: Integer overflow fixes. 9 * keymap.c: Integer overflow fixes.
diff --git a/src/macros.c b/src/macros.c
index 60f30c3fbbe..f6cd3a3ccad 100644
--- a/src/macros.c
+++ b/src/macros.c
@@ -62,9 +62,9 @@ macro before appending to it. */)
62 62
63 if (!current_kboard->kbd_macro_buffer) 63 if (!current_kboard->kbd_macro_buffer)
64 { 64 {
65 current_kboard->kbd_macro_bufsize = 30;
66 current_kboard->kbd_macro_buffer 65 current_kboard->kbd_macro_buffer
67 = (Lisp_Object *)xmalloc (30 * sizeof (Lisp_Object)); 66 = (Lisp_Object *)xmalloc (30 * sizeof (Lisp_Object));
67 current_kboard->kbd_macro_bufsize = 30;
68 } 68 }
69 update_mode_lines++; 69 update_mode_lines++;
70 if (NILP (append)) 70 if (NILP (append))
@@ -202,7 +202,7 @@ store_kbd_macro_char (Lisp_Object c)
202 if (min (PTRDIFF_MAX, SIZE_MAX) / sizeof *kb->kbd_macro_buffer / 2 202 if (min (PTRDIFF_MAX, SIZE_MAX) / sizeof *kb->kbd_macro_buffer / 2
203 < kb->kbd_macro_bufsize) 203 < kb->kbd_macro_bufsize)
204 memory_full (SIZE_MAX); 204 memory_full (SIZE_MAX);
205 nbytes = kb->kbd_macro_bufsize * 2 * sizeof *kb->kbd_macro_buffer; 205 nbytes = kb->kbd_macro_bufsize * (2 * sizeof *kb->kbd_macro_buffer);
206 kb->kbd_macro_buffer 206 kb->kbd_macro_buffer
207 = (Lisp_Object *) xrealloc (kb->kbd_macro_buffer, nbytes); 207 = (Lisp_Object *) xrealloc (kb->kbd_macro_buffer, nbytes);
208 kb->kbd_macro_bufsize *= 2; 208 kb->kbd_macro_bufsize *= 2;