]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
better error message when parsing time deltas
authorAlan T. DeKok <aland@freeradius.org>
Sat, 1 Feb 2025 16:47:39 +0000 (11:47 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Sat, 1 Feb 2025 16:47:39 +0000 (11:47 -0500)
"token not found" is technically correct, but isn't helpful

src/lib/util/time.c
src/tests/unit/data_types.txt

index 232876f37c5fe739f8e4f9098600c519e38be8c1..6c8e72e674a65b1324b5b59fb9b757612c27ad6b 100644 (file)
@@ -226,9 +226,16 @@ fr_slen_t fr_time_delta_from_substr(fr_time_delta_t *out, fr_sbuff_t *in, fr_tim
        negative = fr_sbuff_is_char(&our_in, '-');
 
        if (fr_sbuff_out(&sberr, &integer, &our_in) < 0) {
+               char const *err;
+
        num_error:
-               fr_strerror_printf("Failed parsing time_delta: %s",
-                                  fr_table_str_by_value(sbuff_parse_error_table, sberr, "<INVALID>"));
+               if (sberr != FR_SBUFF_PARSE_ERROR_NOT_FOUND) {
+                       err = fr_table_str_by_value(sbuff_parse_error_table, sberr, "<INVALID>");
+               } else {
+                       err = "Invalid text, input should be an integer";
+               }
+
+               fr_strerror_printf("Failed parsing time_delta: %s", err);
                FR_SBUFF_ERROR_RETURN(&our_in);
        }
        fr_sbuff_out_by_longest_prefix(&match_len, &res, fr_time_precision_table, &our_in, FR_TIME_RES_INVALID);
index 343cc93a3ed21b0dc929af0f6d2428d5024926f6..b956b244999399de1035ac238680ea790cdee8c4 100644 (file)
@@ -31,6 +31,9 @@ match 1
 value time_delta 2.4
 match 2.4
 
+value time_delta yes
+match Failed parsing time_delta: Invalid text, input should be an integer
+
 value time_delta 1ms
 match 0.001
 
@@ -244,4 +247,4 @@ encode-dns-label www_foo.com
 match Invalid character 0x5f in label
 
 count
-match 120
+match 122