]> xenbits.xensource.com Git - libvirt.git/commitdiff
virrandom: Avoid undefined behaviour in virRandomBits
authorMichal Privoznik <mprivozn@redhat.com>
Thu, 2 Aug 2018 07:29:38 +0000 (09:29 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Mon, 6 Aug 2018 10:42:28 +0000 (12:42 +0200)
If nbits is 64 (or greater) then shifting 1ULL left is undefined.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
src/util/virrandom.c

index 3c011a861501397172d495a0ebdc453f1bfbd55c..7915f6531e2965b0f3de752e970083007bab5ead 100644 (file)
@@ -68,7 +68,9 @@ uint64_t virRandomBits(int nbits)
         return 0;
     }
 
-    ret &= (1ULL << nbits) - 1;
+    if (nbits < 64)
+        ret &= (1ULL << nbits) - 1;
+
     return ret;
 }