lib/bloom: Fix bloom hashing on 32-bit architectures
There was an implicit cast from guint64 to gsize (which is 32-bit on armhf, for example) before the modulus arithmetic which safely narrows the index. Fix that by using a guint64 intermediate variable and making the cast explicit. Signed-off-by: Philip Withnall <withnall@endlessm.com> Closes: #1231 Approved by: cgwalters
This commit is contained in:
parent
4262a4b016
commit
1673601510
|
|
@ -273,11 +273,11 @@ ostree_bloom_maybe_contains (OstreeBloom *bloom,
|
||||||
|
|
||||||
for (i = 0; i < bloom->k; i++)
|
for (i = 0; i < bloom->k; i++)
|
||||||
{
|
{
|
||||||
gsize idx;
|
guint64 idx;
|
||||||
|
|
||||||
idx = bloom->hash_func (element, i);
|
idx = bloom->hash_func (element, i);
|
||||||
|
|
||||||
if (!ostree_bloom_get_bit (bloom, idx % (bloom->n_bytes * 8)))
|
if (!ostree_bloom_get_bit (bloom, (gsize) (idx % (bloom->n_bytes * 8))))
|
||||||
return FALSE; /* definitely not in the set */
|
return FALSE; /* definitely not in the set */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -337,8 +337,8 @@ ostree_bloom_add_element (OstreeBloom *bloom,
|
||||||
|
|
||||||
for (i = 0; i < bloom->k; i++)
|
for (i = 0; i < bloom->k; i++)
|
||||||
{
|
{
|
||||||
gsize idx = bloom->hash_func (element, i);
|
guint64 idx = bloom->hash_func (element, i);
|
||||||
ostree_bloom_set_bit (bloom, idx % (bloom->n_bytes * 8));
|
ostree_bloom_set_bit (bloom, (gsize) (idx % (bloom->n_bytes * 8)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue