lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 27 Oct 2014 04:01:44 +0000
From:	Pádraig Brady <P@...igBrady.com>
To:	Thomas Gleixner <tglx@...utronix.de>,
	Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
CC:	Paul Eggert <eggert@...ucla.edu>, bug-gnulib <bug-gnulib@....org>
Subject: nanosleep truncated on 64 bit Linux by 292 billion years

I noticed that nanosleep() on 64 bit, "only" supports 292 years,
rather than the full potential 292 billion years with 64 bit time_t, due to:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/linux/time.h?id=refs/tags/v3.16#n87

Attached is a program from Paul Eggert that illustrates the bug.
Running this program on a buggy host outputs something like this:

  Setting alarm for 1 second from now ...
  Sleeping for 9223372036854775807.999999999 seconds...
  After alarm sent off, remaining time is 9223357678.462306617 seconds;
  i.e., nanosleep claimed that it slept for about 293079448610.606445 years.

Gnulib-using applications have a workaround for this bug, but a workaround
shouldn't be necessary.  For what it's worth, the bug is fixed in Solaris 11 (x86-64),
though it's present in Solaris 10 (64-bit sparc).

thanks,
Pádraig.

View attachment "nanosleep-bug.c" of type "text/plain" (1175 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ