diff --git a/include/functions.inc b/include/functions.inc
index 37e51681a89f355568746040b197c4934c1ced55..8ec8ea6453f30e78d2fa18baab0ac0b22ff9a361 100644
--- a/include/functions.inc
+++ b/include/functions.inc
@@ -2468,7 +2468,7 @@ if (!function_exists('random_int')) {
   {
     $range = $max - $min;
     if ($range <= 0) {
-      return $min;
+      throw new Exception('Invalid range passed to random_int');
     }
 
     $log    = log($range, 2);
@@ -2483,7 +2483,7 @@ if (!function_exists('random_int')) {
       if (!$strong || ($randomBytes === FALSE)) {
         throw new Exception('Failed to get random bytes');
       }
-      $rnd = unpack('C', $randomBytes)[1];
+      $rnd = unpack('Q', $randomBytes)[1];
       // discard irrelevant bits
       $rnd = $rnd & $filter;
     } while ($rnd >= $range);