mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-31 01:20:37 -08:00
Avoid ridiculously high stack limit requests on macOS
* src/emacs.c (main): Avoid wraparound in subtraction of rlim_t values, in case rlim_t is an unsigned type. (Bug#32338)
This commit is contained in:
parent
ac3622c81a
commit
86d2169ac3
1 changed files with 6 additions and 4 deletions
10
src/emacs.c
10
src/emacs.c
|
|
@ -875,7 +875,8 @@ main (int argc, char **argv)
|
|||
newlim = rlim.rlim_max;
|
||||
newlim -= newlim % pagesize;
|
||||
|
||||
if (pagesize <= newlim - lim)
|
||||
if (newlim > lim /* in case rlim_t is an unsigned type */
|
||||
&& pagesize <= newlim - lim)
|
||||
{
|
||||
rlim.rlim_cur = newlim;
|
||||
if (setrlimit (RLIMIT_STACK, &rlim) == 0)
|
||||
|
|
@ -884,9 +885,10 @@ main (int argc, char **argv)
|
|||
}
|
||||
/* If the stack is big enough, let regex.c more of it before
|
||||
falling back to heap allocation. */
|
||||
emacs_re_safe_alloca = max
|
||||
(min (lim - extra, SIZE_MAX) * (min_ratio / ratio),
|
||||
MAX_ALLOCA);
|
||||
if (lim < extra)
|
||||
lim = extra; /* avoid wrap-around in unsigned subtraction */
|
||||
emacs_re_safe_alloca =
|
||||
max (min (lim - extra, SIZE_MAX) * (min_ratio / ratio), MAX_ALLOCA);
|
||||
}
|
||||
#endif /* HAVE_SETRLIMIT and RLIMIT_STACK and not CYGWIN */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue