]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
decode array of structs (whew!)
authorAlan T. DeKok <aland@freeradius.org>
Fri, 18 Mar 2022 00:05:17 +0000 (20:05 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Fri, 18 Mar 2022 13:16:29 +0000 (09:16 -0400)
src/protocols/dhcpv4/decode.c

index 00f1dd1b9c5b974e67c12cebe85786e8048a9999..8721647bb13847db019a6975e5bcecff8b84f3c2 100644 (file)
@@ -428,6 +428,19 @@ static ssize_t decode_array(TALLOC_CTX *ctx, fr_pair_list_t *out, fr_dict_attr_t
         */
        if (da_is_split_prefix(parent)) element_len = 8;
 
+       /*
+        *      Array of structs.
+        */
+       if (parent->type == FR_TYPE_STRUCT) {
+               while (p < end) {
+                       slen = decode_value(ctx, out, parent, p, end - p, decode_ctx, false);
+                       if (slen < 0) return slen - (p - data);
+                       p += slen;
+               }
+
+               return data_len;
+       }
+
        if (element_len > 0) {
                size_t num_elements = (end - p) / element_len;