]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Allow comparisons for integer64 data type
authorAlan T. DeKok <aland@freeradius.org>
Tue, 9 Aug 2011 14:06:53 +0000 (10:06 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Tue, 9 Aug 2011 14:06:53 +0000 (10:06 -0400)
src/lib/valuepair.c
src/main/valuepair.c

index 5a37116e5bd7603b0506f52d5a66583a6bc04b05..97c4e2e22d4755ae0e01013a82ca223b4dc572da 100644 (file)
@@ -2162,6 +2162,18 @@ int paircmp(VALUE_PAIR *one, VALUE_PAIR *two)
                compare = two->vp_integer - one->vp_integer;
                break;
 
+       case PW_TYPE_INTEGER64:
+               /*
+                *      Don't want integer overflow!
+                */
+               if (two->vp_integer64 < one->vp_integer64) {
+                       compare = -1;
+               } else if (two->vp_integer64 > one->vp_integer64) {
+                       compare = +1;
+               } else {
+                       compare = 0;
+               }
+               break;
        case PW_TYPE_IPADDR:
                compare = ntohl(two->vp_ipaddr) - ntohl(one->vp_ipaddr);
                break;
index e6f29b62276bd47b4391590d0a168701e309d68d..b644fd7583431587585a37b92416c6a250536293 100644 (file)
@@ -230,6 +230,18 @@ int radius_compare_vps(REQUEST *request, VALUE_PAIR *check, VALUE_PAIR *vp)
                case PW_TYPE_INTEGER:
                        ret = vp->vp_integer - check->vp_integer;
                        break;
+               case PW_TYPE_INTEGER64:
+                       /*
+                        *      Don't want integer overflow!
+                        */
+                       if (vp->vp_integer64 < check->vp_integer64) {
+                               ret = -1;
+                       } else if (vp->vp_integer64 > check->vp_integer64) {
+                               ret = +1;
+                       } else {
+                               ret = 0;
+                       }
+                       break;
                case PW_TYPE_DATE:
                        ret = vp->vp_date - check->vp_date;
                        break;