1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-27 07:41:28 -08:00
Commit graph

101989 commits

Author SHA1 Message Date
Paul Eggert
ca9ce8f2cb Integer and memory overflow fixes for display code.
* dispextern.h (struct glyph_pool.nglyphs): Now ptrdiff_t, not int.
* dispnew.c (adjust_glyph_matrix, realloc_glyph_pool, scrolling_window):
Check for overflow in size calculations.
(line_draw_cost, realloc_glyph_pool, add_row_entry):
Don't assume glyph table len fits in int.
(struct row_entry.bucket, row_entry_pool_size, row_entry_idx)
(row_table_size): Now ptrdiff_t, not int.
(scrolling_window): Avoid overflow in size calculations.
Don't update size until allocation succeeds.
* fns.c (concat): Check for overflow in size calculations.
(next_almost_prime): Verify NEXT_ALMOST_PRIME_LIMIT.
* lisp.h (RANGED_INTEGERP, TYPE_RANGED_INTEGERP): New macros.
(NEXT_ALMOST_PRIME_LIMIT): New constant.
2011-07-28 14:31:33 -07:00
Paul Eggert
7bd4252299 Fix typo in comment. 2011-07-28 13:35:41 -07:00
Paul Eggert
d86d0d747f * composite.c: Integer overflow fixes.
(get_composition_id): Check for overflow in glyph length calculations.
2011-07-28 13:35:09 -07:00
Paul Eggert
5d009b3a6a * coding.c: Integer and memory overflow fixes.
(produce_chars): Redo buffer-overflow calculations to avoid
unnecessary integer overflow.  Check for size overflow.
(encode_coding_object): Don't update size until xmalloc succeeds.
2011-07-28 13:31:29 -07:00
Paul Eggert
17828df2d8 * character.c (Fstring): Check for size-calculation overflow. 2011-07-28 13:30:20 -07:00
Paul Eggert
69e8622f7f * ccl.c: Integer and memory overflow fixes.
(Fccl_execute_on_string): Check for memory overflow.
Use ptrdiff_t rather than EMACS_INT where ptrdiff_t will do.
Redo buffer-overflow calculations to avoid integer overflow.
2011-07-28 13:29:44 -07:00
Paul Eggert
860887db5c * callproc.c (child_setup): Don't assume strlen fits in int. 2011-07-28 13:29:09 -07:00
Paul Eggert
6e1fc4528b * buffer.c: Memory overflow fixes.
(overlays_at, overlays_in, record_overlay_string, overlay_strings):
Don't update size of array until after memory allocation succeeds,
because xmalloc/xrealloc may not return.
2011-07-28 13:28:33 -07:00
Paul Eggert
bc18e09ddf * bidi.c: Integer overflow fix.
(bidi_shelve_header_size): New constant.
(bidi_cache_ensure_space, bidi_shelve_cache): Use it.
(bidi_cache_ensure_space): Avoid integer overflow when allocating.
2011-07-28 13:27:41 -07:00
Paul Eggert
722e028b38 Fix incorrect comment. 2011-07-19 17:09:31 -07:00
Paul Eggert
ebfa62c014 Use ptrdiff_t for composition IDs.
* character.c (lisp_string_width):
* composite.c (composition_table_size, n_compositions)
(get_composition_id, composition_gstring_from_id):
* dispextern.h (struct glyph_string.cmp_id, struct composition_it.id):
* xdisp.c (BUILD_COMPOSITE_GLYPH_STRING):
* window.c (Frecenter):
Use ptrdiff_t, not int, for composition IDs.
* composite.c (get_composition_id): Check for integer overflow.
* composite.h: Adjust prototypes to match the above changes.
2011-07-19 14:39:36 -07:00
Paul Eggert
63cf7836ae Merge from intsign. 2011-07-19 13:37:27 -07:00
Paul Eggert
0d8de0fd0a Merge from trunk. 2011-07-19 13:33:28 -07:00
Paul Eggert
590bd46743 Port to OpenBSD.
See http://lists.gnu.org/archive/html/emacs-devel/2011-07/msg00688.html
and the surrounding thread.
* minibuf.c (read_minibuf_noninteractive): Rewrite to use getchar
rather than fgets, and retry after EINTR.  Otherwise, 'emacs
--batch -f byte-compile-file' fails on OpenBSD if an inactivity
timer goes off.
* s/openbsd.h (BROKEN_SIGIO): Define.
* unexelf.c (unexec) [__OpenBSD__]:
Don't update the .mdebug section of the Alpha COFF symbol table.
2011-07-19 10:33:06 -07:00
Lars Magne Ingebrigtsen
f41628b253 * lread.c (syms_of_lread): Clarify when `lexical-binding' is used 2011-07-19 17:16:58 +02:00
Lars Magne Ingebrigtsen
1bfd59e52c (view-buffer): Allow running in `special' modes if we're visiting a file.
Fixes: debbugs:8615
2011-07-19 17:01:49 +02:00
Glenn Morris
fd99fde61f * admin/FOR-RELEASE: Reset list of proof-read manual etc files. 2011-07-19 00:15:15 -07:00
Martin Rudalics
f5aae37c88 Rewrite display-buffer-alist-set to handle Emacs 23 options more accurately.
* window.el (display-buffer-alist-of-strings-p)
(display-buffer-alist-set-1, display-buffer-alist-set-2): New
functions.
(display-buffer-alist-set): Rewrite to handle Emacs 23 options
more accurately.
2011-07-19 09:05:51 +02:00
Paul Eggert
7403ff044d Merge from trunk. 2011-07-18 23:10:15 -07:00
Paul Eggert
d3411f89d3 Use ptrdiff_t for hash table indexes.
* category.c (hash_get_category_set):
* ccl.c (ccl_driver):
* charset.h (struct charset.hash_index, CHECK_CHARSET_GET_ID):
* coding.c (coding_system_charset_list, detect_coding_system):
* coding.h (struct coding_system.id):
* composite.c (get_composition_id, gstring_lookup_cache):
* fns.c (hash_lookup, hash_put, Fgethash, Fputhash):
* image.c (xpm_get_color_table_h):
* lisp.h (hash_lookup, hash_put):
* minibuf.c (Ftest_completion):
Use ptrdiff_t for hash table indexes, not int (which is too
narrow, on 64-bit hosts) or EMACS_INT (which is too wide, on
32-bit --with-wide-int hosts).
2011-07-18 23:07:07 -07:00
Paul Eggert
e097a6fa86 * charset.c (Fdefine_charset_internal): Check for integer overflow.
Add a FIXME comment about memory leaks.
(syms_of_charset): Don't assume xmalloc returns.
2011-07-18 20:34:13 -07:00
Paul Eggert
5637687fea Don't assume that stated character widths fit in int.
* character.c (Fchar_width, c_string_width, lisp_string_width):
* character.h (CHAR_WIDTH):
* indent.c (MULTIBYTE_BYTES_WIDTH):
Use sanitize_char_width to avoid undefined and/or bad behavior
with outlandish widths.
* character.h (sanitize_tab_width): Renamed from sanitize_width,
now that we have two such functions.  All uses changed.
(sanitize_char_width): New inline function.
2011-07-18 17:42:24 -07:00
Paul Eggert
a2271ba210 Don't assume that tab-width fits in int.
* character.h (sanitize_width): New inline function.
(SANE_TAB_WIDTH): New macro.
(ASCII_CHAR_WIDTH): Use it.
* indent.c (sane_tab_width): Remove.  All uses replaced by
SANE_TAB_WIDTH (current_buffer).
* xdisp.c (init_iterator): Use SANE_TAB_WIDTH.
2011-07-18 14:57:37 -07:00
Paul Eggert
18c5255701 * fileio.c: Integer overflow issues with file modes.
(Fset_file_modes, auto_save_1): Don't assume EMACS_INT fits in int.
2011-07-18 14:08:22 -07:00
Paul Eggert
15e3a074a6 * fileio.c (Fcopy_file) [!MSDOS]: Tighten created file's mask.
This fixes some race conditions on the permissions of any newly
created file.
2011-07-18 14:01:36 -07:00
Paul Eggert
41bed37d15 * alloc.c (valid_pointer_p): Use pipe, not open.
This fixes some permissions issues when debugging.
2011-07-18 13:24:40 -07:00
Dan Nicolaescu
3948a51379 Add an example on how to use prog-mode. 2011-07-18 10:33:02 -07:00
Paul Eggert
b59b67c56e * fileio.c (Fcopy_file): Adjust mode if fchown fails. (Bug#9002)
If fchown fails to set both uid and gid, try to set just gid,
as that is sometimes allowed.  Adjust the file's mode to eliminate
setuid or setgid bits that are inappropriate if fchown fails.
2011-07-18 10:21:18 -07:00
Alan Mackenzie
bf2c1571f4 CC Mode: Fontify declarators properly when, e.g., a jit-lock chunk begins
inside a declaration.  Changed cc-engine.el, cc-langs.el, cc-fonts.el.
2011-07-18 17:15:24 +00:00
Andreas Schwab
8f8eda06a2 Update GB18030 charset maps to 2005 edition 2011-07-18 17:05:46 +02:00
Paul Eggert
caeeedc1af * charset.c (read_hex): New arg OVERFLOW. All uses changed.
Remove unreachable code.
(read_hex, load_charset_map_from_file): Check for integer overflow.
2011-07-17 23:44:01 -07:00
Stefan Monnier
925a6be733 * src/xdisp.c (next_element_from_string, next_element_from_buffer): Use EQ
to compare Lisp_Objects.
* src/gnutls.c (syms_of_gnutls): Rename Vgnutls_log_level to
global_gnutls_log_level, don't mistake it for a Lisp_Object.
(init_gnutls_functions, emacs_gnutls_handle_error): Fix up uses.
2011-07-17 22:34:14 -04:00
Bill Wohler
6265325e6b * NEWS, MH-E-NEWS: Update for MH-E release 8.2.93. 2011-07-17 14:16:34 -07:00
Bill Wohler
c6657a4fed * mh-e.el (Version, mh-version): Update for release 8.2.93. 2011-07-17 14:13:38 -07:00
Paul Eggert
50849c52f8 * xterm.c: don't go over XClientMessageEvent limit
(scroll_bar_windows_size): Now ptrdiff_t, as we prefer signed.
(x_send_scroll_bar_event): Likewise.  Check that the size does not
exceed limits imposed by XClientMessageEvent, as well as the usual
ptrdiff_t and size_t limits.
2011-07-17 13:56:13 -07:00
Bill Wohler
a4963f79fb * mh-compat.el (mh-pop-to-buffer-same-window): Delete.
* mh-folder.el (mh-inc-folder, mh-modify, mh-scan-folder)
(mh-make-folder): Revert to switch-to-buffer, as the Emacs folks
decided that it was fine to use it in programs.
2011-07-17 13:45:52 -07:00
Lars Magne Ingebrigtsen
12dc863d62 * image.el (put-image): Doc typo fix. 2011-07-17 17:57:47 +02:00
Andreas Schwab
46cfea45c4 Fix last change 2011-07-17 12:35:42 +02:00
Andreas Schwab
0a6a104b85 Make read-symbol-positions-list more accurate
* src/lread.c (read_integer): Unread even EOF character.
(read1): Likewise.  Properly record start position of symbol.
2011-07-17 12:29:24 +02:00
Glenn Morris
60d847b46d Auto-commit of loaddefs files. 2011-07-17 06:26:13 -04:00
Andreas Schwab
52968808d6 * src/lread.c (read1): Read `#:' as empty uninterned symbol if no
symbol character follows.
2011-07-17 10:00:53 +02:00
Paul Eggert
b13995dbbd * keyboard.c: Overflow, signedness and related fixes.
(make_lispy_movement): Use same integer type in forward decl
that is used in the definition.
(read_key_sequence, keyremap_step):
Change bufsize argument back to int, undoing my 2011-03-30 change.
We prefer signed types, and int is wide enough here.
(parse_tool_bar_item): Don't assume tool_bar_max_label_size is less
than TYPE_MAXIMUM (EMACS_INT) / 2.  Don't let the label size grow
larger than STRING_BYTES_BOUND.  Use ptrdiff_t for Emacs string
length, not size_t.  Use ptrdiff_t for index, not int.
(keyremap_step, read_key_sequence): Redo bufsize check to avoid
possibility of integer overflow.
2011-07-16 20:00:19 -07:00
Lars Magne Ingebrigtsen
a762e96652 (tags-search): Doc typo fix. 2011-07-17 04:21:43 +02:00
Paul Eggert
8d576a545d Merge from trunk. 2011-07-16 18:34:49 -07:00
Paul Eggert
c2216f8e3a Merge from trunk. 2011-07-16 18:33:46 -07:00
Paul Eggert
9e381cdd96 * fileio.c (Fcopy_file): Pacify gcc re fchown. (Bug#9002)
This works around a problem with the previous change to Fcopy_file.
Recent glibc declares fchown with __attribute__((warn_unused_result)),
and without this change, GCC might complain about discarding
fchown's return value.
2011-07-16 18:18:51 -07:00
Lars Magne Ingebrigtsen
4e190b801d (smtpmail-via-smtp): Query the user for password if we get errors 550 to 554. 2011-07-17 02:45:56 +02:00
Paul Eggert
b1f367f797 Merge from trunk. 2011-07-16 17:39:01 -07:00
Paul Eggert
4f8a454745 Merge from trunk. 2011-07-16 17:37:57 -07:00
Paul Eggert
1346439460 Overflow, signedness and related fixes for images.
* dispextern.h (struct it.stack[0].u.image.image_id)
(struct_it.image_id, struct image.id, struct image_cache.size)
(struct image_cache.used, struct image_cache.ref_count):
* gtkutil.c (update_frame_tool_bar):
* image.c (x_reference_bitmap, Fimage_size, Fimage_mask_p)
(Fimage_metadata, free_image_cache, clear_image_cache, lookup_image)
(cache_image, mark_image_cache, x_kill_gs_process, Flookup_image):
* nsmenu.m (update_frame_tool_bar):
* xdisp.c (calc_pixel_width_or_height):
* xfns.c (image_cache_refcount):
Image IDs are now ptrdiff_t, not int, to avoid arbitrary limits
on typical 64-bit hosts.

* image.c (RANGED_INTEGERP, TYPE_RANGED_INTEGERP): New macros.
(x_bitmap_pixmap, x_create_x_image_and_pixmap):
Omit unnecessary casts to int.
(parse_image_spec): Check that integers fall into 'int' range
when the callers expect that.
(image_ascent): Redo ascent calculation to avoid int overflow.
(clear_image_cache): Avoid overflow when sqrt (INT_MAX) < nimages.
(lookup_image): Remove unnecessary tests.
(xbm_image_p): Locals are now of int, not EMACS_INT,
since parse_image_check makes sure they fit into int.
(png_load, gif_load, svg_load_image):
Prefer int to unsigned where either will do.
(tiff_handler): New function, combining the cores of the
old tiff_error_handler and tiff_warning_handler.  This
function is rewritten to use vsnprintf and thereby avoid
stack buffer overflows.  It uses only the features of vsnprintf
that are common to both POSIX and native Microsoft.
(tiff_error_handler, tiff_warning_handler): Use it.
(tiff_load, gif_load, imagemagick_load_image):
Don't assume :index value fits in 'int'.
(gif_load): Omit unnecessary cast to double, and avoid double-rounding.
(imagemagick_load_image): Check that crop parameters fit into
the integer types that MagickCropImage accepts.  Don't assume
Vimagemagick_render_type has a nonnegative value.  Don't assume
size_t fits in 'long'.
(gs_load): Use printmax_t to print the widest integers possible.
Check for integer overflow when computing image height and width.
2011-07-16 17:34:43 -07:00