laforge submitted this change.

View Change

Approvals: Jenkins Builder: Verified fixeria: Looks good to me, approved pespin: Looks good to me, but someone else must approve
stats: Avoid NULL pointer deref in allocation failure paths.

We should either handle talloc returning NULL, or we should
OSMO_ASSERT(). Doing neither of the two is a bad idea.

Change-Id: I5e8d1cc22cf597f7f50c0f92bf86cb1f1413434c
---
M src/stats.c
M src/stats_statsd.c
2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/stats.c b/src/stats.c
index 7b25ab1..16e6f62 100644
--- a/src/stats.c
+++ b/src/stats.c
@@ -214,7 +214,9 @@
{
struct osmo_stats_reporter *srep;
srep = talloc_zero(osmo_stats_ctx, struct osmo_stats_reporter);
- OSMO_ASSERT(srep);
+ if (!srep)
+ return NULL;
+
srep->type = type;
if (name)
srep->name = talloc_strdup(srep, name);
@@ -486,6 +488,8 @@
}

srep->buffer = msgb_alloc(buffer_size, "stats buffer");
+ if (!srep->buffer)
+ goto failed;

return 0;

@@ -569,6 +573,8 @@
{
struct osmo_stats_reporter *srep;
srep = osmo_stats_reporter_alloc(OSMO_STATS_REPORTER_LOG, name);
+ if (!srep)
+ return NULL;

srep->have_net_config = 0;

diff --git a/src/stats_statsd.c b/src/stats_statsd.c
index b89ec92..b27baff 100644
--- a/src/stats_statsd.c
+++ b/src/stats_statsd.c
@@ -54,6 +54,8 @@
{
struct osmo_stats_reporter *srep;
srep = osmo_stats_reporter_alloc(OSMO_STATS_REPORTER_STATSD, name);
+ if (!srep)
+ return NULL;

srep->have_net_config = 1;


To view, visit change 28068. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I5e8d1cc22cf597f7f50c0f92bf86cb1f1413434c
Gerrit-Change-Number: 28068
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge@osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-Reviewer: pespin <pespin@sysmocom.de>
Gerrit-MessageType: merged