]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
limit what types can be copied and escaped
authorAlan T. DeKok <aland@freeradius.org>
Sat, 8 Mar 2025 17:46:16 +0000 (12:46 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Sat, 8 Mar 2025 19:22:50 +0000 (14:22 -0500)
src/lib/util/value.c

index ff4f46a2b7786977e7565a7d2c3c6688541a2806..9461ebd413d08ceff1f27776bb4346fa235a5c78 100644 (file)
@@ -3815,6 +3815,16 @@ int fr_value_box_copy(TALLOC_CTX *ctx, fr_value_box_t *dst, const fr_value_box_t
                }
        }
                break;
+
+       case FR_TYPE_TLV:
+       case FR_TYPE_STRUCT:
+       case FR_TYPE_VSA:
+       case FR_TYPE_VENDOR:
+       case FR_TYPE_VALUE_BOX:
+       case FR_TYPE_VOID:
+       case FR_TYPE_MAX:
+               fr_strerror_printf("Cannot copy data type '%s'", fr_type_to_str(src->type));
+               return -1;
        }
 
        return 0;
@@ -5997,6 +6007,17 @@ int fr_value_box_escape_in_place(fr_value_box_t *vb, fr_value_box_escape_t escap
        case FR_TYPE_GROUP:
                return fr_value_box_list_escape_in_place(&vb->vb_group, escape, safe_for, uctx);
 
+       case FR_TYPE_NULL:
+       case FR_TYPE_TLV:
+       case FR_TYPE_STRUCT:
+       case FR_TYPE_VSA:
+       case FR_TYPE_VENDOR:
+       case FR_TYPE_VALUE_BOX:
+       case FR_TYPE_VOID:
+       case FR_TYPE_MAX:
+               fr_strerror_printf("Cannot escape data type '%s'", fr_type_to_str(vb->type));
+               return -1;
+
        default:
                break;
        }