From a1b372441fa1cc2557224d1714f5943d0cb88ab0 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Tue, 20 Sep 2022 08:53:18 +0800 Subject: [PATCH] res_prometheus: Do not crash on invisible bridges Avoid crashing by skipping invisible bridges and checking the snapshot for a null pointer. In effect this is how the bridges are enumerated in res/ari/resource_bridges.c already. ASTERISK-30239 ASTERISK-30237 Change-Id: I58ef9f44036feded5966b5fc70ae754f8182883d --- res/prometheus/bridges.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/res/prometheus/bridges.c b/res/prometheus/bridges.c index 5a916049e0..505dab8397 100644 --- a/res/prometheus/bridges.c +++ b/res/prometheus/bridges.c @@ -125,7 +125,17 @@ static void bridges_scrape_cb(struct ast_str **response) /* Bridge dependent values */ it_bridges = ao2_iterator_init(bridges, 0); for (i = 0; (bridge = ao2_iterator_next(&it_bridges)); ao2_ref(bridge, -1), i++) { - struct ast_bridge_snapshot *snapshot = ast_bridge_get_snapshot(bridge); + struct ast_bridge_snapshot *snapshot; + + /* Invisible bridges don't get shown externally and have no snapshot */ + if (ast_test_flag(&bridge->feature_flags, AST_BRIDGE_FLAG_INVISIBLE)) { + continue; + } + + snapshot = ast_bridge_get_snapshot(bridge); + if (!snapshot) { + continue; + } for (j = 0; j < ARRAY_LEN(bridge_metric_defs); j++) { int index = i * ARRAY_LEN(bridge_metric_defs) + j; -- 2.47.2