aboutsummaryrefslogtreecommitdiff
path: root/src/bitfield.c
diff options
context:
space:
mode:
authorDavid Timber <mieabby@gmail.com>2021-08-17 13:28:38 +1000
committerDavid Timber <mieabby@gmail.com>2021-08-17 13:28:38 +1000
commit7ce01d9113856f94f90f3f6f144f351a69e333c5 (patch)
tree6b3e9dfcd5de109715b147c3c6bfc085bb30a78d /src/bitfield.c
parentaf9f23da9f3ce89353cf06878bf8ab49b405e331 (diff)
Bitfield: assume bits out of range are unset
Diffstat (limited to 'src/bitfield.c')
-rw-r--r--src/bitfield.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/bitfield.c b/src/bitfield.c
index cec0304..9a42926 100644
--- a/src/bitfield.c
+++ b/src/bitfield.c
@@ -13,11 +13,19 @@ void prne_bf_set (uint8_t *bf, const unsigned int bit, const bool v) {
}
}
-bool prne_bf_test (const uint8_t *bf, const unsigned int bit) {
+bool prne_bf_test (
+ const uint8_t *bf,
+ const size_t size,
+ const unsigned int bit)
+{
const unsigned int p = bit / 8;
const unsigned int s = bit - p * 8;
- return bf[p] & (1 << s);
+ if (size <= p) {
+ return false;
+ }
+
+ return (bf[p] & (1 << s)) != 0;
}
void prne_bf_foreach (