]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Fix tmpl_prints to print lists correctly
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Sat, 16 May 2015 17:36:39 +0000 (13:36 -0400)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Sat, 16 May 2015 20:08:51 +0000 (16:08 -0400)
src/main/tmpl.c

index 6b9a1ab36c60e7f73baa6d141767cc0b55558688..c54d8476b53eef85609727d41fa0c11c071080e7 100644 (file)
@@ -1577,6 +1577,19 @@ size_t tmpl_prints(char *out, size_t outlen, vp_tmpl_t const *vpt, DICT_ATTR con
                c = '`';
                break;
 
+       case TMPL_TYPE_LIST:
+               out[0] = '&';
+               if (vpt->tmpl_request == REQUEST_CURRENT) {
+                       snprintf(out + 1, outlen - 1, "%s",
+                                fr_int2str(pair_lists, vpt->tmpl_list, ""));
+               } else {
+                       snprintf(out + 1, outlen - 1, "%s.%s",
+                                fr_int2str(request_refs, vpt->tmpl_request, ""),
+                                fr_int2str(pair_lists, vpt->tmpl_list, ""));
+               }
+               len = strlen(out);
+               goto attr_inst_tag;
+
        case TMPL_TYPE_ATTR:
                out[0] = '&';
                if (vpt->tmpl_request == REQUEST_CURRENT) {
@@ -1597,6 +1610,7 @@ size_t tmpl_prints(char *out, size_t outlen, vp_tmpl_t const *vpt, DICT_ATTR con
 
                len = strlen(out);
 
+       attr_inst_tag:
                if ((vpt->tmpl_tag == TAG_ANY) && (vpt->tmpl_num == NUM_ANY)) return len;
 
                q = out + len;