diff options
author | asomers <asomers@FreeBSD.org> | 2016-06-24 21:44:46 +0000 |
---|---|---|
committer | asomers <asomers@FreeBSD.org> | 2016-06-24 21:44:46 +0000 |
commit | aa7e564bf30e996aea3c47dd96ba6f85bdc804db (patch) | |
tree | ef8b45ececf575950d2fe7fdd4a41b704015eb78 /tests | |
parent | c5064f0323016fc0ff3a8d674ba24995ac35c1e6 (diff) | |
download | FreeBSD-src-aa7e564bf30e996aea3c47dd96ba6f85bdc804db.zip FreeBSD-src-aa7e564bf30e996aea3c47dd96ba6f85bdc804db.tar.gz |
Fix bitstring allocation on 32-bit platforms
sys/sys/bitstring.h
Fix a rounding calculation that could undersize a bitstring on
32-bit platforms.
tests/sys/sys/bitstring_test.h
Add a test for bitstr_size
PR: 210260
Reported by: Mark Millard
Reviewed by: gibbs
Approved by: re (marius)
Sponsored by: Spectra Logic Corp
Differential Revision: https://reviews.freebsd.org/D6848
Diffstat (limited to 'tests')
-rw-r--r-- | tests/sys/sys/bitstring_test.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/sys/sys/bitstring_test.c b/tests/sys/sys/bitstring_test.c index f80115a..fbfe782 100644 --- a/tests/sys/sys/bitstring_test.c +++ b/tests/sys/sys/bitstring_test.c @@ -102,6 +102,17 @@ ATF_TC_BODY(bitstr_in_struct, tc) bit_nclear(test_struct.bitstr, 0, 8); } +ATF_TC_WITHOUT_HEAD(bitstr_size); +ATF_TC_BODY(bitstr_size, tc) +{ + size_t sob = sizeof(bitstr_t); + + ATF_CHECK_EQ(0, bitstr_size(0)); + ATF_CHECK_EQ(sob, bitstr_size(1)); + ATF_CHECK_EQ(sob, bitstr_size(sob * 8)); + ATF_CHECK_EQ(2 * sob, bitstr_size(sob * 8 + 1)); +} + BITSTRING_TC_DEFINE(bit_set) /* bitstr_t *bitstr, int nbits, const char *memloc */ { @@ -407,6 +418,7 @@ ATF_TP_ADD_TCS(tp) { ATF_TP_ADD_TC(tp, bitstr_in_struct); + ATF_TP_ADD_TC(tp, bitstr_size); BITSTRING_TC_ADD(tp, bit_set); BITSTRING_TC_ADD(tp, bit_clear); BITSTRING_TC_ADD(tp, bit_ffs); |