]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: tools: fix statistical_prng_range()'s output range
authorWilly Tarreau <w@1wt.eu>
Mon, 18 Jul 2022 17:09:55 +0000 (19:09 +0200)
committerWilly Tarreau <w@1wt.eu>
Mon, 18 Jul 2022 17:09:55 +0000 (19:09 +0200)
This function was added by commit 84ebfabf7 ("MINOR: tools: add
statistical_prng_range() to get a random number over a range") but it
contains a bug on the range, since mul32hi() covers the whole input
range, we must pass it range-1. For now it didn't have any impact, but
if used to find an array's index it will cause trouble.

This should be backported to 2.4.

include/haproxy/tools.h

index 90d46a60d1ef950eb25aeffe277b00b8e7668388..3059fa847aae9136746f27d0d66fa93baf5f0abb 100644 (file)
@@ -1063,7 +1063,7 @@ static inline unsigned int statistical_prng()
  */
 static inline uint statistical_prng_range(uint range)
 {
-       return mul32hi(statistical_prng(), range);
+       return mul32hi(statistical_prng(), range ? range - 1 : 0);
 }
 
 /* Update array <fp> with the character transition <prev> to <curr>. If <prev>