tests: fix potential divide by zero condition

Running clang's static analysis revealed a possible divide by zero
condition.

There is a random chance of the divide by zero.

- it has to be in the first pass of the main loop testing events
  (counter = 0)
- 90% chance path :   if (counter < (NUMEVENTS -1) &&
                          random() % 10 == 0)      -- needs to be false
- 25% chance path:    if (random() % 4 == 0)       -- needs to be true

if the above conditions are met, the statement
    int victim = random() % counter
is a divide by zero.

Add a check to ensure the counter is greater than zero.  Add a comment
to document that only events prior to the current event are randomly
selected.

Change-Id: I4b4e73fa324842bb504bcc952079af15aea8a6a3
Reviewed-on: https://gerrit.openafs.org/14501
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
This commit is contained in:
Cheyenne Wills 2021-01-22 12:48:21 -07:00 committed by Benjamin Kaduk
parent 43ef1f2a5d
commit bf37aec672

View File

@ -166,9 +166,11 @@ main(void)
= rxevent_Post(&eventTime, &now, eventSub, &events[counter],
NULL, 0);
}
/* A 25% chance that we will cancel a random event */
if (random() % 4 == 0) {
/*
* A 25% chance that we will cancel some event.
* Randomly pick any event that was scheduled before the current event.
*/
if (counter > 0 && (random() % 4 == 0)) {
int victim = random() % counter;
if (rxevent_Cancel(&events[victim].event))