From: Alan T. DeKok Date: Wed, 23 Sep 2020 15:33:49 +0000 (-0400) Subject: set data type from 'key' if necessary. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e18748153a307e2f08d7bbbe9c03466d711be4b3;p=thirdparty%2Ffreeradius-server.git set data type from 'key' if necessary. otherwise, check the data type of key against data_type --- diff --git a/src/modules/rlm_csv/rlm_csv.c b/src/modules/rlm_csv/rlm_csv.c index 7eca69cd6b7..e32364fb51b 100644 --- a/src/modules/rlm_csv/rlm_csv.c +++ b/src/modules/rlm_csv/rlm_csv.c @@ -535,8 +535,13 @@ static int mod_bootstrap(void *instance, CONF_SECTION *conf) return -1; } + if (!inst->data_type_name || !*inst->data_type_name) { - inst->data_type = FR_TYPE_STRING; + if (inst->key && tmpl_is_attr(inst->key)) { + inst->data_type = tmpl_da(inst->key)->type; + } else { + inst->data_type = FR_TYPE_STRING; + } } else { inst->data_type = fr_table_value_by_str(fr_value_box_type_table, inst->data_type_name, FR_TYPE_INVALID); @@ -556,8 +561,15 @@ static int mod_bootstrap(void *instance, CONF_SECTION *conf) default: goto invalid_type; } + + if (inst->key && tmpl_is_attr(inst->key) && (tmpl_da(inst->key)->type != inst->data_type)) { + cf_log_err(conf, "The data type of 'key' does not match data_type '%s'", + inst->data_type_name); + return -1; + } } + /* * IP addresses go into tries. Everything else into binary tries. */