Description

Integer overflow belongs to a logic errors family. It occurs when a given range of int (integer)
type numbers is overflowed due to arithmetic operations. Generally there are only two operations
which cause these kind of errors - addition and multiplication.

The program should write a "z" value into the array of pointers and then print it out.
With a specially selected array size (number of its elements) it's possible to use an
integer overflow error to overflow the array "tab".

The compiler warns us that the program contains an expression which causes an
integer overflow. To make sure what the result of the multiplication will be:

rezos@bezel ~/labs/integer $ ./multi
1073741824 *4 = 0

malloc(0) (in the main example) will allocate memory with size 0 correctly(poprawnie)/successfully(z powodzeniem),
and that will allow for overwriting memory segments on the heap.

Memory allocation with a negative value may cause allocation of very small or very big
memory segments depending on the implementation of the *alloc() functions. Integer overflow
errors may also lead to the situation where condition statements, which are supposed to check buffers
boundaries, are omitted.

Integer overflow errors are not always a threat themselves. However they provide the
possibility to overwrite or to read memory content beyond boudries of the buffers, for example
during buffer indexing.