From e98835e43780e92cced22ad1ae8a66e7f4b7672e Mon Sep 17 00:00:00 2001 From: David Vossel <dvossel@digium.com> Date: Wed, 9 Jun 2010 15:09:25 +0000 Subject: [PATCH] fixes crash in moh when cachertclasses flag is used The result for moh_register was not verified to guarantee the mohclass as added to the container. (closes issue #16993) Reported by: dmitri Patches: res_musiconhold_rtclass2.patch uploaded by dmitri (license 1001) moh_crash2.diff uploaded by dvossel (license 671) Tested by: dmitri git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@269271 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- res/res_musiconhold.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c index 4d2c9ec49a..3f28227570 100644 --- a/res/res_musiconhold.c +++ b/res/res_musiconhold.c @@ -1373,7 +1373,10 @@ static int local_ast_moh_start(struct ast_channel *chan, const char *mclass, con * has a pointer to a freed mohclass, so any operations involving the mohclass container would result in reading * invalid memory. */ - moh_register(mohclass, 0, DONT_UNREF); + if (moh_register(mohclass, 0, DONT_UNREF) == -1) { + mohclass = mohclass_unref(mohclass, "unreffing mohclass failed to register"); + return -1; + } } else { /* We don't register RT moh class, so let's init it manualy */ -- GitLab