diff --git a/spa/plugins/alsa/acp/alsa-mixer.c b/spa/plugins/alsa/acp/alsa-mixer.c index c656e3357..e19700ecb 100644 --- a/spa/plugins/alsa/acp/alsa-mixer.c +++ b/spa/plugins/alsa/acp/alsa-mixer.c @@ -4742,6 +4742,10 @@ static int profile_verify(pa_alsa_profile *p) { int count = 0; f = open_memstream(&ptr, &size); + if (f == NULL) { + pa_log("failed to open memstream: %m"); + return -1; + } if (p->output_mappings) PA_IDXSET_FOREACH(m, p->output_mappings, idx) { @@ -4816,6 +4820,8 @@ void pa_alsa_decibel_fix_dump(pa_alsa_decibel_fix *db_fix) { size_t size; f = open_memstream(&ptr, &size); + if (f == NULL) + return; pa_assert(db_fix->min_step <= db_fix->max_step); nsteps = db_fix->max_step - db_fix->min_step + 1; diff --git a/src/modules/module-protocol-pulse/extensions/ext-stream-restore.c b/src/modules/module-protocol-pulse/extensions/ext-stream-restore.c index cb684cb3e..2524687f4 100644 --- a/src/modules/module-protocol-pulse/extensions/ext-stream-restore.c +++ b/src/modules/module-protocol-pulse/extensions/ext-stream-restore.c @@ -252,7 +252,9 @@ static int do_extension_stream_restore_write(struct client *client, uint32_t com if (name == NULL || name[0] == '\0') return -EPROTO; - f = open_memstream(&ptr, &size); + if ((f = open_memstream(&ptr, &size)) == NULL) + return -errno; + fprintf(f, "{"); fprintf(f, " \"mute\": %s", mute ? "true" : "false"); if (vol.channels > 0) { diff --git a/src/modules/module-protocol-pulse/format.c b/src/modules/module-protocol-pulse/format.c index f680e55d3..2e63ce73e 100644 --- a/src/modules/module-protocol-pulse/format.c +++ b/src/modules/module-protocol-pulse/format.c @@ -619,7 +619,9 @@ static int add_int(struct format_info *info, const char *k, struct spa_pod *para size_t size; FILE *f; - f = open_memstream(&ptr, &size); + if ((f = open_memstream(&ptr, &size)) == NULL) + return -errno; + fprintf(f, "["); for (i = 1; i < n_values; i++) fprintf(f, "%s %d", i == 1 ? "" : ",", values[i]); diff --git a/src/modules/module-protocol-pulse/message-handler.c b/src/modules/module-protocol-pulse/message-handler.c index c54bcecc1..8763ea74c 100644 --- a/src/modules/module-protocol-pulse/message-handler.c +++ b/src/modules/module-protocol-pulse/message-handler.c @@ -65,7 +65,7 @@ static int bluez_card_object_message_handler(struct pw_manager *m, struct pw_man r = open_memstream(response, &size); if (r == NULL) - return -ENOMEM; + return -errno; fputc('[', r); for (i = 0; i < n_codecs; ++i) { @@ -100,7 +100,7 @@ static int core_object_message_handler(struct pw_manager *m, struct pw_manager_o r = open_memstream(response, &size); if (r == NULL) - return -ENOMEM; + return -errno; fputc('[', r); spa_list_for_each(o, &m->object_list, link) { diff --git a/src/modules/module-protocol-pulse/modules/module-always-sink.c b/src/modules/module-protocol-pulse/modules/module-always-sink.c index 20ac9b1d6..6250bd693 100644 --- a/src/modules/module-protocol-pulse/modules/module-always-sink.c +++ b/src/modules/module-protocol-pulse/modules/module-always-sink.c @@ -59,7 +59,9 @@ static int module_always_sink_load(struct client *client, struct module *module) const char *str; size_t size; - f = open_memstream(&args, &size); + if ((f = open_memstream(&args, &size)) == NULL) + return -errno; + fprintf(f, "{"); if ((str = pw_properties_get(module->props, "sink_name")) != NULL) fprintf(f, " sink.name = \"%s\"", str); diff --git a/src/modules/module-protocol-pulse/modules/module-echo-cancel.c b/src/modules/module-protocol-pulse/modules/module-echo-cancel.c index 42628f119..132051d35 100644 --- a/src/modules/module-protocol-pulse/modules/module-echo-cancel.c +++ b/src/modules/module-protocol-pulse/modules/module-echo-cancel.c @@ -72,7 +72,9 @@ static int module_echo_cancel_load(struct client *client, struct module *module) char *args; size_t size; - f = open_memstream(&args, &size); + if ((f = open_memstream(&args, &size)) == NULL) + return -errno; + fprintf(f, "{"); /* Can't just serialise this dict because the "null" method gets * interpreted as a JSON null */ diff --git a/src/modules/module-protocol-pulse/modules/module-ladspa-sink.c b/src/modules/module-protocol-pulse/modules/module-ladspa-sink.c index 9df350d12..d4b29fbb6 100644 --- a/src/modules/module-protocol-pulse/modules/module-ladspa-sink.c +++ b/src/modules/module-protocol-pulse/modules/module-ladspa-sink.c @@ -78,7 +78,9 @@ static int module_ladspa_sink_load(struct client *client, struct module *module) pw_properties_setf(data->capture_props, "pulse.module.id", "%u", module->index); pw_properties_setf(data->playback_props, "pulse.module.id", "%u", module->index); - f = open_memstream(&args, &size); + if ((f = open_memstream(&args, &size)) == NULL) + return -errno; + fprintf(f, "{"); pw_properties_serialize_dict(f, &module->props->dict, 0); fprintf(f, " filter.graph = {"); diff --git a/src/modules/module-protocol-pulse/modules/module-ladspa-source.c b/src/modules/module-protocol-pulse/modules/module-ladspa-source.c index 1ac2d5f90..a30791521 100644 --- a/src/modules/module-protocol-pulse/modules/module-ladspa-source.c +++ b/src/modules/module-protocol-pulse/modules/module-ladspa-source.c @@ -78,7 +78,9 @@ static int module_ladspa_source_load(struct client *client, struct module *modul pw_properties_setf(data->capture_props, "pulse.module.id", "%u", module->index); pw_properties_setf(data->playback_props, "pulse.module.id", "%u", module->index); - f = open_memstream(&args, &size); + if ((f = open_memstream(&args, &size)) == NULL) + return -errno; + fprintf(f, "{"); pw_properties_serialize_dict(f, &module->props->dict, 0); fprintf(f, " filter.graph = {"); diff --git a/src/modules/module-protocol-pulse/modules/module-loopback.c b/src/modules/module-protocol-pulse/modules/module-loopback.c index bceef11d2..2f012bc8e 100644 --- a/src/modules/module-protocol-pulse/modules/module-loopback.c +++ b/src/modules/module-protocol-pulse/modules/module-loopback.c @@ -75,7 +75,9 @@ static int module_loopback_load(struct client *client, struct module *module) pw_properties_setf(data->capture_props, "pulse.module.id", "%u", module->index); pw_properties_setf(data->playback_props, "pulse.module.id", "%u", module->index); - f = open_memstream(&args, &size); + if ((f = open_memstream(&args, &size)) == NULL) + return -errno; + fprintf(f, "{"); if (data->info.channels != 0) { fprintf(f, " audio.channels = %u", data->info.channels); diff --git a/src/modules/module-protocol-pulse/modules/module-remap-sink.c b/src/modules/module-protocol-pulse/modules/module-remap-sink.c index 880571a20..0a1d668d8 100644 --- a/src/modules/module-protocol-pulse/modules/module-remap-sink.c +++ b/src/modules/module-protocol-pulse/modules/module-remap-sink.c @@ -72,7 +72,9 @@ static int module_remap_sink_load(struct client *client, struct module *module) pw_properties_setf(data->capture_props, "pulse.module.id", "%u", module->index); pw_properties_setf(data->playback_props, "pulse.module.id", "%u", module->index); - f = open_memstream(&args, &size); + if ((f = open_memstream(&args, &size)) == NULL) + return -errno; + fprintf(f, "{"); pw_properties_serialize_dict(f, &module->props->dict, 0); fprintf(f, " capture.props = {"); diff --git a/src/modules/module-protocol-pulse/modules/module-remap-source.c b/src/modules/module-protocol-pulse/modules/module-remap-source.c index aee0173d1..984444df1 100644 --- a/src/modules/module-protocol-pulse/modules/module-remap-source.c +++ b/src/modules/module-protocol-pulse/modules/module-remap-source.c @@ -72,7 +72,9 @@ static int module_remap_source_load(struct client *client, struct module *module pw_properties_setf(data->capture_props, "pulse.module.id", "%u", module->index); pw_properties_setf(data->playback_props, "pulse.module.id", "%u", module->index); - f = open_memstream(&args, &size); + if ((f = open_memstream(&args, &size)) == NULL) + return -errno; + fprintf(f, "{"); pw_properties_serialize_dict(f, &module->props->dict, 0); fprintf(f, " capture.props = { "); diff --git a/src/modules/module-protocol-pulse/modules/module-roc-sink.c b/src/modules/module-protocol-pulse/modules/module-roc-sink.c index ac1477513..cb4c2bfb5 100644 --- a/src/modules/module-protocol-pulse/modules/module-roc-sink.c +++ b/src/modules/module-protocol-pulse/modules/module-roc-sink.c @@ -73,7 +73,9 @@ static int module_roc_sink_load(struct client *client, struct module *module) pw_properties_setf(data->sink_props, "pulse.module.id", "%u", module->index); - f = open_memstream(&args, &size); + if ((f = open_memstream(&args, &size)) == NULL) + return -errno; + fprintf(f, "{"); pw_properties_serialize_dict(f, &data->roc_props->dict, 0); fprintf(f, " } sink.props = {"); diff --git a/src/modules/module-protocol-pulse/modules/module-roc-source.c b/src/modules/module-protocol-pulse/modules/module-roc-source.c index 25cda043d..7ab083eaa 100644 --- a/src/modules/module-protocol-pulse/modules/module-roc-source.c +++ b/src/modules/module-protocol-pulse/modules/module-roc-source.c @@ -73,7 +73,9 @@ static int module_roc_source_load(struct client *client, struct module *module) pw_properties_setf(data->source_props, "pulse.module.id", "%u", module->index); - f = open_memstream(&args, &size); + if ((f = open_memstream(&args, &size)) == NULL) + return -errno; + fprintf(f, "{"); pw_properties_serialize_dict(f, &data->roc_props->dict, 0); fprintf(f, " } source.props = {"); diff --git a/src/modules/module-protocol-pulse/modules/module-simple-protocol-tcp.c b/src/modules/module-protocol-pulse/modules/module-simple-protocol-tcp.c index 78a79579f..76025a73e 100644 --- a/src/modules/module-protocol-pulse/modules/module-simple-protocol-tcp.c +++ b/src/modules/module-protocol-pulse/modules/module-simple-protocol-tcp.c @@ -68,7 +68,9 @@ static int module_simple_protocol_tcp_load(struct client *client, struct module uint32_t i; FILE *f; - f = open_memstream(&args, &size); + if ((f = open_memstream(&args, &size)) == NULL) + return -errno; + fprintf(f, "{"); if (data->info.rate != 0) fprintf(f, " \"audio.rate\": %u,", data->info.rate); diff --git a/src/modules/module-protocol-pulse/modules/module-tunnel-sink.c b/src/modules/module-protocol-pulse/modules/module-tunnel-sink.c index 29eead8ec..82786e2b2 100644 --- a/src/modules/module-protocol-pulse/modules/module-tunnel-sink.c +++ b/src/modules/module-protocol-pulse/modules/module-tunnel-sink.c @@ -76,7 +76,9 @@ static int module_tunnel_sink_load(struct client *client, struct module *module) pw_properties_setf(data->stream_props, "pulse.module.id", "%u", module->index); - f = open_memstream(&args, &size); + if ((f = open_memstream(&args, &size)) == NULL) + return -errno; + fprintf(f, "{"); pw_properties_serialize_dict(f, &module->props->dict, 0); fprintf(f, " pulse.server.address = \"%s\" ", server); diff --git a/src/modules/module-protocol-pulse/modules/module-tunnel-source.c b/src/modules/module-protocol-pulse/modules/module-tunnel-source.c index 25e384055..987a300d2 100644 --- a/src/modules/module-protocol-pulse/modules/module-tunnel-source.c +++ b/src/modules/module-protocol-pulse/modules/module-tunnel-source.c @@ -76,7 +76,9 @@ static int module_tunnel_source_load(struct client *client, struct module *modul server = pw_properties_get(module->props, "server"); - f = open_memstream(&args, &size); + if ((f = open_memstream(&args, &size)) == NULL) + return -errno; + fprintf(f, "{"); pw_properties_serialize_dict(f, &module->props->dict, 0); fprintf(f, " pulse.server.address = \"%s\" ", server); diff --git a/src/modules/module-protocol-pulse/modules/module-x11-bell.c b/src/modules/module-protocol-pulse/modules/module-x11-bell.c index 51fa61213..a71f9e36f 100644 --- a/src/modules/module-protocol-pulse/modules/module-x11-bell.c +++ b/src/modules/module-protocol-pulse/modules/module-x11-bell.c @@ -59,7 +59,9 @@ static int module_x11_bell_load(struct client *client, struct module *module) const char *str; size_t size; - f = open_memstream(&args, &size); + if ((f = open_memstream(&args, &size)) == NULL) + return -errno; + fprintf(f, "{"); if ((str = pw_properties_get(module->props, "sink")) != NULL) fprintf(f, " sink.name = \"%s\"", str); diff --git a/src/modules/module-raop-discover.c b/src/modules/module-raop-discover.c index 514a7fb21..4c519d191 100644 --- a/src/modules/module-raop-discover.c +++ b/src/modules/module-raop-discover.c @@ -321,7 +321,11 @@ static void resolver_cb(AvahiServiceResolver *r, AvahiIfIndex interface, AvahiPr } - f = open_memstream(&args, &size); + if ((f = open_memstream(&args, &size)) == NULL) { + pw_log_error("Can't open memstream: %m"); + goto done; + } + fprintf(f, "{"); pw_properties_serialize_dict(f, &props->dict, 0); fprintf(f, " stream.props = {"); diff --git a/src/modules/module-raop/rtsp-client.c b/src/modules/module-raop/rtsp-client.c index 9bb888773..c241bf40d 100644 --- a/src/modules/module-raop/rtsp-client.c +++ b/src/modules/module-raop/rtsp-client.c @@ -478,7 +478,8 @@ int pw_rtsp_client_send(struct pw_rtsp_client *client, struct message *msg; int cseq; - f = open_memstream((char**)&msg, &len); + if ((f = open_memstream((char**)&msg, &len)) == NULL) + return -errno; fseek(f, sizeof(*msg), SEEK_SET); diff --git a/src/modules/module-zeroconf-discover.c b/src/modules/module-zeroconf-discover.c index 0ba531fd4..786a0132b 100644 --- a/src/modules/module-zeroconf-discover.c +++ b/src/modules/module-zeroconf-discover.c @@ -329,7 +329,11 @@ static void resolver_cb(AvahiServiceResolver *r, AvahiIfIndex interface, AvahiPr _("%s on %s"), desc, fqdn); } - f = open_memstream(&args, &size); + if ((f = open_memstream(&args, &size)) == NULL) { + pw_log_error("Can't open memstream: %m"); + goto done; + } + fprintf(f, "{"); pw_properties_serialize_dict(f, &props->dict, 0); fprintf(f, " stream.props = {"); diff --git a/src/tools/pw-loopback.c b/src/tools/pw-loopback.c index ebae79cd5..00fafd093 100644 --- a/src/tools/pw-loopback.c +++ b/src/tools/pw-loopback.c @@ -202,7 +202,11 @@ int main(int argc, char *argv[]) } - f = open_memstream(&args, &size); + if ((f = open_memstream(&args, &size)) == NULL) { + fprintf(stderr, "can't open memstream: %m\n"); + goto exit; + } + fprintf(f, "{"); if (opt_remote != NULL)