OSDN Git Service

throttle: Assert that bkt->max is valid in throttle_compute_wait()
authorAlberto Garcia <berto@igalia.com>
Wed, 13 Sep 2017 08:28:17 +0000 (11:28 +0300)
committerKevin Wolf <kwolf@redhat.com>
Tue, 26 Sep 2017 12:46:23 +0000 (14:46 +0200)
If bkt->max == 0 and bkt->burst_length > 1 then we could have a
division by 0 in throttle_do_compute_wait(). That configuration is
however not permitted and is already detected by throttle_is_valid(),
but let's assert it in throttle_compute_wait() to make it explicit.

Found by Coverity (CID: 1381016).

Signed-off-by: Alberto Garcia <berto@igalia.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
util/throttle.c

index 06bf916..b38e742 100644 (file)
@@ -124,6 +124,7 @@ int64_t throttle_compute_wait(LeakyBucket *bkt)
     /* If the main bucket is not full yet we still have to check the
      * burst bucket in order to enforce the burst limit */
     if (bkt->burst_length > 1) {
+        assert(bkt->max > 0); /* see throttle_is_valid() */
         extra = bkt->burst_level - burst_bucket_size;
         if (extra > 0) {
             return throttle_do_compute_wait(bkt->max, extra);