ring: Consistently use size_t to specify ring size
commitf4821f92614bafaaee01721b3a5ffc29fe2f5365
authorTobias Klauser <tklauser@distanz.ch>
Wed, 30 Apr 2014 11:32:08 +0000 (30 13:32 +0200)
committerTobias Klauser <tklauser@distanz.ch>
Wed, 30 Apr 2014 11:32:08 +0000 (30 13:32 +0200)
tree87b71ab410183ad1497e7cf6798aa7b3dc72dba3
parent190dc7879a1a8813f2332ee7b39b743a49ac2771
ring: Consistently use size_t to specify ring size

The mm_len member of struct ring is of type size_t, but in the code
paths leading to set it, unsigned int is used. In circumstances where
unsigned int is 32 bit and size_t is 64 bit, this could lead to an
integer overflow, which causes an improper ring size being mmap()'ed in
mmap_ring_generic().

In order to prevent this, consistently use size_t to store the ring
size, since this is also what mmap() takes as its `length' parameter.

This now allows to specify ring sizes larger than 4 GiB for both
netsniff-ng and trafgen (fixes #90).

Reported-by: Jon Schipp <jonschipp@gmail.com>
Reported-by: Michał Purzyński <michalpurzynski1@gmail.com>
Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
netsniff-ng.c
ring.h
ring_rx.c
ring_rx.h
ring_tx.c
ring_tx.h
trafgen.c