Through the simple expedient of mashing all characters to '.'
The length of the secret still leaks, but that's not too bad.
As escaping is only done for data types "string" and "octets",
other secret values will not be escaped. Perhaps we can fix that
later if we care.
.do_oct = true
};
+#ifdef __clang__
+#pragma clang diagnostic ignored "-Wgnu-designator"
+#endif
+
+/** Escape secret fields by simply mashing all data to '.'
+ *
+ * The length of the secret still leaks, but that is likely fine. Fixing that is more work.
+ *
+ */
+fr_sbuff_escape_rules_t fr_value_escape_secret = {
+ .name = "secret",
+ .subs = {
+ [ 0 ... 255 ] = '.',
+ },
+};
+
fr_sbuff_escape_rules_t fr_value_escape_single = {
.name = "single",
.chr = '\\',
extern fr_sbuff_escape_rules_t fr_value_escape_single;
extern fr_sbuff_escape_rules_t fr_value_escape_solidus;
extern fr_sbuff_escape_rules_t fr_value_escape_backtick;
+extern fr_sbuff_escape_rules_t fr_value_escape_secret;
extern fr_sbuff_escape_rules_t *fr_value_escape_by_quote[T_TOKEN_LAST];
extern fr_sbuff_escape_rules_t *fr_value_escape_by_char[UINT8_MAX + 1];