mailing list of musl libc
 help / color / mirror / code / Atom feed
* Signed integer overflow in __secs_to_tm
@ 2015-10-07  0:09 Brian Mastenbrook
  2015-10-07  7:24 ` Jens Gustedt
  2015-10-07 10:22 ` Szabolcs Nagy
  0 siblings, 2 replies; 4+ messages in thread
From: Brian Mastenbrook @ 2015-10-07  0:09 UTC (permalink / raw)
  To: musl

__secs_to_tm (used by gmtime_r et al) may invoke undefined behavior due to signed integer overflow in two places. At __secs_to_tm.c:58, 400*qc_cycles may overflow. At __secs_to_tm.c:63, there is a nonsensical comparison between an already overflowed value and INT_MAX or INT_MIN; the compiler will delete this test due to overflow. Here are some example values that provoke the overflow:

t = -67771633420944000

__secs_to_tm.c:58:[kernel] warning: signed overflow. assert -2147483648 ≤ 400*qc_cycles;

t = 67768037838810496

__secs_to_tm.c:63:[kernel] warning: signed overflow. assert years+100 ≤ 2147483647;

These errors were found using KLEE and clang's undefined behavior sanitizer together. (Unfortunately KLEE also produced a false report of an out-of-bounds access to the days_in_month array due to a solver bug.)

--
Brian Mastenbrook
brian@mastenbrook.net
http://brian.mastenbrook.net/



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-10-08 23:47 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-07  0:09 Signed integer overflow in __secs_to_tm Brian Mastenbrook
2015-10-07  7:24 ` Jens Gustedt
2015-10-07 10:22 ` Szabolcs Nagy
2015-10-08 23:47   ` Rich Felker

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).