]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
use scale function instead of inline code
authorAlan T. DeKok <aland@freeradius.org>
Thu, 28 Oct 2021 12:51:04 +0000 (08:51 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Thu, 28 Oct 2021 13:03:20 +0000 (09:03 -0400)
the scale function also checks for overflow, and clamps the
output.

src/lib/util/value.c

index 4bbbb8da3cae9d2a0dfba4bbcd4ccae64477cd02..3483332a399c2ef9892f7feccc195e798f46fe1b 100644 (file)
@@ -1878,28 +1878,7 @@ ssize_t fr_value_box_from_network(TALLOC_CTX *ctx,
 
                FR_DBUFF_OUT_UINT64V_RETURN(&date, &work_dbuff, length);
 
-               switch (precision) {
-               case FR_TIME_RES_SEC: /* external seconds, internal nanoseconds */
-                       date *= NSEC;
-                       break;
-
-               case FR_TIME_RES_CSEC:
-                       date *= (NSEC / CSEC);
-                       break;
-
-               case FR_TIME_RES_MSEC:
-                       date *= (NSEC / MSEC);
-                       break;
-
-               case FR_TIME_RES_USEC:
-                       date *= (NSEC / USEC);
-                       break;
-
-               case FR_TIME_RES_NSEC:
-                       break;
-               }
-
-               dst->vb_date = fr_unix_time_wrap(date);
+               dst->vb_date = fr_unix_time_wrap(fr_time_scale(date, precision));
        }
                break;