This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Harald Welte gerrit-no-reply at lists.osmocom.orgHarald Welte has submitted this change and it was merged. ( https://gerrit.osmocom.org/13914 ) Change subject: handle NULL return of rate_ctr_group_alloc() ...................................................................... handle NULL return of rate_ctr_group_alloc() Change-Id: Ieadded9c088ef8f86164400a60ce542e3c868e9d Related: OS#3701 --- M src/libosmo-mgcp/mgcp_conn.c M src/libosmo-mgcp/mgcp_protocol.c 2 files changed, 24 insertions(+), 4 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libosmo-mgcp/mgcp_conn.c b/src/libosmo-mgcp/mgcp_conn.c index af5426f..5300351 100644 --- a/src/libosmo-mgcp/mgcp_conn.c +++ b/src/libosmo-mgcp/mgcp_conn.c @@ -81,7 +81,7 @@ } /* Initialize rtp connection struct with default values */ -static void mgcp_rtp_conn_init(struct mgcp_conn_rtp *conn_rtp, struct mgcp_conn *conn) +static int mgcp_rtp_conn_init(struct mgcp_conn_rtp *conn_rtp, struct mgcp_conn *conn) { struct mgcp_rtp_end *end = &conn_rtp->end; /* FIXME: Each new rate counter group requires an unique index. At the @@ -109,12 +109,17 @@ end->maximum_packet_time = -1; conn_rtp->rate_ctr_group = rate_ctr_group_alloc(conn, &rate_ctr_group_desc, rate_ctr_index); + if (!conn_rtp->rate_ctr_group) + return -1; + conn_rtp->state.in_stream.err_ts_ctr = &conn_rtp->rate_ctr_group->ctr[IN_STREAM_ERR_TSTMP_CTR]; conn_rtp->state.out_stream.err_ts_ctr = &conn_rtp->rate_ctr_group->ctr[OUT_STREAM_ERR_TSTMP_CTR]; rate_ctr_index++; /* Make sure codec table is reset */ mgcp_codec_reset_all(conn_rtp); + + return 0; } /* Cleanup rtp connection struct */ @@ -175,7 +180,10 @@ switch (type) { case MGCP_CONN_TYPE_RTP: - mgcp_rtp_conn_init(&conn->u.rtp, conn); + if (mgcp_rtp_conn_init(&conn->u.rtp, conn) < 0) { + talloc_free(conn); + return NULL; + } break; default: /* NOTE: This should never be called with an diff --git a/src/libosmo-mgcp/mgcp_protocol.c b/src/libosmo-mgcp/mgcp_protocol.c index 3a4e396..807e34a 100644 --- a/src/libosmo-mgcp/mgcp_protocol.c +++ b/src/libosmo-mgcp/mgcp_protocol.c @@ -1496,7 +1496,7 @@ return 0; } -static void alloc_mgcp_rate_counters(struct mgcp_trunk_config *trunk, void *ctx) +static int alloc_mgcp_rate_counters(struct mgcp_trunk_config *trunk, void *ctx) { /* FIXME: Each new rate counter group requires a unique index. At the * moment we generate an index using a counter, but perhaps there is @@ -1508,25 +1508,34 @@ if (trunk->mgcp_crcx_ctr_group == NULL) { trunk->mgcp_crcx_ctr_group = rate_ctr_group_alloc(ctx, &mgcp_crcx_ctr_group_desc, crcx_rate_ctr_index); + if (!trunk->mgcp_crcx_ctr_group) + return -1; talloc_set_destructor(trunk->mgcp_crcx_ctr_group, free_rate_counter_group); crcx_rate_ctr_index++; } if (trunk->mgcp_mdcx_ctr_group == NULL) { trunk->mgcp_mdcx_ctr_group = rate_ctr_group_alloc(ctx, &mgcp_mdcx_ctr_group_desc, mdcx_rate_ctr_index); + if (!trunk->mgcp_mdcx_ctr_group) + return -1; talloc_set_destructor(trunk->mgcp_mdcx_ctr_group, free_rate_counter_group); mdcx_rate_ctr_index++; } if (trunk->mgcp_dlcx_ctr_group == NULL) { trunk->mgcp_dlcx_ctr_group = rate_ctr_group_alloc(ctx, &mgcp_dlcx_ctr_group_desc, dlcx_rate_ctr_index); + if (!trunk->mgcp_dlcx_ctr_group) + return -1; talloc_set_destructor(trunk->mgcp_dlcx_ctr_group, free_rate_counter_group); dlcx_rate_ctr_index++; } if (trunk->all_rtp_conn_stats == NULL) { trunk->all_rtp_conn_stats = rate_ctr_group_alloc(ctx, &all_rtp_conn_rate_ctr_group_desc, all_rtp_conn_rate_ctr_index); + if (!trunk->all_rtp_conn_stats) + return -1; talloc_set_destructor(trunk->all_rtp_conn_stats, free_rate_counter_group); all_rtp_conn_rate_ctr_index++; } + return 0; } /*! allocate configuration with default values. @@ -1566,7 +1575,10 @@ cfg->trunk.audio_send_name = 1; cfg->trunk.omit_rtcp = 0; mgcp_trunk_set_keepalive(&cfg->trunk, MGCP_KEEPALIVE_ONCE); - alloc_mgcp_rate_counters(&cfg->trunk, cfg); + if (alloc_mgcp_rate_counters(&cfg->trunk, cfg) < 0) { + talloc_free(cfg); + return NULL; + } INIT_LLIST_HEAD(&cfg->trunks); -- To view, visit https://gerrit.osmocom.org/13914 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-MessageType: merged Gerrit-Change-Id: Ieadded9c088ef8f86164400a60ce542e3c868e9d Gerrit-Change-Number: 13914 Gerrit-PatchSet: 2 Gerrit-Owner: Harald Welte <laforge at gnumonks.org> Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org> Gerrit-Reviewer: Jenkins Builder (1000002) Gerrit-Reviewer: Pau Espin Pedrol <pespin at sysmocom.de> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190508/8747f1a8/attachment.htm>