ceph/ceph — pull request #1910 by liewegas (2014-06-03 18:46:38+00:00)
Title: librados: simplify/fix rados_pool_list bounds checks

We were not breaking out of the loop when we filled up the buffer unless we
happened to do so on a pool name boundary. This means that len would roll
over (it was unsigned). In my case, I was not able to reproduce anything
particularly bad since (I think) the strncpy was interpreting the large
unsigned value as signed, but in any case this fixes it, simplifies the
arithmetic, and adds a simple test.

- use a single 'rl' value for the amount of buffer space we want to
consume
- use this to check that there is room and also as the strncat length
- rely on the initial memset to ensure that the trailing 0 is in place.

Fixes: #8447 Signed-off-by: Sage Weil