channelstorage_cpp: Fix fallback return value in channelstorage callback

callback returned the last iterated channel when no match existed, causing invalid channel references and potential double frees. Updated to correctly return NULL when there is no match.

Resolves: #1609
This commit is contained in:
phoneben
2025-11-26 14:00:21 +02:00
parent 724f4cb6e8
commit 8dec33f963
+2 -3
View File
@@ -172,9 +172,8 @@ static struct ast_channel *callback(struct ast_channelstorage_instance *driver,
rdlock(driver);
}
for (it = getdb(driver).begin(); it != getdb(driver).end(); it++) {
chan = it->second;
if (cb_fn(chan, arg, data, ao2_flags) == (CMP_MATCH | CMP_STOP)) {
ao2_bump(chan);
if (cb_fn(it->second, arg, data, ao2_flags) == (CMP_MATCH | CMP_STOP)) {
chan = ao2_bump(it->second);
break;
}
}