From dd319b5db7e75b84ec10b60fa7b71e367b973166 Mon Sep 17 00:00:00 2001 From: Fahnenfluchtige Date: Tue, 18 Mar 2025 12:25:14 +0300 Subject: [PATCH 1/3] Adding error-cheking --- ngx_rtmp_relay_module.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ngx_rtmp_relay_module.c b/ngx_rtmp_relay_module.c index b0f5fecc1..e90a8290e 100644 --- a/ngx_rtmp_relay_module.c +++ b/ngx_rtmp_relay_module.c @@ -1292,8 +1292,13 @@ ngx_rtmp_relay_on_status(ngx_rtmp_session_t *s, ngx_rtmp_header_t *h, ngx_rtmp_receive_amf(s, in, in_elts_meta, sizeof(in_elts_meta) / sizeof(in_elts_meta[0])); } else { - ngx_rtmp_receive_amf(s, in, in_elts, - sizeof(in_elts) / sizeof(in_elts[0])); + if (ngx_rtmp_receive_amf(s, in, in_elts, + sizeof(in_elts) / sizeof(in_elts[0]))) + { + ngx_log_error(NGX_LOG_ERR, s->connection->log, 0, + "relay: ngx_rtmp_receive_amf failed"); + return NGX_OK; + } } ngx_log_debug3(NGX_LOG_DEBUG_RTMP, s->connection->log, 0, From 686f7e894e8d4be354943592326dfeb9233443ab Mon Sep 17 00:00:00 2001 From: Fahnenfluchtige Date: Wed, 14 May 2025 19:49:36 +0300 Subject: [PATCH 2/3] Adding checking if ngx_aray_init returns NGX_ok --- ngx_rtmp.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ngx_rtmp.c b/ngx_rtmp.c index cde743202..fc0ef2414 100644 --- a/ngx_rtmp.c +++ b/ngx_rtmp.c @@ -449,7 +449,9 @@ ngx_rtmp_init_event_handlers(ngx_conf_t *cf, ngx_rtmp_core_main_conf_t *cmcf) *eh = ngx_rtmp_aggregate_message_handler; /* init amf callbacks */ - ngx_array_init(&cmcf->amf_arrays, cf->pool, 1, sizeof(ngx_hash_key_t)); + if (ngx_array_init(&cmcf->amf_arrays, cf->pool, 1, sizeof(ngx_hash_key_t)) != NGX_OK) { + return NGX_ERROR; + } h = cmcf->amf.elts; for(n = 0; n < cmcf->amf.nelts; ++n, ++h) { From 8bb1420f623c3b8911f17d9614d206db04c62d69 Mon Sep 17 00:00:00 2001 From: Fahnenfluchtige Date: Tue, 10 Jun 2025 12:12:32 +0300 Subject: [PATCH 3/3] fix: error-handling after ngx_array_push --- ngx_rtmp_relay_module.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ngx_rtmp_relay_module.c b/ngx_rtmp_relay_module.c index e90a8290e..4eb04ac3b 100644 --- a/ngx_rtmp_relay_module.c +++ b/ngx_rtmp_relay_module.c @@ -1680,14 +1680,32 @@ ngx_rtmp_relay_postconfiguration(ngx_conf_t *cf) ch = ngx_array_push(&cmcf->amf); + if (ch == NULL) { + ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, + "relay: failed to add amf handler"); + return NGX_ERROR; + } + ngx_str_set(&ch->name, "_result"); ch->handler = ngx_rtmp_relay_on_result; ch = ngx_array_push(&cmcf->amf); + if (ch == NULL) { + ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, + "relay: failed to add amf handler"); + return NGX_ERROR; + } + ngx_str_set(&ch->name, "_error"); ch->handler = ngx_rtmp_relay_on_error; ch = ngx_array_push(&cmcf->amf); + if (ch == NULL) { + ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, + "relay: failed to add amf handler"); + return NGX_ERROR; + } + ngx_str_set(&ch->name, "onStatus"); ch->handler = ngx_rtmp_relay_on_status;