Integer overflow: Difference between revisions

Content deleted Content added
Bilbo1507 (talk | contribs)
Security ramifications: Nearly all languages have bigint capabilities, and this page isn't a Python campaign. Cool it, and explain both points of view. :)
Line 19:
In some situations a program may make the assumption that a variable always contains a positive value. If the variable has a signed integer type an overflow can cause its value to wrap and become negative, violating the assumption contained in the program and perhaps leading to unintended behavior. Similarly, subtracting from a small unsigned value may cause it to wrap to a large positive value which may also be an unexpected behavior. Multiplying or adding two integers may result in a value that is non-negative, but unexpectedly small. If this number is used as the number of bytes to allocate for a buffer, the buffer will be allocated unexpectedly small, leading to a potential buffer overflow.
 
Some languages, such as [[Lisp (programming language)|Lisp]] and [[Ada (programming language)|Ada]], provide mechanisms that, if used, result in accidentalarithmetic overflowoverflows triggering an exception condition. ManyOther languages do not support, such functionality. Inas [[Python (programming language)|Python]], aand number(with that"use becomesbigint") too[[Perl]], largeautomatically forallocate anmore integermemory seamlesslywhen a number becomes atoo longlarge.<ref>[http://www.python.org/doc/1.4/ref/ref5.html Python documentation], section 5.1 Arithmetic conversions.</ref> AndNearly all languages support [[Arbitrary-precision arithmetic]] in Pythonsome 3.0fashion, integersbut with wildly varying degrees of convenience. C's implementaiton is an example of a very inconvenient one; the programmer must use special data-types and arbitrarycall sizedfunctions longsfor areevery unifiedoperation, but as usual, C's approach also quite efficient.<ref>[http://www.python.org/dev/peps/pep Variable-0237/precision Pythonarithmetic Enhancementoperations Proposalalways 237]</ref>imply an efficiency cost because it requires more CPU instructions.
 
==Techniques for mitigating integer overflow problems==