Mira te encontre mas info, asumiendo que el modulo tipc esta cargado.
Dan Rosenberg reportando el problema.
:http://www.spinics.net/lists/netdev/msg144701.html
static inline int msg_calc_data_size(struct iovec const *msg_sect, u32 num_sect)
{
int dsz = 0; <<<<
int i;
for (i = 0; i < num_sect; i++)
dsz += msg_sect[i].iov_len; <<<<
return dsz;
}
Que es llamada para construir el msg en msg_build
static inline int msg_build(struct tipc_msg *hdr,
struct iovec const *msg_sect, u32 num_sect,
int max_size, int usrmem, struct sk_buff** buf)
{
...
dsz = msg_calc_data_size(msg_sect, num_sect);
if (unlikely(dsz > TIPC_MAX_USER_MSG_SIZE)) { <<<< trunc
*buf = NULL;
return -EINVAL;
}
...
res = !copy_from_user((*buf)->data + pos, <<<< heap overflow
msg_sect[cnt].iov_base,
msg_sect[cnt].iov_len);
...
Lo saque del src de mi kernel. Como explotarlo? bue se me ocurre crear un server y un cliente que se le conecte en local para despues usar llamar a sendmsg. Hay ejemplos en la red:
:http://www.mail-archive.com/tipc-discussion@lists.sourceforge.net/msg00125.html
Ahora si el kernel no tiene cargado este modulo fuistes
. Bueno nada por ahi capaz que no puedas aprovecharte de este error en particular pero buscando otros estoy seguro que te las vas a poder rebuscar para explotarlos
.