]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
resolve tmpls before returning them to LDAP
authorAlan T. DeKok <aland@freeradius.org>
Mon, 28 Apr 2025 19:51:35 +0000 (15:51 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 28 Apr 2025 20:48:13 +0000 (16:48 -0400)
src/lib/ldap/map.c

index 956b436c0f284d2cb4e87c59845ae5f598be1357..2d94ed0d5cc6856f26946e1976c3d68907718486 100644 (file)
@@ -224,13 +224,20 @@ int fr_ldap_map_verify(map_t *map, UNUSED void *instance)
        case TMPL_TYPE_XLAT_UNRESOLVED:
        case TMPL_TYPE_ATTR:
        case TMPL_TYPE_EXEC:
-       case TMPL_TYPE_DATA_UNRESOLVED:
+       case TMPL_TYPE_DATA:
                break;
 
        case TMPL_TYPE_ATTR_UNRESOLVED:
                cf_log_err(map->ci, "Unknown attribute %s", tmpl_attr_tail_unresolved(map->rhs));
                return -1;
 
+       case TMPL_TYPE_DATA_UNRESOLVED:
+               if (tmpl_resolve(map->rhs, NULL) < 0) {
+                       cf_log_err(map->ci, "Invalid data %s", map->rhs->name);
+                       return -1;
+               }
+               break;
+
        default:
                cf_log_err(map->ci, "Right hand side of map must be an xlat, attribute, exec, or literal, not a %s",
                           tmpl_type_to_str(map->rhs->type));