diff --git a/spa/plugins/alsa/alsa-pcm.c b/spa/plugins/alsa/alsa-pcm.c index ca31366dc..09248c6ed 100644 --- a/spa/plugins/alsa/alsa-pcm.c +++ b/spa/plugins/alsa/alsa-pcm.c @@ -48,6 +48,8 @@ static struct card *ensure_card(uint32_t index, bool ucm, bool ucm_split) return c; c = calloc(1, sizeof(*c)); + if (c == NULL) + return NULL; c->ref = 1; c->index = index; diff --git a/src/tools/pw-dot.c b/src/tools/pw-dot.c index addabb976..98d4470f2 100644 --- a/src/tools/pw-dot.c +++ b/src/tools/pw-dot.c @@ -105,23 +105,25 @@ static void dot_data_clear(struct dot_data * dd) dd->size = 0; } -static void dot_data_ensure_max_size (struct dot_data * dd, size_t size) +static bool dot_data_ensure_max_size (struct dot_data * dd, size_t size) { size_t new_size = dd->size + size + 1; if (new_size > dd->max_size) { size_t next_size = new_size * 2; void *p = realloc (dd->data, next_size); if (p == NULL) - return; + return false; dd->data = p; dd->max_size = next_size; } + return true; } static void dot_data_add_uint32 (struct dot_data * dd, uint32_t value) { int size; - dot_data_ensure_max_size (dd, 16); + if (!dot_data_ensure_max_size (dd, 16)) + return; size = snprintf (dd->data + dd->size, dd->max_size - dd->size, "%u", value); dd->size += size; } @@ -129,7 +131,8 @@ static void dot_data_add_uint32 (struct dot_data * dd, uint32_t value) static void dot_data_add_string (struct dot_data * dd, const char *value) { int size; - dot_data_ensure_max_size (dd, strlen (value)); + if (!dot_data_ensure_max_size (dd, strlen (value))) + return; size = snprintf (dd->data + dd->size, dd->max_size - dd->size, "%s", value); dd->size += size; } @@ -974,6 +977,10 @@ static void registry_event_global(void *data, uint32_t id, uint32_t permissions, /* set the global data */ g = calloc(1, sizeof(struct global)); + if (g == NULL) { + pw_proxy_destroy(proxy); + return; + } g->data = d; g->proxy = proxy;