diff options
| author | Paul Eggert | 2011-07-28 13:30:20 -0700 |
|---|---|---|
| committer | Paul Eggert | 2011-07-28 13:30:20 -0700 |
| commit | 17828df2d81aef1c7886cddd881ad6f67f1e4abe (patch) | |
| tree | c19c0d40496b48dea46518df8532f5fc38a09bf2 /src | |
| parent | 69e8622f7f852f63b8f71c5b1aa4c2fd406e383d (diff) | |
| download | emacs-17828df2d81aef1c7886cddd881ad6f67f1e4abe.tar.gz emacs-17828df2d81aef1c7886cddd881ad6f67f1e4abe.zip | |
* character.c (Fstring): Check for size-calculation overflow.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 2 | ||||
| -rw-r--r-- | src/character.c | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index b35f5607619..9f50e928fac 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,5 +1,7 @@ | |||
| 1 | 2011-07-28 Paul Eggert <eggert@cs.ucla.edu> | 1 | 2011-07-28 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 2 | ||
| 3 | * character.c (Fstring): Check for size-calculation overflow. | ||
| 4 | |||
| 3 | * ccl.c: Integer and memory overflow fixes. | 5 | * ccl.c: Integer and memory overflow fixes. |
| 4 | (Fccl_execute_on_string): Check for memory overflow. | 6 | (Fccl_execute_on_string): Check for memory overflow. |
| 5 | Use ptrdiff_t rather than EMACS_INT where ptrdiff_t will do. | 7 | Use ptrdiff_t rather than EMACS_INT where ptrdiff_t will do. |
diff --git a/src/character.c b/src/character.c index 5e2eccf54db..50b5b252871 100644 --- a/src/character.c +++ b/src/character.c | |||
| @@ -902,6 +902,8 @@ usage: (string &rest CHARACTERS) */) | |||
| 902 | Lisp_Object str; | 902 | Lisp_Object str; |
| 903 | USE_SAFE_ALLOCA; | 903 | USE_SAFE_ALLOCA; |
| 904 | 904 | ||
| 905 | if (min (PTRDIFF_MAX, SIZE_MAX) / MAX_MULTIBYTE_LENGTH < n) | ||
| 906 | memory_full (SIZE_MAX); | ||
| 905 | SAFE_ALLOCA (buf, unsigned char *, MAX_MULTIBYTE_LENGTH * n); | 907 | SAFE_ALLOCA (buf, unsigned char *, MAX_MULTIBYTE_LENGTH * n); |
| 906 | p = buf; | 908 | p = buf; |
| 907 | 909 | ||