User Tools

Site Tools


programming:bash:overflow

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
programming:bash:overflow [2022/03/31 07:15] – Adding explanations ateixeiraprogramming:bash:overflow [2022/03/31 15:07] (current) – [Interesting fact :] ateixeira
Line 4: Line 4:
 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. 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.+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. 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.
Line 31: Line 31:
      
      
-Output will be:+==== Output will be : ====
  
   65536   65536
Line 48: 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.1648710936.txt.gz · Last modified: 2022/03/31 07:15 by ateixeira