[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bug in shell: buffer overflow.

From: Bob Proulx
Subject: Re: Bug in shell: buffer overflow.
Date: Fri, 31 Dec 2010 11:33:11 -0700
User-agent: Mutt/1.5.20 (2009-06-14)

address@hidden wrote:
>         echo $((256**8))
>         echo $((72057594037927936*128))
>         echo $((1000000000000000000000000))
>         etc.

Unless great effort is made to perform math in arbitrary precision


all computer arithmetic is done using native machine integers.  As
documented in the bash manual in the ARITHMETIC EVALUATION section:

       Evaluation is done in fixed-width integers with no check for
       overflow, though division by 0 is trapped and flagged as an

Your expressions above are overflowing the value of your system's
maximum integer size.  You can read the system's maximum integer size
using getconf.

  $ getconf INT_MAX

Fixed integer calculations are native to the system hardware and very
fast and most of the time sufficient for most tasks.

If you need larger numbers then you would need to use a tool that
supports arbitrary precision arithmetic such as 'bc'.  The bc tool may
be called from the shell to perform your calculations.  It is a
powerful calculator.

  $ man bc

  $ echo $(echo "72057594037927936*128" | bc -l)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]