Date: Sun, 6 Jul 2008 13:15:11 +0200 From: Jilles Tjoelker <jilles@stack.nl> To: Alexandre Sunny Kovalenko <gaijin.k@gmail.com> Cc: stable@freebsd.org Subject: Re: expand_number(3) silently truncates numeric part of the argument to 32 bit on i386, light impact on gjournal Message-ID: <20080706111511.GA68941@stack.nl> In-Reply-To: <1214770585.1079.13.camel@RabbitsDen> References: <1214770585.1079.13.camel@RabbitsDen>
next in thread | previous in thread | raw e-mail | index | archive | help
--9zSXsLTf0vkW971A Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Sun, Jun 29, 2008 at 04:16:25PM -0400, Alexandre Sunny Kovalenko wrote: > I honestly don't know whether it should or should not do it, and if it > should not, what errno should be set to. Program below gives following > output on RELENG_7 as of June 28th: > sunny:RabbitsDen>./expand_number 5368709120k > Result is 1099511627776 > sunny:RabbitsDen>./expand_number 5120G > Result is 5497558138880 > sunny:RabbitsDen> > One of the more interesting manifestations in the userland is that > gjournal label -s 5368709120 -f /dev/da0s1a > quietly gives you 1G of the journal in the resulting file system. > [snip program calling expand_number(3)] This happens because src/lib/libutil/expand_number.c does not include the necessary header <inttypes.h> for calling strtoimax(3). The file is compiled without compiler warnings, so the bug shows up as wrong behaviour. Adding #include <inttypes.h> fixes it. The file is slightly changed in CURRENT but the same patch should apply. -- Jilles Tjoelker --9zSXsLTf0vkW971A Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="expand_number.patch" --- src/lib/libutil/expand_number.c.orig 2007-09-05 16:27:13.000000000 +0200 +++ src/lib/libutil/expand_number.c 2008-07-06 13:11:02.766238000 +0200 @@ -33,6 +33,7 @@ #include <errno.h> #include <libutil.h> #include <stdint.h> +#include <inttypes.h> /* * Convert an expression of the following forms to a int64_t. --9zSXsLTf0vkW971A--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080706111511.GA68941>