* src/fns.c (Flocale_info): Avoid fixnum overflow under ASan.

This commit is contained in:
Philipp Stephani 2019-10-05 13:00:08 +02:00
parent 7d8548a011
commit 66839a74bb

View file

@ -3176,8 +3176,14 @@ The data read from the system are decoded using `locale-coding-system'. */)
# endif
# ifdef HAVE_LANGINFO__NL_PAPER_WIDTH
if (EQ (item, Qpaper))
return list2i ((intptr_t) nl_langinfo (_NL_PAPER_WIDTH),
(intptr_t) nl_langinfo (_NL_PAPER_HEIGHT));
/* We have to cast twice here: first to a correctly-sized integer,
then to int, because that's what nl_langinfo is documented to
return for _NO_PAPER_{WIDTH,HEIGHT}. The first cast doesn't
suffice because it could overflow an Emacs fixnum. This can
happen when running under ASan, which fills allocated but
uninitialized memory with 0xBE bytes. */
return list2i ((int) (intptr_t) nl_langinfo (_NL_PAPER_WIDTH),
(int) (intptr_t) nl_langinfo (_NL_PAPER_HEIGHT));
# endif
#endif /* HAVE_LANGINFO_CODESET*/
return Qnil;