json-builder: handle allocation failures in vasprintf

This commit is contained in:
Wim Taymans 2026-03-01 12:40:34 +01:00
parent 8ceb671cc8
commit 06f336a581

View file

@ -279,10 +279,11 @@ void spa_json_builder_object_stringv(struct spa_json_builder *b,
const char *key, const char *fmt, va_list va) const char *key, const char *fmt, va_list va)
{ {
char *val; char *val;
vasprintf(&val, fmt, va); if (vasprintf(&val, fmt, va) > 0) {
spa_json_builder_object_string(b, key, val); spa_json_builder_object_string(b, key, val);
free(val); free(val);
} }
}
SPA_API_JSON_BUILDER SPA_PRINTF_FUNC(3,4) SPA_API_JSON_BUILDER SPA_PRINTF_FUNC(3,4)
void spa_json_builder_object_stringf(struct spa_json_builder *b, void spa_json_builder_object_stringf(struct spa_json_builder *b,
@ -346,11 +347,12 @@ void spa_json_builder_object_valuef(struct spa_json_builder *b,
va_list va; va_list va;
char *val; char *val;
va_start(va, fmt); va_start(va, fmt);
vasprintf(&val, fmt, va); if (vasprintf(&val, fmt, va) > 0) {
va_end(va);
spa_json_builder_object_value(b, recurse, key, val); spa_json_builder_object_value(b, recurse, key, val);
free(val); free(val);
} }
va_end(va);
}
/* array functions */ /* array functions */
@ -408,11 +410,12 @@ void spa_json_builder_array_valuef(struct spa_json_builder *b, bool recurse, con
va_list va; va_list va;
char *val; char *val;
va_start(va, fmt); va_start(va, fmt);
vasprintf(&val, fmt, va); if (vasprintf(&val, fmt, va) > 0) {
va_end(va);
spa_json_builder_object_value(b, recurse, NULL, val); spa_json_builder_object_value(b, recurse, NULL, val);
free(val); free(val);
} }
va_end(va);
}
SPA_API_JSON_BUILDER char *spa_json_builder_reformat(const char *json, uint32_t flags) SPA_API_JSON_BUILDER char *spa_json_builder_reformat(const char *json, uint32_t flags)
{ {