summaryrefslogtreecommitdiff
path: root/src/unexw32.c
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2016-12-17 13:08:52 +0200
committerEli Zaretskii <eliz@gnu.org>2016-12-17 13:08:52 +0200
commit0757b4f2f73daa67e5c5217964b423c6a0239e95 (patch)
treeabf4bc0accf7a0f0202e9ad88401d2d2ee4796ea /src/unexw32.c
parent6bf83218314db1c63ce34564edfb994d9431b28a (diff)
downloademacs-0757b4f2f73daa67e5c5217964b423c6a0239e95.tar.gz
Fix crashes on MS-Windows during dumping
* src/unexw32.c (get_section_info): Make extra_bss_size be the maximum of extra_bss_size and extra_bss_size_static. This avoids computing the size of the output file smaller than it actually needs to be, which then causes copy_executable_and_dump_data to write beyond the requested size of the file mapping, thus relying on the OS roundup to page boundary to save us from ourselves. See http://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00642.html for the details. * lib/stdio-impl.h: Revert the workaround fix of not including errno.h for MinGW.
Diffstat (limited to 'src/unexw32.c')
-rw-r--r--src/unexw32.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/unexw32.c b/src/unexw32.c
index f4183dc976f..54224858a85 100644
--- a/src/unexw32.c
+++ b/src/unexw32.c
@@ -465,6 +465,7 @@ get_section_info (file_data *p_infile)
bss_start = min (bss_start, bss_start_static);
bss_size = max (my_endbss, my_endbss_static) - bss_start;
bss_section_static = 0;
+ extra_bss_size = max (extra_bss_size, extra_bss_size_static);
extra_bss_size_static = 0;
}
}