User Tools

Site Tools


programming:bash:overflow

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
programming:bash:overflow [2022/03/30 15:30] – Creating overflow ateixeiraprogramming:bash:overflow [2022/03/31 15:07] (current) – [Interesting fact :] ateixeira
Line 1: Line 1:
 +====== Overflow ======
 +
 +
 +It will depend on your version of bash, your OS((Operating System)) and your CPU((Processor)) architecture. To try it, we will set a variable to (2^16). If the output is the right answer, we will set it to (2^32), and so on untill the answer is not right anymore.
 +
 +In the example below, we can see that at (2^64) the answer is not right anymore. So we substract 1 at the result  (2^64) - 1  to know if it is a non-signed INT and we see that the answer is not right yet. So we substract 1 to the exponent (2^63) to know if it is a signed INT and ... the answer still wrong.
 +
 +Then we substract 1 at the result  (2^63) - 1 and we see that the result is the answer we were waiting for. We can therefore deduce that it is a signed 64 bit INT. To prove it, we add 1 to the variable and we can see the MIN limit signed INT.
 +
 +We have now the MIN and the MAX limit.
 +
 +==== Example ====
 +
   #!/bin/bash   #!/bin/bash
      
Line 18: Line 31:
      
      
-Output will be:+==== Output will be : ====
  
   65536   65536
Line 35: Line 48:
   9223372036854775908           #String   9223372036854775908           #String
   -9223372036854775707          #INT overflow   -9223372036854775707          #INT overflow
 +
 +
 +==== Interesting fact : ====
 +
 +> At the end, we set a variable bigger than the MAX limit and increment X (in this case X=1). The variable is at first stocked as a STR but when we force it to increment by X, we see that bash will compensate and output the MIN limit incremented by X.
  
programming/bash/overflow.1648654231.txt.gz · Last modified: 2022/03/30 15:30 by ateixeira