diff --git a/include/functions.inc b/include/functions.inc
index a130496abd03b2ab83a083e6d8fa8df145aaf8fa..af35d642bccc68553d475602494b11dbcef33da8 100644
--- a/include/functions.inc
+++ b/include/functions.inc
@@ -2648,7 +2648,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);
@@ -2663,7 +2663,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);