| Summary | Groupware message receive integer overflow | 
|---|---|
| Date | 2004-08-26 | 
| CVE Number | CVE-2004-0754 | 
| Discovered By | Sean (infamous42md) | 
| Fixed In Release | 0.82 | 
Integer overflow in memory allocation results in heap overflow. By passing the
                    size variable as ~0, integer overflows to 0 when 1 is added in g_alloc().
                    A malloc(0) call results in 16 bytes of memory being allocated on IA- 32.
                    Then we can overflow the heap when nm_read_all() is called next step.
                    Usually cases like this suck for exploitation, because the len (~0) is so
                    large that a following call to memcpy() or strcpy() will just run into
                    kernel mem or unmapped address and fault. However in this case we read the
                    data from the network via a read() call, so we can just stop sending data and
                    close the connection to short out before ~0 bytes are read. However, this is
                    triggered by input from the server, not directly from a client. Someone
                    running a malicious groupware server could leverage this to run arbitrary code
                    on the client.
Bounds checking was added.