aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--debian/libwsutil0.symbols1
-rw-r--r--wsutil/json_dumper.c15
-rw-r--r--wsutil/json_dumper.h8
3 files changed, 20 insertions, 4 deletions
diff --git a/debian/libwsutil0.symbols b/debian/libwsutil0.symbols
index 6146492468..427d0644f7 100644
--- a/debian/libwsutil0.symbols
+++ b/debian/libwsutil0.symbols
@@ -111,6 +111,7 @@ libwsutil.so.0 libwsutil0 #MINVER#
json_dumper_set_member_name@Base 2.9.0
json_dumper_value_anyf@Base 2.9.0
json_dumper_value_string@Base 2.9.0
+ json_dumper_value_va_list@Base 2.9.1
json_dumper_write_base64@Base 2.9.1
json_parse@Base 2.9.0
json_validate@Base 2.9.0
diff --git a/wsutil/json_dumper.c b/wsutil/json_dumper.c
index 5162b6b8c9..43db64ec64 100644
--- a/wsutil/json_dumper.c
+++ b/wsutil/json_dumper.c
@@ -306,21 +306,28 @@ json_dumper_value_string(json_dumper *dumper, const char *value)
}
void
-json_dumper_value_anyf(json_dumper *dumper, const char *format, ...)
+json_dumper_value_va_list(json_dumper *dumper, const char *format, va_list ap)
{
- va_list ap;
if (!json_dumper_check_state(dumper, JSON_DUMPER_SET_VALUE, JSON_DUMPER_TYPE_VALUE)) {
return;
}
prepare_token(dumper);
- va_start(ap, format);
vfprintf(dumper->output_file, format, ap);
- va_end(ap);
dumper->state[dumper->current_depth] = JSON_DUMPER_TYPE_VALUE;
}
+void
+json_dumper_value_anyf(json_dumper *dumper, const char *format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ json_dumper_value_va_list(dumper, format, ap);
+ va_end(ap);
+}
+
gboolean
json_dumper_finish(json_dumper *dumper)
{
diff --git a/wsutil/json_dumper.h b/wsutil/json_dumper.h
index bc0d4cb010..f2ea2c58ba 100644
--- a/wsutil/json_dumper.h
+++ b/wsutil/json_dumper.h
@@ -87,6 +87,14 @@ WS_DLL_PUBLIC void
json_dumper_value_anyf(json_dumper *dumper, const char *format, ...)
G_GNUC_PRINTF(2, 3);
+/**
+ * Dump literal values (like json_dumper_value_anyf), but taking a va_list
+ * as parameter. String values MUST be properly quoted by the caller, no
+ * escaping occurs. Do not use with untrusted data.
+ */
+WS_DLL_PUBLIC void
+json_dumper_value_va_list(json_dumper *dumper, const char *format, va_list ap);
+
WS_DLL_PUBLIC void
json_dumper_begin_base64(json_dumper *dumper);